[Pkg-virtualbox-commits] [virtualbox] 01/04: Imported Upstream version 5.1.20-dfsg

Gianfranco Costamagna locutusofborg at moszumanska.debian.org
Wed Apr 19 06:30:01 UTC 2017


This is an automated email from the git hooks/post-receive script.

locutusofborg pushed a commit to branch master
in repository virtualbox.

commit 9d24cdba0354a8df44fbf0bd200be54dbb53f2bb
Author: Gianfranco Costamagna <costamagnagianfranco at yahoo.it>
Date:   Tue Apr 18 23:30:52 2017 +0200

    Imported Upstream version 5.1.20-dfsg
---
 Config.kmk                                         |  111 +-
 doc/manual/en_US/user_BasicConcepts.xml            |    6 +-
 doc/manual/user_ChangeLogImpl.xml                  |   51 +
 include/VBox/err.h                                 |    9 +
 include/VBox/ostypes.h                             |    1 +
 include/VBox/vmm/pdmdev.h                          |    2 +
 include/iprt/avl.h                                 |    2 +-
 include/iprt/formats/pecoff.h                      |   74 +
 include/iprt/ldr.h                                 |    5 +
 include/iprt/mangling.h                            |    1 +
 include/iprt/string.h                              |   20 +
 src/VBox/Additions/common/VBoxGuest/Makefile.kmk   |    6 +-
 .../Additions/common/VBoxGuest/freebsd/Makefile    |    1 +
 .../common/VBoxGuest/freebsd/files_vboxguest       |    1 +
 src/VBox/Additions/common/VBoxGuest/linux/Makefile |   17 +-
 .../common/VBoxGuest/linux/files_vboxguest         |    1 +
 .../VBoxService/VBoxServiceControlProcess.cpp      |    2 +-
 src/VBox/Additions/freebsd/Makefile                |    4 +-
 src/VBox/Additions/linux/Makefile                  |    6 +-
 src/VBox/Additions/linux/Makefile.kmk              |   31 +
 src/VBox/Additions/linux/drm/Makefile.kmk          |   38 -
 src/VBox/Additions/linux/drm/Makefile.module.kms   |    2 +-
 src/VBox/Additions/linux/drm/files_vboxvideo_drv   |    1 +
 src/VBox/Additions/linux/drm/vbox_drv.c            |   13 +-
 src/VBox/Additions/linux/drm/vbox_drv.h            |   17 +
 src/VBox/Additions/linux/drm/vbox_prime.c          |   89 +
 src/VBox/Additions/linux/installer/install.sh.in   |   51 +-
 src/VBox/Additions/linux/installer/vboxadd.sh      |  195 +-
 .../Additions/linux/sharedfolders/Makefile.kmk     |   40 -
 src/VBox/Devices/Audio/DevIchAc97.cpp              |   23 +-
 src/VBox/Devices/Bus/MsiCommon.cpp                 |   55 +-
 src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd      |  Bin 2097152 -> 2097152 bytes
 src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd      |  Bin 2097152 -> 2097152 bytes
 .../Graphics/BIOS/VBoxVgaBiosAlternative286.asm    |    6 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum |    2 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative386.asm    |    6 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum |    2 +-
 .../Graphics/BIOS/VBoxVgaBiosAlternative8086.asm   |    6 +-
 .../BIOS/VBoxVgaBiosAlternative8086.md5sum         |    2 +-
 src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp        |   49 +-
 src/VBox/Devices/Network/DevVirtioNet.cpp          |   21 +-
 src/VBox/Devices/Network/slirp/ip_input.c          |   78 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative286.asm     | 3729 +++++++++----------
 .../Devices/PC/BIOS/VBoxBiosAlternative286.md5sum  |    2 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative386.asm     | 3581 +++++++++----------
 .../Devices/PC/BIOS/VBoxBiosAlternative386.md5sum  |    2 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative8086.asm    | 3733 ++++++++++----------
 .../Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum |    2 +-
 src/VBox/Devices/PC/BIOS/eltorito.c                |    2 +-
 src/VBox/Devices/PC/DevACPI.cpp                    |   15 +-
 src/VBox/Devices/VMMDev/VMMDev.cpp                 |    1 +
 src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp |    4 +-
 .../Frontends/VBoxBugReport/VBoxBugReportWin.cpp   |    5 +-
 src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp   |   45 +-
 src/VBox/Frontends/VirtualBox/VirtualBox2.qrc      |    1 +
 .../Frontends/VirtualBox/VirtualBox2_hidpi.qrc     |    1 +
 .../images/hidpi/os_win2k16_64_hidpi.png           |  Bin 0 -> 7712 bytes
 .../Frontends/VirtualBox/images/os_win2k16_64.png  |  Bin 0 -> 2791 bytes
 .../VirtualBox/src/globals/UIIconPool.cpp          |    1 +
 .../VirtualBox/src/globals/VBoxGlobal.cpp          |    1 +
 .../Frontends/VirtualBox/src/globals/VBoxGlobal.h  |    8 +
 .../VirtualBox/src/net/UIUpdateManager.cpp         |    7 +
 .../VirtualBox/src/platform/x11/VBoxX11Helper.cpp  |    3 +
 .../VirtualBox/src/platform/x11/VBoxX11Helper.h    |    1 +
 .../VirtualBox/src/runtime/UIKeyboardHandler.cpp   |   27 +-
 .../VirtualBox/src/runtime/UIKeyboardHandler.h     |   11 +-
 .../VirtualBox/src/runtime/UIMachineView.cpp       |   35 +-
 .../VirtualBox/src/runtime/UIMachineView.h         |    4 +-
 .../VirtualBox/src/runtime/UIMouseHandler.cpp      |   17 +
 .../Frontends/VirtualBox/src/runtime/UISession.cpp |    6 +-
 .../fullscreen/UIMachineWindowFullscreen.cpp       |   45 +-
 .../runtime/fullscreen/UIMachineWindowFullscreen.h |   22 +-
 .../runtime/seamless/UIMachineWindowSeamless.cpp   |   56 +-
 .../src/runtime/seamless/UIMachineWindowSeamless.h |   22 +-
 .../VirtualBox/src/selector/UISelectorWindow.cpp   |    5 +
 .../src/widgets/UIApplianceEditorWidget.cpp        |    4 +-
 .../VirtualBox/src/widgets/UIMiniToolBar.cpp       |  303 +-
 .../VirtualBox/src/widgets/UIMiniToolBar.h         |   17 +-
 .../src/wizards/newvm/UIWizardNewVMPageBasic1.cpp  |    1 +
 src/VBox/HostDrivers/Makefile.kmk                  |   34 +
 src/VBox/HostDrivers/Support/Makefile.kmk          |   49 +-
 src/VBox/HostDrivers/Support/SUPDrv.cpp            |    7 +-
 src/VBox/HostDrivers/Support/SUPLibInternal.h      |    8 +-
 src/VBox/HostDrivers/Support/SUPLibLdr.cpp         |   12 +-
 src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp |  253 +-
 .../HostDrivers/Support/SUPR3HardenedVerify.cpp    |  246 +-
 .../HostDrivers/Support/darwin/SUPLib-darwin.cpp   |    8 +-
 src/VBox/HostDrivers/Support/freebsd/Makefile      |    1 +
 .../HostDrivers/Support/freebsd/SUPLib-freebsd.cpp |    4 +-
 src/VBox/HostDrivers/Support/freebsd/files_vboxdrv |    1 +
 src/VBox/HostDrivers/Support/linux/Makefile        |    1 +
 .../HostDrivers/Support/linux/SUPLib-linux.cpp     |    8 +-
 src/VBox/HostDrivers/Support/linux/files_vboxdrv   |    2 +
 src/VBox/HostDrivers/Support/os2/SUPLib-os2.cpp    |    4 +-
 .../HostDrivers/Support/solaris/SUPLib-solaris.cpp |    8 +-
 .../Support/win/SUPHardenedVerify-win.h            |    3 +
 .../Support/win/SUPHardenedVerifyImage-win.cpp     |   49 +
 .../Support/win/SUPHardenedVerifyProcess-win.cpp   |    6 +-
 src/VBox/HostDrivers/Support/win/SUPLib-win.cpp    |    5 +-
 .../Support/win/SUPR3HardenedMain-win.cpp          |  442 ++-
 src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk       |   10 +-
 src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk       |   10 +-
 src/VBox/HostDrivers/VBoxPci/Makefile.kmk          |    7 -
 src/VBox/HostDrivers/freebsd/Makefile              |    6 +-
 src/VBox/HostDrivers/linux/Makefile                |    8 +-
 src/VBox/HostServices/SharedFolders/vbsf.cpp       |    3 +
 src/VBox/HostServices/SharedFolders/vbsfpath.cpp   |    2 +-
 src/VBox/Installer/linux/Makefile.include.footer   |    1 +
 src/VBox/Installer/linux/Makefile.include.header   |   19 +-
 src/VBox/Installer/linux/distributions_deb         |    2 +
 .../win/InstallHelper/VBoxInstallHelper.cpp        |   49 +-
 src/VBox/Installer/win/VBoxMergeNetAdp6Seq.wxi     |   15 +-
 src/VBox/Installer/win/VBoxMergeNetAdpSeq.wxi      |   15 +-
 src/VBox/Installer/win/VBoxMergeUSB.wxi            |    4 +-
 src/VBox/Main/include/DisplayImpl.h                |   11 +
 src/VBox/Main/src-all/ExtPackManagerImpl.cpp       |   23 +-
 src/VBox/Main/src-all/Global.cpp                   |   11 +-
 src/VBox/Main/src-client/ConsoleImpl2.cpp          |    3 +-
 src/VBox/Main/src-client/DisplayImpl.cpp           |  397 +++
 src/VBox/Main/src-client/DisplayImplLegacy.cpp     |    9 +
 src/VBox/Main/src-server/usb.ids                   |  997 +++++-
 src/VBox/Main/src-server/win/svcmain.cpp           |   27 +-
 src/VBox/Runtime/Makefile.kmk                      |   13 +-
 src/VBox/Runtime/common/crypto/x509-core.cpp       |   29 +-
 src/VBox/Runtime/common/ldr/ldrEx.cpp              |    3 +
 src/VBox/Runtime/common/ldr/ldrPE.cpp              |  150 +-
 src/VBox/Runtime/common/ldr/ldrkStuff.cpp          |   14 +
 .../{table/table.cpp => string/RTStrICmpAscii.cpp} |   58 +-
 src/VBox/Runtime/common/string/strformatrt.cpp     |   14 +
 src/VBox/Runtime/common/table/avl_Base.cpp.h       |    2 +-
 src/VBox/Runtime/common/table/avl_Destroy.cpp.h    |    2 +-
 src/VBox/Runtime/common/table/avl_DoWithAll.cpp.h  |    2 +-
 src/VBox/Runtime/common/table/avl_Get.cpp.h        |    2 +-
 src/VBox/Runtime/common/table/avl_GetBestFit.cpp.h |    2 +-
 src/VBox/Runtime/common/table/avl_Range.cpp.h      |    2 +-
 .../Runtime/common/table/avl_RemoveBestFit.cpp.h   |    2 +-
 src/VBox/Runtime/common/table/avl_RemoveNode.cpp.h |    2 +-
 src/VBox/Runtime/common/table/avlgcphys.cpp        |    2 +-
 src/VBox/Runtime/common/table/avlgcptr.cpp         |    2 +-
 src/VBox/Runtime/common/table/avlhcphys.cpp        |    2 +-
 src/VBox/Runtime/common/table/avllu32.cpp          |    2 +-
 src/VBox/Runtime/common/table/avlogcphys.cpp       |    2 +-
 src/VBox/Runtime/common/table/avlogcptr.cpp        |    2 +-
 src/VBox/Runtime/common/table/avlohcphys.cpp       |    2 +-
 src/VBox/Runtime/common/table/avloioport.cpp       |    2 +-
 src/VBox/Runtime/common/table/avlou32.cpp          |    2 +-
 src/VBox/Runtime/common/table/avlpv.cpp            |    2 +-
 src/VBox/Runtime/common/table/avlrfoff.cpp         |    2 +-
 src/VBox/Runtime/common/table/avlrgcptr.cpp        |    2 +-
 src/VBox/Runtime/common/table/avlrogcphys.cpp      |    2 +-
 src/VBox/Runtime/common/table/avlrogcptr.cpp       |    2 +-
 src/VBox/Runtime/common/table/avlroioport.cpp      |    2 +-
 src/VBox/Runtime/common/table/avlroogcptr.cpp      |    2 +-
 src/VBox/Runtime/common/table/avlrpv.cpp           |    2 +-
 src/VBox/Runtime/common/table/avlru64.cpp          |    2 +-
 src/VBox/Runtime/common/table/avlruintptr.cpp      |    2 +-
 src/VBox/Runtime/common/table/avlu32.cpp           |    2 +-
 src/VBox/Runtime/common/table/avluintptr.cpp       |    2 +-
 src/VBox/Runtime/common/table/avlul.cpp            |    2 +-
 src/VBox/Runtime/common/table/table.cpp            |    8 +-
 .../rtStrFormatKernelAddress-generic.cpp}          |   54 +-
 src/VBox/Runtime/include/internal/string.h         |   14 +
 .../linux/rtStrFormatKernelAddress-r0drv-linux.c}  |   36 +-
 src/VBox/Runtime/r3/win/init-win.cpp               |    2 +-
 src/VBox/Runtime/testcase/tstLdr-4.cpp             |   17 +-
 src/VBox/Runtime/testcase/tstUtf8.cpp              |   19 +
 src/VBox/Runtime/win/RTErrConvertFromWin32.cpp     |    5 +
 src/VBox/Storage/DMG.cpp                           |    5 +-
 src/VBox/VMM/VMMAll/IEMAll.cpp                     |    2 +
 src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h       |   42 +
 src/VBox/VMM/VMMR0/GMMR0.cpp                       |   10 +-
 src/VBox/VMM/VMMR0/GVMMR0.cpp                      |    4 +-
 src/VBox/VMM/VMMR3/PDMUsb.cpp                      |    2 +-
 src/VBox/VMM/VMMR3/VMEmt.cpp                       |   26 +-
 src/VBox/VMM/VMMR3/VMMSwitcher.cpp                 |    4 +-
 src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp                 |    2 +-
 src/VBox/VMM/testcase/tstIEMCheckMc.cpp            |    1 +
 177 files changed, 9543 insertions(+), 6597 deletions(-)

diff --git a/Config.kmk b/Config.kmk
index 170967c..3fcf0de 100644
--- a/Config.kmk
+++ b/Config.kmk
@@ -208,7 +208,7 @@ VBOX_VERSION_MINOR = 1
 # This is the current build number. It should be increased every time we publish a
 # new build. The define is available in every source file. Only even build numbers
 # will be published, odd numbers are set during development.
-VBOX_VERSION_BUILD = 18
+VBOX_VERSION_BUILD = 20
 # The raw version string. This *must not* contain any other information/fields than
 # major, minor and build revision (as it is now) -- also will be used for host/guest version
 # comparison.
@@ -308,8 +308,8 @@ endif
 # VBOX_WITHOUT_ADDITIONS overrides it.
 VBOX_WITH_ADDITIONS = 1
 # Build the optional ring-0 part of the additions for syntax checking.
-# (Except when cross-building on linux since we're using /usr/src/...)
-ifn1of ($(KBUILD_TARGET).$(KBUILD_HOST_ARCH).$(KBUILD_TARGET_ARCH), linux.x86.amd64 linux.amd64.x86)
+# On linux we build this as a test case instead.
+ifneq ($(KBUILD_TARGET), linux)
  VBOX_WITH_ADDITION_DRIVERS = 1
 endif
 # Build X11 additions. Can be disabled separately.
@@ -560,7 +560,10 @@ endif
 # Build the installer.
 VBOX_WITH_INSTALLER = 1
 # The kernel driver/module and related runtime libraries.
-VBOX_WITH_VBOXDRV = 1
+# On Linux we build this as a test case instead.
+ifneq ($(KBUILD_TARGET), linux)
+ VBOX_WITH_VBOXDRV = 1
+endif
 # The main api.
 VBOX_WITH_MAIN = 1
 # Enables proxy stub for MS COM (speeds up setting IPC for objects).
@@ -2902,18 +2905,6 @@ ifdef VBOX_WITH_NO_GCC_WARNING_POLICY
 endif
 
 #
-# We compile the kernel driver/module and related runtime libraries with C++.
-# This does not work for g++-4.8 and recent Linux kernels.
-#
-ifeq ($(BUILD_TARGET),linux)
- ifeq ($(int-div $(VBOX_GCC_VERSION_CXX),100), 408)
-  VBOX_WITH_VBOXDRV =
-  VBOX_WITH_ADDITION_DRIVERS =
- endif
-endif
-
-
-#
 # Misc stuff that should be after including DynamicConfig.kmk.
 #
 
@@ -3711,68 +3702,6 @@ SDK_VBOX_NTDLL_LIBS.x86   ?= $(PATH_STAGE_LIB)/RuntimeR3NtDll-x86.lib
 SDK_VBOX_NTDLL_LIBS.amd64 ?= $(PATH_STAGE_LIB)/RuntimeR3NtDll-amd64.lib
 
 #
-# The linux kernel headers(/sources).
-#
-if1of ($(KBUILD_TARGET), linux)
- ifeq ($(origin VBOX_LINUX_SRC),undefined)
-  ifneq ($(wildcard /lib/modules/$(shell uname -r)/build/include/linux/autoconf.h  /lib/modules/$(shell uname -r)/build/include/generated/autoconf.h),)
-   export VBOX_LINUX_SRC := /lib/modules/$(shell uname -r)/build
-  else
-   export VBOX_LINUX_SRC := /usr/src/linux
-  endif
- endif
- ifneq ($(VBOX_LINUX_SRC),)
-  ifeq ($(origin VBOX_LINUX_INCS),undefined)
-   export VBOX_LINUX_INCS := $(VBOX_LINUX_SRC)/include
-   # XXX hack alert! Support split Linux kernels (make O=<build directory>). kernelpath points to
-   #                 the obj directory while VBOX_LINUX_SRC points to the virgin source directory.
-   # XXX put this crap elsewhere
-   kernelpath := $(shell $(SED_EXT) -ne 's+^KERNELSRC.*= *\(.*\)+\1+p' $(VBOX_LINUX_SRC)/Makefile)
-   ifeq ($(kernelpath),)
-    # Linux >= 2.6.25
-    kernelpath := $(shell $(SED_EXT) -ne 's+^MAKEARGS *:= *-C *\(\S*\).*+\1+p' $(VBOX_LINUX_SRC)/Makefile)
-   endif
-   ifneq ($(kernelpath),)
-    # absolute path?
-    ifneq ($(patsubst /%,,$(kernelpath)),)
-     # no, relative path
-     kernelpath := $(realpath $(VBOX_LINUX_SRC)/$(kernelpath))
-    endif
-   endif
-   ifneq ($(kernelpath),)
-    VBOX_LINUX_INCS += $(VBOX_LINUX_SRC)/include2 $(kernelpath)/include
-   else
-    kernelpath := $(VBOX_LINUX_SRC)
-   endif
-   #
-   VBOX_LINUX_INCS  += $(kernelpath)/include/asm-i386/mach-default \
-                       $(kernelpath)/include/asm-x86/mach-default \
-                       $(kernelpath)/include/drm \
-                       $(kernelpath)/arch/x86/include \
-                       $(kernelpath)/arch/x86/include/asm/mach-default \
-                       $(kernelpath)/arch/x86/include/uapi \
-                       $(VBOX_LINUX_SRC)/arch/x86/include/generated \
-                       $(VBOX_LINUX_SRC)/arch/x86/include/generated/uapi \
-                       $(kernelpath)/include/uapi \
-                       $(VBOX_LINUX_SRC)/include/generated/uapi \
-                       $(kernelpath)/include
-  endif
- endif
- # Since Linux 2.6.15, <linux/autoconf.h> is included like this. It cannot hurt to do the
- # same for older Linux kernels
- ifneq ($(wildcard $(kernelpath)/include/linux/kconfig.h),)
-  # Linux >= 3.1
-  export VBOX_LINUX_INCLUDE := -include $(kernelpath)/include/linux/kconfig.h
- else ifneq ($(wildcard $(VBOX_LINUX_SRC)/include/generated/autoconf.h),)
-  # Linux >= 2.6.33
-  export VBOX_LINUX_INCLUDE := -include $(VBOX_LINUX_SRC)/include/generated/autoconf.h
- else ifneq ($(wildcard $(VBOX_LINUX_SRC)/include/linux/autoconf.h),)
-  # Linux < 2.6.33
-  export VBOX_LINUX_INCLUDE := -include $(VBOX_LINUX_SRC)/include/linux/autoconf.h
- endif
-endif
-
-#
 # Determine Solaris version.
 #
 ifeq ($(KBUILD_TARGET),solaris)
@@ -4150,28 +4079,7 @@ ifeq ($(KBUILD_TARGET),win)
 endif
 
 ifeq ($(KBUILD_TARGET),linux)
-TEMPLATE_VBOXR0DRV_TOOL                = $(VBOX_GCC_TOOL)
-TEMPLATE_VBOXR0DRV_INSTTYPE.linux      = none
-TEMPLATE_VBOXR0DRV_DEFS               += __KERNEL__ MODULE
-TEMPLATE_VBOXR0DRV_INCS                = $(VBOX_LINUX_INCS)
-TEMPLATE_VBOXR0DRV_CFLAGS              = -fno-pie -nostdinc -iwithprefix include $(VBOX_LINUX_INCLUDE) \
-	$(VBOX_GCC_WARN) -Wstrict-prototypes $(VBOX_GCC_Wno-pointer-sign) -Wno-sign-compare $(VBOX_GCC_fdiagnostics-show-option) \
-	$(VBOX_GCC_fno-stack-protector) $(VBOX_GCC_R0_OPT) $(VBOX_GCC_R0_FP) \
-	-fno-strict-aliasing -fno-common -Werror-implicit-function-declaration
-TEMPLATE_VBOXR0DRV_CFLAGS.x86          = -mpreferred-stack-boundary=2 -msoft-float
-TEMPLATE_VBOXR0DRV_CFLAGS.amd64        = -m64 -mno-red-zone -mcmodel=kernel -mno-sse -mno-mmx -mno-sse2 -mno-3dnow \
-	-fno-reorder-blocks -ffreestanding -fno-asynchronous-unwind-tables -funit-at-a-time -Wno-sign-compare
-TEMPLATE_VBOXR0DRV_CXXFLAGS            = $(filter-out -Wstrict-prototypes -Wno-pointer-sign -ffreestanding -Werror-implicit-function-declaration,$(TEMPLATE_VBOXR0DRV_CFLAGS) $(TEMPLATE_VBOXR0DRV_CFLAGS.$(KBUILD_TARGET_ARCH))) -fno-exceptions -fno-rtti
-  ifndef VBOX_LINUX_VERSION_2_4
-# 2.6
-TEMPLATE_VBOXR0DRV_SYSSUFF             = .ko
-TEMPLATE_VBOXR0DRV_LDFLAGS.x86         = -m elf_i386 -r
-TEMPLATE_VBOXR0DRV_LDFLAGS.amd64       = -m elf_x86_64 -r
-  else
-# 2.4
-TEMPLATE_VBOXR0DRV_SYSSUFF             = .o
-TEMPLATE_VBOXR0DRV_LDFLAGS             = -r -s
-  endif
+TEMPLATE_VBOXR0DRV_TOOL                = $(NO_SUCH_VARIABLE)
 endif
 
 ifeq ($(KBUILD_TARGET),os2)
@@ -6946,7 +6854,7 @@ endif
 SVN                    ?= svn$(HOSTSUFF_EXE)
 VBOX_SVN_REV_KMK        = $(PATH_OUT)/revision.kmk
 ifndef VBOX_SVN_REV
- VBOX_SVN_REV_FALLBACK := $(patsubst %:,,  $Rev: 114002 $  )
+ VBOX_SVN_REV_FALLBACK := $(patsubst %:,,  $Rev: 114628 $  )
  VBOX_SVN_DEP          := $(firstword $(wildcard $(PATH_ROOT)/.svn/wc.db $(abspath $(PATH_ROOT)/../.svn/wc.db) $(abspath $(PATH_ROOT)/../../.svn/wc.db) $(PATH_ROOT)/.svn/entries))
  ifeq ($(which $(SVN)),)
   VBOX_SVN_DEP         :=
@@ -7133,3 +7041,4 @@ st stat status:
 quick:
 	$(MAKE) VBOX_QUICK=1
 
+
diff --git a/doc/manual/en_US/user_BasicConcepts.xml b/doc/manual/en_US/user_BasicConcepts.xml
index 0c49aa9..5b8ac66 100644
--- a/doc/manual/en_US/user_BasicConcepts.xml
+++ b/doc/manual/en_US/user_BasicConcepts.xml
@@ -1434,9 +1434,9 @@
     of EFI applications, without booting any OS.</para>
 
     <para>Note that the VirtualBox EFI support is experimental and will be
-    enhanced as EFI matures and becomes more widespread. While Mac OS X and
-    Linux guests are known to work fine, Windows guests are currently unable
-    to boot with the VirtualBox EFI implementation.</para>
+      enhanced as EFI matures and becomes more widespread. Mac OS X, Linux
+      and newer Windows guests are known to work fine. Windows 7 guests are
+      unable to boot with the VirtualBox EFI implementation.</para>
 
     <sect2 id="efividmode">
       <title>Video modes in EFI</title>
diff --git a/doc/manual/user_ChangeLogImpl.xml b/doc/manual/user_ChangeLogImpl.xml
index 1bd377a..10628bd 100644
--- a/doc/manual/user_ChangeLogImpl.xml
+++ b/doc/manual/user_ChangeLogImpl.xml
@@ -3,6 +3,57 @@
 <chapter> <!-- HACK ALERT! Seems we must have a single top level element for xi:include to work.
                            So, we use chapter and xpointer="xpointer(/chapter/)" with xi:include. -->
   <sect1>
+    <title>Version 5.1.20 (2017-04-18)</title>
+
+    <para>This is a maintenance release. The following items were fixed and/or
+      added:</para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>GUI: don't check if the Extension Pack is up-to-date if the user
+          is about to install a new Extension Pack (bug #16317)</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: fixed a possible crash when switching a multi-monitor VM
+          into full-screen or seamless mode</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: fixed non-literal shortcuts if the keyboard is not captured
+          (5.1.10 regression; Windows hosts only)</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: several mini-toolbar fixes in full-screen / seamless mode
+          (X11 hosts only)</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: don't crash on restoring defaults in the
+          <emphasis>appliance import</emphasis> dialog</para>
+      </listitem>
+
+      <listitem>
+        <para>Windows Additions: another fix for automatic logins for Windows
+          Vista and newer (bug #15904)</para>
+      </listitem>
+
+      <listitem>
+        <para>ICH9: fix for Windows guests with a huge amount (>64G) of guest
+          memory</para>
+      </listitem>
+
+      <listitem>
+        <para>BIOS: fixed El Torito hard disk emulation geometry calculation
+          (thanks Dwight Engen)</para>
+      </listitem>
+
+    </itemizedlist>
+  </sect1>
+
+  <sect1>
     <title>Version 5.1.18 (2017-08-15)</title>
 
     <para>This is a maintenance release. The following items were fixed and/or
diff --git a/include/VBox/err.h b/include/VBox/err.h
index 03b24f2..618c944 100644
--- a/include/VBox/err.h
+++ b/include/VBox/err.h
@@ -1918,6 +1918,13 @@
 #define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_4          (-3774)
 /** Unable to establish trusted of VM process (5). */
 #define VERR_SUPLIB_NT_PROCESS_UNTRUSTED_5          (-3775)
+/** Unable to make text memory writeable (hardening). */
+#define VERR_SUPLIB_TEXT_NOT_WRITEABLE              (-3776)
+/** Unable to seal text memory again to protect against write access (hardening). */
+#define VERR_SUPLIB_TEXT_NOT_SEALED                 (-3777)
+/** Unexpected instruction encountered for which there is no patch strategy
+ * implemented (hardening). */
+#define VERR_SUPLIB_UNEXPECTED_INSTRUCTION          (-3778)
 /** @} */
 
 
@@ -2650,6 +2657,8 @@
 #define VERR_SUP_VP_FILE_MODE_ERROR                 (-5674)
 /** Error creating an event semaphore for used with asynchronous reads. */
 #define VERR_SUP_VP_CREATE_READ_EVT_SEM_FAILED      (-5675)
+/** Undesirable module. */
+#define VERR_SUP_VP_UNDESIRABLE_MODULE              (-5676)
 
 /** @} */
 
diff --git a/include/VBox/ostypes.h b/include/VBox/ostypes.h
index 2508b88..f804043 100644
--- a/include/VBox/ostypes.h
+++ b/include/VBox/ostypes.h
@@ -71,6 +71,7 @@ typedef enum VBOXOSTYPE
     VBOXOSTYPE_Win81_x64        = 0x3A100,
     VBOXOSTYPE_Win10            = 0x3B000,
     VBOXOSTYPE_Win10_x64        = 0x3B100,
+    VBOXOSTYPE_Win2k16_x64      = 0x3C100,
     VBOXOSTYPE_OS2              = 0x40000,
     VBOXOSTYPE_OS2Warp3         = 0x41000,
     VBOXOSTYPE_OS2Warp4         = 0x42000,
diff --git a/include/VBox/vmm/pdmdev.h b/include/VBox/vmm/pdmdev.h
index d3a0df5..7c36d32 100644
--- a/include/VBox/vmm/pdmdev.h
+++ b/include/VBox/vmm/pdmdev.h
@@ -510,6 +510,8 @@ typedef struct PDMMSIREG
     uint8_t    iMsiNextOffset;
     /** If we support 64-bit MSI addressing */
     bool       fMsi64bit;
+    /** If we do not support per-vector masking */
+    bool       fMsiNoMasking;
 
     /** Number of MSI-X interrupt vectors, 0 if MSI-X not supported */
     uint16_t   cMsixVectors;
diff --git a/include/iprt/avl.h b/include/iprt/avl.h
index 65b9293..6dd46b6 100644
--- a/include/iprt/avl.h
+++ b/include/iprt/avl.h
@@ -3,7 +3,7 @@
  */
 
 /*
- * Copyright (C) 1999-2012 knut st. osmundsen <bird-src-spam at anduin.net>
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/include/iprt/formats/pecoff.h b/include/iprt/formats/pecoff.h
index e92ce64..cb25ac8 100644
--- a/include/iprt/formats/pecoff.h
+++ b/include/iprt/formats/pecoff.h
@@ -544,6 +544,80 @@ typedef IMAGE_THUNK_DATA32 const *PCIMAGE_THUNK_DATA32;
 #define IMAGE_SNAP_BY_ORDINAL64(ord)        (!!((ord) & IMAGE_ORDINAL_FLAG64))
 /** @} */
 
+/** @name PE Resource directory
+ * @{ */
+typedef struct _IMAGE_RESOURCE_DIRECTORY
+{
+    uint32_t    Characteristics;
+    uint32_t    TimeDateStamp;
+    uint16_t    MajorVersion;
+    uint16_t    MinorVersion;
+    uint16_t    NumberOfNamedEntries;
+    uint16_t    NumberOfIdEntries;
+} IMAGE_RESOURCE_DIRECTORY;
+typedef IMAGE_RESOURCE_DIRECTORY *PIMAGE_RESOURCE_DIRECTORY;
+typedef IMAGE_RESOURCE_DIRECTORY const *PCIMAGE_RESOURCE_DIRECTORY;
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY
+{
+    union
+    {
+        struct
+        {
+            uint32_t NameOffset        : 31;
+            uint32_t NameIsString      : 1; /**< IMAGE_RESOURCE_NAME_IS_STRING */
+        } s;
+        uint32_t Name;
+        uint16_t Id;
+    } u;
+    union
+    {
+        struct
+        {
+            uint32_t OffsetToDirectory : 31;
+            uint32_t DataIsDirectory   : 1; /**< IMAGE_RESOURCE_DATA_IS_DIRECTORY*/
+        } s2;
+        uint32_t OffsetToData;
+    } u2;
+} IMAGE_RESOURCE_DIRECTORY_ENTRY;
+typedef IMAGE_RESOURCE_DIRECTORY_ENTRY *PIMAGE_RESOURCE_DIRECTORY_ENTRY;
+typedef IMAGE_RESOURCE_DIRECTORY_ENTRY const *PCIMAGE_RESOURCE_DIRECTORY_ENTRY;
+
+#define IMAGE_RESOURCE_NAME_IS_STRING       UINT32_C(0x80000000)
+#define IMAGE_RESOURCE_DATA_IS_DIRECTORY    UINT32_C(0x80000000)
+
+typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING
+{
+    uint16_t    Length;
+    char        NameString[1];
+} IMAGE_RESOURCE_DIRECTORY_STRING;
+typedef IMAGE_RESOURCE_DIRECTORY_STRING *PIMAGE_RESOURCE_DIRECTORY_STRING;
+typedef IMAGE_RESOURCE_DIRECTORY_STRING const *PCIMAGE_RESOURCE_DIRECTORY_STRING;
+
+
+typedef struct _IMAGE_RESOURCE_DIR_STRING_U
+{
+    uint16_t    Length;
+    RTUTF16     NameString[1];
+} IMAGE_RESOURCE_DIR_STRING_U;
+typedef IMAGE_RESOURCE_DIR_STRING_U *PIMAGE_RESOURCE_DIR_STRING_U;
+typedef IMAGE_RESOURCE_DIR_STRING_U const *PCIMAGE_RESOURCE_DIR_STRING_U;
+
+
+typedef struct _IMAGE_RESOURCE_DATA_ENTRY
+{
+    uint32_t    OffsetToData;
+    uint32_t    Size;
+    uint32_t    CodePage;
+    uint32_t    Reserved;
+} IMAGE_RESOURCE_DATA_ENTRY;
+typedef IMAGE_RESOURCE_DATA_ENTRY *PIMAGE_RESOURCE_DATA_ENTRY;
+typedef IMAGE_RESOURCE_DATA_ENTRY const *PCIMAGE_RESOURCE_DATA_ENTRY;
+
+/** @} */
+
+
+
 /** @name Image load config directories
  * @{ */
 
diff --git a/include/iprt/ldr.h b/include/iprt/ldr.h
index a9d9349..79eb464 100644
--- a/include/iprt/ldr.h
+++ b/include/iprt/ldr.h
@@ -1028,6 +1028,11 @@ typedef enum RTLDRPROP
     /** The file offset of the main executable header.
      * This is mainly for PE, NE and LX headers, but also Mach-O FAT. */
     RTLDRPROP_FILE_OFF_HEADER,
+    /** The internal module name.
+     * This is the SONAME for ELF, export table name for PE, and zero'th resident
+     * name table entry for LX.
+     * Returns zero terminated string. */
+    RTLDRPROP_INTERNAL_NAME,
 
     /** End of valid properties.  */
     RTLDRPROP_END,
diff --git a/include/iprt/mangling.h b/include/iprt/mangling.h
index 95c9c96..aea9632 100644
--- a/include/iprt/mangling.h
+++ b/include/iprt/mangling.h
@@ -1838,6 +1838,7 @@
 # define RTStrHash1ExNV                                 RT_MANGLER(RTStrHash1ExNV)
 # define RTStrHash1N                                    RT_MANGLER(RTStrHash1N)
 # define RTStrICmp                                      RT_MANGLER(RTStrICmp)
+# define RTStrICmpAscii                                 RT_MANGLER(RTStrICmpAscii)
 # define RTStrIStartsWith                               RT_MANGLER(RTStrIStartsWith)
 # define RTStrIStr                                      RT_MANGLER(RTStrIStr)
 # define RTStrIsCaseFoldable                            RT_MANGLER(RTStrIsCaseFoldable)
diff --git a/include/iprt/string.h b/include/iprt/string.h
index 085274a..7f8f969 100644
--- a/include/iprt/string.h
+++ b/include/iprt/string.h
@@ -1434,6 +1434,7 @@ typedef FNRTSTROUTPUT *PFNRTSTROUTPUT;
 #define RTSTR_F_WIDTH           0x0080
 #define RTSTR_F_PRECISION       0x0100
 #define RTSTR_F_THOUSAND_SEP    0x0200
+#define RTSTR_F_OBFUSCATE_PTR   0x0400
 
 #define RTSTR_F_BIT_MASK        0xf800
 #define RTSTR_F_8BIT            0x0800
@@ -2141,6 +2142,25 @@ RTDECL(int) RTStrICmp(const char *psz1, const char *psz2);
 RTDECL(int) RTStrNICmp(const char *psz1, const char *psz2, size_t cchMax);
 
 /**
+ * Performs a case insensitive string compare between a UTF-8 string and a 7-bit
+ * ASCII string.
+ *
+ * This is potentially faster than RTStrICmp and drags in less dependencies.  It
+ * is really handy for hardcoded inputs.
+ *
+ * If the string encoding is invalid the function will assert (strict builds)
+ * and use RTStrCmp for the remainder of the string.
+ *
+ * @returns < 0 if the first string less than the second string.
+ * @returns 0 if the first string identical to the second string.
+ * @returns > 0 if the first string greater than the second string.
+ * @param   psz1        First UTF-8 string. Null is allowed.
+ * @param   psz2        Second string, 7-bit ASCII. Null is allowed.
+ * @sa      RTUtf16ICmpAscii
+ */
+RTDECL(int) RTStrICmpAscii(const char *psz1, const char *psz2);
+
+/**
  * Checks whether @a pszString starts with @a pszStart.
  *
  * @returns true / false.
diff --git a/src/VBox/Additions/common/VBoxGuest/Makefile.kmk b/src/VBox/Additions/common/VBoxGuest/Makefile.kmk
index 6bfb935..b71151a 100644
--- a/src/VBox/Additions/common/VBoxGuest/Makefile.kmk
+++ b/src/VBox/Additions/common/VBoxGuest/Makefile.kmk
@@ -19,7 +19,7 @@ SUB_DEPTH = ../../../../..
 include $(KBUILD_PATH)/subheader.kmk
 
 
-if1of ($(KBUILD_TARGET), darwin freebsd haiku $(if $(defined VBOX_WITH_ADDITION_DRIVERS),linux,) netbsd os2 solaris win)
+if1of ($(KBUILD_TARGET), darwin freebsd haiku netbsd os2 solaris win)
  #
  # VBoxGuest - The Guest Additions Driver.
  #
@@ -27,7 +27,6 @@ if1of ($(KBUILD_TARGET), darwin freebsd haiku $(if $(defined VBOX_WITH_ADDITION_
  VBoxGuest_TEMPLATE      = VBOXGUESTR0
  VBoxGuest_NAME.freebsd  = vboxguest
  VBoxGuest_NAME.haiku    = vboxguest
- VBoxGuest_NAME.linux    = vboxguest
  VBoxGuest_NAME.netbsd   = vboxguest
  VBoxGuest_NAME.solaris  = vboxguest
  VBoxGuest_INST.darwin   = $(INST_ADDITIONS)VBoxGuest.kext/Contents/MacOS/
@@ -36,7 +35,6 @@ if1of ($(KBUILD_TARGET), darwin freebsd haiku $(if $(defined VBOX_WITH_ADDITION_
   VBoxGuest_DEBUG_INSTTYPE.win = both
  endif
  VBoxGuest_DEFS.haiku    = VBOX_SVN_REV=$(VBOX_SVN_REV) _KERNEL_MODE=1
- VBoxGuest_DEFS.linux    = KBUILD_MODNAME=KBUILD_STR\(vboxguest\) KBUILD_BASENAME=KBUILD_STR\(vboxguest\) DEBUG_HASH=2 DEBUG_HASH2=3 EXPORT_SYMTAB
  VBoxGuest_DEFS.solaris  = VBOX_SVN_REV=$(VBOX_SVN_REV)
  VBoxGuest_DEFS.win      = VBOX_GUESTDRV_WITH_RELEASE_LOGGER
  VBoxGuest_DEFS.darwin   = VBOX_GUESTDRV_WITH_RELEASE_LOGGER
@@ -52,7 +50,6 @@ if1of ($(KBUILD_TARGET), darwin freebsd haiku $(if $(defined VBOX_WITH_ADDITION_
  VBoxGuest_DEFS.win += \
 	$(if $(VBOX_WITH_DPC_LATENCY_CHECKER),VBOX_WITH_DPC_LATENCY_CHECKER,)
  VBoxGuest_DEPS.solaris += $(VBOX_SVN_REV_KMK)
- VBoxGuest_DEPS.linux   += $(VBOX_SVN_REV_HEADER)
  VBoxGuest_DEPS.haiku   += $(VBOX_SVN_REV_HEADER)
  VBoxGuest_DEPS.freebsd += $(VBOX_SVN_REV_HEADER)
  VBoxGuest_DEPS.netbsd  += $(VBOX_SVN_REV_HEADER)
@@ -61,7 +58,6 @@ if1of ($(KBUILD_TARGET), darwin freebsd haiku $(if $(defined VBOX_WITH_ADDITION_
  VBoxGuest_INCS          = .
  VBoxGuest_INCS.freebsd  = $(VBoxGuest_0_OUTDIR) $(PATH_STAGE)/gen-sys-hdrs
  VBoxGuest_INCS.netbsd   = $(VBoxGuest_0_OUTDIR)
- VBoxGuest_INCS.linux    = ../../../Runtime/r0drv/linux
  ifeq ($(KBUILD_HOST),solaris)
   VBoxGuest_LDFLAGS.solaris         += -N misc/ctf
  else
diff --git a/src/VBox/Additions/common/VBoxGuest/freebsd/Makefile b/src/VBox/Additions/common/VBoxGuest/freebsd/Makefile
index d57e753..d965e40 100644
--- a/src/VBox/Additions/common/VBoxGuest/freebsd/Makefile
+++ b/src/VBox/Additions/common/VBoxGuest/freebsd/Makefile
@@ -122,6 +122,7 @@ SRCS += \
 	RTSemEventMultiWait-2-ex-generic.c \
 	RTSemEventMultiWaitNoResume-2-ex-generic.c \
 	RTTimerCreate-generic.c \
+	rtStrFormatKernelAddress-generic.c \
 	timer-generic.c \
 	errvars-generic.c \
 	mppresent-generic.c
diff --git a/src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest b/src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest
index d9400db..496f9e9 100755
--- a/src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest
+++ b/src/VBox/Additions/common/VBoxGuest/freebsd/files_vboxguest
@@ -158,6 +158,7 @@ FILES_VBOXGUEST_NOBIN=" \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTSemEventMultiWait-2-ex-generic.cpp=>generic/RTSemEventMultiWait-2-ex-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp=>generic/RTSemEventMultiWaitNoResume-2-ex-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTTimerCreate-generic.cpp=>generic/RTTimerCreate-generic.c \
+    ${PATH_ROOT}/src/VBox/Runtime/generic/rtStrFormatKernelAddress-generic.cpp=>generic/rtStrFormatKernelAddress-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/errvars-generic.cpp=>generic/errvars-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/timer-generic.cpp=>generic/timer-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/mppresent-generic.cpp=>generic/mppresent-generic.c \
diff --git a/src/VBox/Additions/common/VBoxGuest/linux/Makefile b/src/VBox/Additions/common/VBoxGuest/linux/Makefile
index b403647..c3f8bb0 100644
--- a/src/VBox/Additions/common/VBoxGuest/linux/Makefile
+++ b/src/VBox/Additions/common/VBoxGuest/linux/Makefile
@@ -1,4 +1,4 @@
-# $Revision: 107348 $
+# $Revision: 114568 $
 ## @file
 # VirtualBox Guest Additions Module Makefile.
 #
@@ -58,10 +58,10 @@ MOD_OBJS   = \
 	common/err/RTErrConvertFromErrno.o \
 	common/err/RTErrConvertToErrno.o \
 	common/log/log.o \
-        common/log/logellipsis.o \
-        common/log/logrel.o \
-        common/log/logrelellipsis.o \
-        common/log/logcom.o \
+	common/log/logellipsis.o \
+	common/log/logrel.o \
+	common/log/logrelellipsis.o \
+	common/log/logcom.o \
 	common/log/logformat.o \
 	common/misc/RTAssertMsg1Weak.o \
 	common/misc/RTAssertMsg2.o \
@@ -83,13 +83,14 @@ MOD_OBJS   = \
 	common/table/avlpv.o \
 	common/time/time.o \
 	generic/RTAssertShouldPanic-generic.o \
-        generic/RTLogWriteStdErr-stub-generic.o \
-        generic/RTLogWriteStdOut-stub-generic.o \
+	generic/RTLogWriteStdErr-stub-generic.o \
+	generic/RTLogWriteStdOut-stub-generic.o \
 	generic/RTMpGetCoreCount-generic.o \
 	generic/RTSemEventWait-2-ex-generic.o \
 	generic/RTSemEventWaitNoResume-2-ex-generic.o \
 	generic/RTSemEventMultiWait-2-ex-generic.o \
 	generic/RTSemEventMultiWaitNoResume-2-ex-generic.o \
+	generic/rtStrFormatKernelAddress-generic.o \
 	generic/errvars-generic.o \
 	generic/mppresent-generic.o \
 	VBox/log-vbox.o \
@@ -134,7 +135,7 @@ endif
 
 MOD_CLEAN = . linux r0drv generic r0drv/linux r0drv/generic VBox \
 		common/alloc common/err common/log common/math/gcc common/misc \
-		common/string common/time
+		common/string common/table common/time
 
 include $(obj)/Makefile.include.footer
 
diff --git a/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest b/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest
index f7011ca..bf8f502 100755
--- a/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest
+++ b/src/VBox/Additions/common/VBoxGuest/linux/files_vboxguest
@@ -147,6 +147,7 @@ FILES_VBOXGUEST_NOBIN=" \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTSemEventWaitNoResume-2-ex-generic.cpp=>generic/RTSemEventWaitNoResume-2-ex-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTSemEventMultiWait-2-ex-generic.cpp=>generic/RTSemEventMultiWait-2-ex-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp=>generic/RTSemEventMultiWaitNoResume-2-ex-generic.c \
+    ${PATH_ROOT}/src/VBox/Runtime/generic/rtStrFormatKernelAddress-generic.cpp=>generic/rtStrFormatKernelAddress-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/errvars-generic.cpp=>generic/errvars-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/mppresent-generic.cpp=>generic/mppresent-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/r0drv/alloc-r0drv.cpp=>r0drv/alloc-r0drv.c \
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp
index 4649309..1a986c7 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp
@@ -1346,7 +1346,7 @@ static int vgsvcGstCtrlProcessCreateProcess(const char *pszExec, const char * co
             {
                 if (fFlags & EXECUTEPROCESSFLAG_HIDDEN)
                     uProcFlags |= RTPROC_FLAGS_HIDDEN;
-                if (!(fFlags & EXECUTEPROCESSFLAG_PROFILE))
+                if (fFlags & EXECUTEPROCESSFLAG_PROFILE)
                     uProcFlags |= RTPROC_FLAGS_PROFILE;
                 if (fFlags & EXECUTEPROCESSFLAG_UNQUOTED_ARGS)
                     uProcFlags |= RTPROC_FLAGS_UNQUOTED_ARGS;
diff --git a/src/VBox/Additions/freebsd/Makefile b/src/VBox/Additions/freebsd/Makefile
index 3a06b30..1d78b3a 100644
--- a/src/VBox/Additions/freebsd/Makefile
+++ b/src/VBox/Additions/freebsd/Makefile
@@ -18,14 +18,14 @@
 KBUILD_VERBOSE =
 
 all:
-	@echo "*** Building 'vboxguest' module ***"
+	@echo "=== Building 'vboxguest' module ==="
 	@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxguest
 	@if [ -f vboxguest/vboxguest.ko ]; then \
 	    cp vboxguest/vboxguest.ko .; \
 	 fi
 	@echo
 	@if [ -d vboxvfs ]; then \
-	    echo "*** Building 'vboxvfs' module ***"; \
+	    echo "=== Building 'vboxvfs' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxvfs; \
 	    if [ -f vboxvfs/vboxvfs.ko ]; then \
 	        cp vboxvfs/vboxvfs.ko .; \
diff --git a/src/VBox/Additions/linux/Makefile b/src/VBox/Additions/linux/Makefile
index 1b48201..5cf091c 100644
--- a/src/VBox/Additions/linux/Makefile
+++ b/src/VBox/Additions/linux/Makefile
@@ -27,7 +27,7 @@ else # ! KBUILD_EXTMOD
 KBUILD_VERBOSE =
 
 all:
-	@echo "*** Building 'vboxguest' module ***"
+	@echo "=== Building 'vboxguest' module ==="
 	@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxguest
 	@if [ -f vboxguest/vboxguest.ko ]; then \
 	    cp vboxguest/vboxguest.ko .; \
@@ -39,7 +39,7 @@ all:
 	    if [ -f vboxguest/Module.symvers ]; then \
 	        cp vboxguest/Module.symvers vboxsf; \
 	    fi; \
-	    echo "*** Building 'vboxsf' module ***"; \
+	    echo "=== Building 'vboxsf' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxsf || exit 1; \
 	    if [ -f vboxsf/vboxsf.ko ]; then \
 	        cp vboxsf/vboxsf.ko .; \
@@ -52,7 +52,7 @@ all:
 	    if [ -f vboxguest/Module.symvers ]; then \
 	        cp vboxguest/Module.symvers vboxvideo; \
 	    fi; \
-	    echo "*** Building 'vboxvideo' module ***"; \
+	    echo "=== Building 'vboxvideo' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxvideo || \
 	      (echo; echo "Building of vboxvideo failed, ignoring!"; echo); \
 	    if [ -f vboxvideo/vboxvideo.ko ]; then \
diff --git a/src/VBox/Additions/linux/Makefile.kmk b/src/VBox/Additions/linux/Makefile.kmk
index ed87950..30d49b1 100644
--- a/src/VBox/Additions/linux/Makefile.kmk
+++ b/src/VBox/Additions/linux/Makefile.kmk
@@ -27,6 +27,7 @@ ifdef VBOX_WITH_LIGHTDM_GREETER
  include $(PATH_SUB_CURRENT)/lightdm-greeter/Makefile.kmk
 endif
 
+
 #
 # Globals
 #
@@ -405,6 +406,36 @@ OTHER_CLEAN += \
 	$(VBOX_LNX_ADD_INST_STAGE_DIR)install.sh
 
 
+#
+# Build test for the Guest Additions kernel modules (kmk check).
+#
+if   defined(VBOX_WITH_TESTCASES) \
+ && !defined(VBOX_ONLY_SDK) \
+ && !defined(VBOX_ONLY_DOCS) \
+ && !defined(VBOX_ONLY_VALIDATIONKIT) \
+ && "$(KBUILD_HOST_ARCH)" == "$(KBUILD_TARGET_ARCH)"
+ VBOX_LNX_ADD_TEST        = $(PATH_TARGET)/tstguest_mod
+ VBOX_LNX_ADD_TEST_TARGET = $(PATH_TARGET)/tstguest_mod.run
+ TESTING     += $(VBOX_LNX_ADD_TEST_TARGET)
+ OTHERS      += $(VBOX_LNX_ADD_TEST_TARGET)
+ OTHER_CLEAN += $(VBOX_LNX_ADD_TEST_TARGET)
+ $$(VBOX_LNX_ADD_TEST_TARGET): \
+ 		$$(vboxguest-src_2_STAGE_TARGETS) \
+ 		$$(vboxsf-mod_2_STAGE_TARGETS) \
+ 		$$(vboxvideo_drm-mod_2_STAGE_TARGETS) \
+ 		$$(GuestDrivers-src_2_STAGE_TARGETS)
+	$(QUIET)$(call MSG_L1,Doing a test build of the guest kernel modules)
+	$(QUIET)$(RM) -f -- "$@"
+	$(QUIET)$(RM) -Rf -- "$(VBOX_LNX_ADD_TEST)"
+	$(QUIET)$(MKDIR) -p -- "$(VBOX_LNX_ADD_TEST)"
+	$(QUIET)$(CP) -R -- "$(PATH_STAGE_BIN)/additions/src/" "$(VBOX_LNX_ADD_TEST)/"
+	+ $(QUIET)make -C $(VBOX_LNX_ADD_TEST) clean
+	+ $(QUIET)make -C $(VBOX_LNX_ADD_TEST)
+	$(QUIET)$(RM) -Rf -- $(VBOX_LNX_ADD_TEST)
+	$(QUIET)$(APPEND) -t "$@" "done"
+endif
+
+
 include $(FILE_KBUILD_SUB_FOOTER)
 
 
diff --git a/src/VBox/Additions/linux/drm/Makefile.kmk b/src/VBox/Additions/linux/drm/Makefile.kmk
index a48663e..bd0dec5 100644
--- a/src/VBox/Additions/linux/drm/Makefile.kmk
+++ b/src/VBox/Additions/linux/drm/Makefile.kmk
@@ -30,44 +30,6 @@ vboxvideo_drm-mod_EXEC_SOURCES = \
 	$(subst $(DQUOTE),,$(FILES_VBOXVIDEO_DRM_BIN))
 
 
-#
-# The kernel module.
-#
-# Note! Syntax checking only.  Don't bother if drmP.h is missing (introduced
-#       in 2.6.27).  For the mode-setting driver make sure this is supported.
-# Note! The DEBUG_HASH* stuff is for CONFIG_DYNAMIC_DEBUG-enabled kernels.
-#
-if defined(VBOX_WITH_ADDITION_DRIVERS)
- if "$(shell grep -s 'DRM_IOCTL_MODE_CURSOR2' $(foreach inc,$(VBOX_LINUX_INCS),$(inc)/uapi/drm/drm.h))" != ""
-  SYSMODS += vboxvideo_drm
- endif
-endif
-
-vboxvideo_drm_TEMPLATE        = VBOXGUESTR0
-vboxvideo_drm_CFLAGS          = -fshort-wchar
-vboxvideo_drm_DEFS            = \
-	MODULE IN_RT_R0 VBOXGUEST VBOX_WITH_HGCM \
-	KBUILD_MODNAME=KBUILD_STR\(vboxvideo\) \
-	KBUILD_BASENAME=KBUILD_STR\(vboxvideo\) \
-	DEBUG_HASH=2 DEBUG_HASH2=3
-vboxvideo_drm_INCS           += \
-  ../../../Runtime/include \
-  ../../../Runtime/r0drv/linux
-vboxvideo_drm_SOURCES         = \
-  ../../common/VBoxVideo/HGSMIBase.cpp \
-  ../../common/VBoxVideo/Modesetting.cpp \
-  ../../common/VBoxVideo/VBVABase.cpp \
-  ../../../GuestHost/HGSMI/HGSMICommon.cpp \
-  ../../../GuestHost/HGSMI/HGSMIMemAlloc.cpp \
-  ../../../Runtime/common/alloc/heapoffset.cpp \
-	vbox_drv.c \
-	vbox_fb.c \
-	vbox_irq.c \
-	vbox_main.c \
-	vbox_mode.c \
-	vbox_ttm.c
-
-vbox_drv.c_DEPS               = $(VBOX_SVN_REV_HEADER)
 
 include $(FILE_KBUILD_SUB_FOOTER)
 
diff --git a/src/VBox/Additions/linux/drm/Makefile.module.kms b/src/VBox/Additions/linux/drm/Makefile.module.kms
index 3e11ed4..d9eb2ce 100644
--- a/src/VBox/Additions/linux/drm/Makefile.module.kms
+++ b/src/VBox/Additions/linux/drm/Makefile.module.kms
@@ -36,7 +36,7 @@ ifeq ($(filter 1.% 2.% 3.0.% 3.1.% 3.2.% 3.3.% 3.4.% 3.5.% 3.6.% 3.7.% \
 3.8.% 3.9.% 3.10.%,$(MY_KERNELRELEASE)),)
 MOD_OBJS   = HGSMIBase.o HGSMICommon.o HGSMIMemAlloc.o heapoffset.o \
              Modesetting.o vbox_drv.o vbox_fb.o vbox_irq.o vbox_main.o \
-             vbox_mode.o vbox_ttm.o VBVABase.o
+             vbox_mode.o vbox_ttm.o VBVABase.o vbox_prime.o
 else
 MOD_OBJS   = vbox_dummy.o
 endif
diff --git a/src/VBox/Additions/linux/drm/files_vboxvideo_drv b/src/VBox/Additions/linux/drm/files_vboxvideo_drv
index 8fcd72c..a46edae 100755
--- a/src/VBox/Additions/linux/drm/files_vboxvideo_drv
+++ b/src/VBox/Additions/linux/drm/files_vboxvideo_drv
@@ -65,6 +65,7 @@ FILES_VBOXVIDEO_DRM_NOBIN=" \
     ${PATH_ROOT}/src/VBox/Additions/linux/drm/vbox_irq.c=>vbox_irq.c \
     ${PATH_ROOT}/src/VBox/Additions/linux/drm/vbox_main.c=>vbox_main.c \
     ${PATH_ROOT}/src/VBox/Additions/linux/drm/vbox_mode.c=>vbox_mode.c \
+    ${PATH_ROOT}/src/VBox/Additions/linux/drm/vbox_prime.c=>vbox_prime.c \
     ${PATH_ROOT}/src/VBox/Additions/linux/drm/vbox_ttm.c=>vbox_ttm.c \
     ${PATH_ROOT}/src/VBox/GuestHost/HGSMI/HGSMICommon.cpp=>HGSMICommon.c \
     ${PATH_ROOT}/src/VBox/GuestHost/HGSMI/HGSMIMemAlloc.cpp=>HGSMIMemAlloc.c \
diff --git a/src/VBox/Additions/linux/drm/vbox_drv.c b/src/VBox/Additions/linux/drm/vbox_drv.c
index 91b9de5..d2c1b04 100644
--- a/src/VBox/Additions/linux/drm/vbox_drv.c
+++ b/src/VBox/Additions/linux/drm/vbox_drv.c
@@ -273,7 +273,7 @@ static void vbox_master_drop(struct drm_device *dev,
 
 static struct drm_driver driver =
 {
-    .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED,
+    .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_PRIME,
     .dev_priv_size = 0,
 
     .load = vbox_driver_load,
@@ -302,6 +302,17 @@ static struct drm_driver driver =
 #else
     .dumb_destroy = drm_gem_dumb_destroy,
 #endif
+    .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
+    .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
+    .gem_prime_export = drm_gem_prime_export,
+    .gem_prime_import = drm_gem_prime_import,
+    .gem_prime_pin = vbox_gem_prime_pin,
+    .gem_prime_unpin = vbox_gem_prime_unpin,
+    .gem_prime_get_sg_table = vbox_gem_prime_get_sg_table,
+    .gem_prime_import_sg_table = vbox_gem_prime_import_sg_table,
+    .gem_prime_vmap = vbox_gem_prime_vmap,
+    .gem_prime_vunmap = vbox_gem_prime_vunmap,
+    .gem_prime_mmap = vbox_gem_prime_mmap,
 
 };
 
diff --git a/src/VBox/Additions/linux/drm/vbox_drv.h b/src/VBox/Additions/linux/drm/vbox_drv.h
index ce52b44..6f89d3b 100644
--- a/src/VBox/Additions/linux/drm/vbox_drv.h
+++ b/src/VBox/Additions/linux/drm/vbox_drv.h
@@ -320,6 +320,23 @@ void vbox_ttm_placement(struct vbox_bo *bo, int domain);
 int vbox_bo_push_sysram(struct vbox_bo *bo);
 int vbox_mmap(struct file *filp, struct vm_area_struct *vma);
 
+/*vbox_prime*/
+int vbox_gem_prime_pin(struct drm_gem_object *obj);
+void vbox_gem_prime_unpin(struct drm_gem_object *obj);
+struct sg_table *vbox_gem_prime_get_sg_table(struct drm_gem_object *obj);
+struct drm_gem_object *vbox_gem_prime_import_sg_table(
+        struct drm_device *dev,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
+        size_t size,
+#else
+        struct dma_buf_attachment *attach,
+#endif
+        struct sg_table *table);
+void *vbox_gem_prime_vmap(struct drm_gem_object *obj);
+void vbox_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
+int vbox_gem_prime_mmap(struct drm_gem_object *obj,
+        struct vm_area_struct *area);
+
 /* vbox_irq.c */
 int vbox_irq_init(struct vbox_private *vbox);
 void vbox_irq_fini(struct vbox_private *vbox);
diff --git a/src/VBox/Additions/linux/drm/vbox_prime.c b/src/VBox/Additions/linux/drm/vbox_prime.c
new file mode 100644
index 0000000..2d162ea
--- /dev/null
+++ b/src/VBox/Additions/linux/drm/vbox_prime.c
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ * --------------------------------------------------------------------
+
+ * Copyright 2017 Canonical
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
+ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ * OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors: Andreas Pokorny
+ */
+
+#include "vbox_drv.h"
+
+/* Based on qxl_prime.c:
+ * Empty Implementations as there should not be any other driver for a virtual
+ * device that might share buffers with vboxvideo */
+
+int vbox_gem_prime_pin(struct drm_gem_object *obj)
+{
+    WARN_ONCE(1, "not implemented");
+    return -ENOSYS;
+}
+
+void vbox_gem_prime_unpin(struct drm_gem_object *obj)
+{
+    WARN_ONCE(1, "not implemented");
+}
+
+
+struct sg_table *vbox_gem_prime_get_sg_table(struct drm_gem_object *obj)
+{
+    WARN_ONCE(1, "not implemented");
+    return ERR_PTR(-ENOSYS);
+}
+
+struct drm_gem_object *vbox_gem_prime_import_sg_table(
+        struct drm_device *dev,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
+        size_t size,
+#else
+        struct dma_buf_attachment *attach,
+#endif
+        struct sg_table *table)
+{
+    WARN_ONCE(1, "not implemented");
+    return ERR_PTR(-ENOSYS);
+}
+
+void *vbox_gem_prime_vmap(struct drm_gem_object *obj)
+{
+    WARN_ONCE(1, "not implemented");
+    return ERR_PTR(-ENOSYS);
+}
+
+void vbox_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
+{
+    WARN_ONCE(1, "not implemented");
+}
+
+int vbox_gem_prime_mmap(struct drm_gem_object *obj,
+        struct vm_area_struct *area)
+{
+    WARN_ONCE(1, "not implemented");
+    return -ENOSYS;
+}
diff --git a/src/VBox/Additions/linux/installer/install.sh.in b/src/VBox/Additions/linux/installer/install.sh.in
index 13900a8..6b19092 100755
--- a/src/VBox/Additions/linux/installer/install.sh.in
+++ b/src/VBox/Additions/linux/installer/install.sh.in
@@ -16,17 +16,20 @@
 # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 #
 
-# This is a stub installation script to be included in VirtualBox Makeself
-# installers which removes any previous installations of the package, unpacks
-# the package into the filesystem (by default under /opt) and starts the real
-# installation script.
-#
+# Testing:
+# * After successful installation, 0 is returned if the vboxguest module version
+#   built matches the one loaded and 2 is returned otherwise.  E.g. VBoxClient
+#   running will prevent vboxguest reloading.
+# * If the kernel modules cannot be built (run the installer with KERN_DIR=/) or
+#   loaded (run with KERN_VER=<installed non-current version>) then 1 is returned.
+
 PATH=$PATH:/bin:/sbin:/usr/sbin
 
 # Note: These variable names must *not* clash with variables in $CONFIG_DIR/$CONFIG!
 PACKAGE="VBoxGuestAdditions"
 PACKAGE_NAME="VirtualBox Guest Additions"
 UNINSTALL="uninstall.sh"
+PUBLIC_UNINSTALL_HOOK="/usr/sbin/vbox-uninstall-guest-additions"
 ROUTINES="routines.sh"
 ARCH="_ARCH_"
 INSTALLATION_VER="_VERSION_"
@@ -42,6 +45,9 @@ CONFIG_FILES="filelist"
 SELF=$1
 LOGFILE="/var/log/$PACKAGE.log"
 
+## Were we able to stop any previously running Additions kernel modules?
+MODULES_STOPPED=1
+
 . "./$ROUTINES"
 
 check_root
@@ -301,6 +307,13 @@ do
 done
 
 # uninstall any previous installation
+# If the currently installed Additions have provided an uninstallation hook, try
+# that first.
+if test -x "${PUBLIC_UNINSTALL_HOOK}"; then
+  "${PUBLIC_UNINSTALL_HOOK}" 1>&2 || 
+    abort "Failed to remove existing installation.  Aborting..."
+fi
+
 INSTALL_DIR=""
 uninstalled=0
 test -r "$CONFIG_DIR/$CONFIG" &&
@@ -318,6 +331,9 @@ rm -f "$CONFIG_DIR/$CONFIG_FILES"
 rmdir "$CONFIG_DIR" 2>/dev/null
 test "$ACTION" = "install" || exit 0
 
+# Now check whether the kernel modules were stopped.
+lsmod | grep -q vboxguest && MODULES_STOPPED=
+
 # Choose a proper umask
 umask 022
 
@@ -541,6 +557,20 @@ echo $INSTALLATION_DIR/$UNINSTALL >> "$CONFIG_DIR/$CONFIG_FILES"
 test -n "$REMOVE_INSTALLATION_DIR" &&
   echo "$INSTALLATION_DIR/" >> "$CONFIG_DIR/$CONFIG_FILES"
 
+cat > "${PUBLIC_UNINSTALL_HOOK}" << EOF
+#!/bin/sh
+# This executable provides a well-known way to uninstall VirtualBox Guest
+# Additions in order to re-install them from a different source.  A common case
+# is uninstalling distribution-provide Additions to install the version provided
+# by VirtualBox.  Distributions should put the right command in here to do the
+# removal, e.g. "dnf remove VirtualBox-guest-additions".  Leaving kernel modules
+# provided by the distribution kernel package in place is acceptable if the
+# location does not clash with the VirtualBox-provided module location (misc).
+$INSTALLATION_DIR/$UNINSTALL
+EOF
+chmod 0755 "${PUBLIC_UNINSTALL_HOOK}"
+echo "$PUBLIC_UNINSTALL_HOOK" >> "$CONFIG_DIR/$CONFIG_FILES"
+
 # Test for a problem with old Mesa versions which stopped our 3D libraries
 # from working.  Known to affect Debian 7.11, probably OL/RHEL 5.
 # The problem was that the system Mesa library had an ABI note, which caused
@@ -559,3 +589,14 @@ EOF
     done
     echo >&2 "  ldconfig"
 fi
+
+# And do a final test as to whether the kernel modules were properly created
+# and loaded.  Return 0 if both are true, 1 if the modules could not be built
+# or loaded (except due to already running older modules) and 2 if already
+# running modules probably prevented new ones from loading.  vboxvideo is
+# currently not tested.
+# Assume that we have already printed enough messages by now and stay silent.
+modinfo vboxguest >/dev/null 2>&1 || exit 1
+lsmod | grep -q vboxguest || exit 1
+test -n "${MODULES_STOPPED}" || exit 2
+exit 0
diff --git a/src/VBox/Additions/linux/installer/vboxadd.sh b/src/VBox/Additions/linux/installer/vboxadd.sh
index 60e0068..5402083 100755
--- a/src/VBox/Additions/linux/installer/vboxadd.sh
+++ b/src/VBox/Additions/linux/installer/vboxadd.sh
@@ -1,6 +1,6 @@
 #! /bin/sh
 #
-# Linux Additions kernel module init script ($Revision: 113648 $)
+# Linux Additions kernel module init script ($Revision: 114389 $)
 #
 
 #
@@ -31,6 +31,20 @@
 ## @todo This file duplicates a lot of script with vboxdrv.sh.  When making
 # changes please try to reduce differences between the two wherever possible.
 
+# Testing:
+# * Should fail if the configuration file is missing or missing INSTALL_DIR or
+#   INSTALL_VER entries.
+# * vboxadd user and vboxsf groups should be created if they do not exist - test
+#   by removing them before installing.
+# * Shared folders can be mounted and auto-mounts accessible to vboxsf group,
+#   including on recent Fedoras with SELinux.
+# * Setting INSTALL_NO_MODULE_BUILDS inhibits modules and module automatic
+#   rebuild script creation; otherwise modules, user, group, rebuild script,
+#   udev rule and shared folder mount helper should be created/set up.
+# * Setting INSTALL_NO_MODULE_BUILDS inhibits module load and unload on start
+#   and stop.
+# * Uninstalling the Additions and re-installing them does not trigger warnings.
+
 PATH=$PATH:/bin:/sbin:/usr/sbin
 PACKAGE=VBoxGuestAdditions
 LOG="/var/log/vboxadd-install.log"
@@ -98,6 +112,14 @@ config=/var/lib/VBoxGuestAdditions/config
 owner=vboxadd
 group=1
 
+if test -r $config; then
+  . $config
+else
+  fail "Configuration file $config not found"
+fi
+test -n "$INSTALL_DIR" -a -n "$INSTALL_VER" ||
+  fail "Configuration file $config not complete"
+
 running_vboxguest()
 {
     lsmod | grep -q "vboxguest[^_-]"
@@ -171,50 +193,45 @@ start()
     begin "Starting the VirtualBox Guest Additions" console;
     # If we got this far assume that the slow set-up has been done.
     QUICKSETUP=yes
-    if test -r $config; then
-      . $config
-    else
-      fail "Configuration file $config not found"
-    fi
-    test -n "$INSTALL_DIR" -a -n "$INSTALL_VER" ||
-      fail "Configuration file $config not complete"
-    uname -r | grep -q -E '^2\.6|^3|^4' 2>/dev/null &&
-        ps -A -o comm | grep -q '/*udevd$' 2>/dev/null ||
-        no_udev=1
-    running_vboxguest || {
-        rm -f $dev || {
-            fail "Cannot remove $dev"
-        }
+    if test -z "${INSTALL_NO_MODULE_BUILDS}"; then
+        uname -r | grep -q -E '^2\.6|^3|^4' 2>/dev/null &&
+            ps -A -o comm | grep -q '/*udevd$' 2>/dev/null ||
+            no_udev=1
+        running_vboxguest || {
+            rm -f $dev || {
+                fail "Cannot remove $dev"
+            }
 
-        rm -f $userdev || {
-            fail "Cannot remove $userdev"
-        }
+            rm -f $userdev || {
+                fail "Cannot remove $userdev"
+            }
 
-        $MODPROBE vboxguest >/dev/null 2>&1 || {
-            setup
             $MODPROBE vboxguest >/dev/null 2>&1 || {
-                /sbin/rcvboxadd-x11 cleanup
-                fail "modprobe vboxguest failed"
+                setup
+                $MODPROBE vboxguest >/dev/null 2>&1 || {
+                    ${INSTALL_DIR}/init/vboxadd-x11 cleanup
+                    fail "modprobe vboxguest failed"
+                }
             }
+            case "$no_udev" in 1)
+                sleep .5;;
+            esac
         }
         case "$no_udev" in 1)
-            sleep .5;;
+            do_vboxguest_non_udev;;
         esac
-    }
-    case "$no_udev" in 1)
-        do_vboxguest_non_udev;;
-    esac
-
-    running_vboxsf || {
-        $MODPROBE vboxsf > /dev/null 2>&1 || {
-            if dmesg | grep "VbglR0SfConnect failed" > /dev/null 2>&1; then
-                show_error "Unable to start shared folders support.  Make sure that your VirtualBox build"
-                show_error "supports this feature."
-            else
-                show_error "modprobe vboxsf failed"
-            fi
+
+        running_vboxsf || {
+            $MODPROBE vboxsf > /dev/null 2>&1 || {
+                if dmesg | grep "VbglR0SfConnect failed" > /dev/null 2>&1; then
+                    show_error "Unable to start shared folders support.  Make sure that your VirtualBox build"
+                    show_error "supports this feature."
+                else
+                    show_error "modprobe vboxsf failed"
+                fi
+            }
         }
-    }
+    fi  # INSTALL_NO_MODULE_BUILDS
 
     # Put the X.Org driver in place.  This is harmless if it is not needed.
     /sbin/rcvboxadd-x11 setup
@@ -259,6 +276,7 @@ stop()
     if ! umount -a -t vboxsf 2>/dev/null; then
         fail "Cannot unmount vboxsf folders"
     fi
+    test -n "${INSTALL_NO_MODULE_BUILDS}" && return 0
     modprobe -q -r -a vboxvideo vboxsf vboxguest
     egrep -q 'vboxguest|vboxsf|vboxvideo' /proc/modules &&
         echo "You may need to restart your guest system to finish removing the guest drivers."
@@ -308,7 +326,7 @@ setup_modules()
         --module-source $MODULE_SRC/vboxguest \
         --no-print-directory install >> $LOG 2>&1; then
         show_error "Look at $LOG to find out what went wrong"
-        return 1
+        return 0
     fi
     succ_msg
     begin "Building the shared folder support module"
@@ -317,7 +335,7 @@ setup_modules()
         --module-source $MODULE_SRC/vboxsf \
         --no-print-directory install >> $LOG 2>&1; then
         show_error  "Look at $LOG to find out what went wrong"
-        return 1
+        return 0
     fi
     succ_msg
     begin "Building the graphics driver module"
@@ -336,9 +354,7 @@ setup_modules()
     return 0
 }
 
-# Do non-kernel bits needed for the kernel modules to work properly (user
-# creation, udev, mount helper...)
-extra_setup()
+create_vbox_user()
 {
     begin "Doing non-kernel setup of the Guest Additions"
     echo "Creating user for the Guest Additions." >> $LOG
@@ -348,11 +364,10 @@ extra_setup()
     # And for the others, we choose a UID ourselves
     useradd -d /var/run/vboxadd -g 1 -u 501 -o -s /bin/false vboxadd >/dev/null 2>&1
 
-    # Add a group "vboxsf" for Shared Folders access
-    # All users which want to access the auto-mounted Shared Folders have to
-    # be added to this group.
-    groupadd -r -f vboxsf >/dev/null 2>&1
+}
 
+create_udev_rule()
+{
     # Create udev description file
     if [ -d /etc/udev/rules.d ]; then
         echo "Creating udev rule for the Guest Additions kernel module." >> $LOG
@@ -378,12 +393,10 @@ extra_setup()
         echo "KERNEL=${udev_fix}\"vboxguest\", NAME=\"vboxguest\", OWNER=\"vboxadd\", MODE=\"0660\"" > /etc/udev/rules.d/60-vboxadd.rules
         echo "KERNEL=${udev_fix}\"vboxuser\", NAME=\"vboxuser\", OWNER=\"vboxadd\", MODE=\"0666\"" >> /etc/udev/rules.d/60-vboxadd.rules
     fi
+}
 
-    # Put mount.vboxsf in the right place
-    ln -sf "$lib_path/$PACKAGE/mount.vboxsf" /sbin
-    # And an rc file to re-build the kernel modules and re-set-up the X server.
-    ln -sf "$lib_path/$PACKAGE/vboxadd" /sbin/rcvboxadd
-    ln -sf "$lib_path/$PACKAGE/vboxadd-x11" /sbin/rcvboxadd-x11
+create_module_rebuild_script()
+{
     # And a post-installation script for rebuilding modules when a new kernel
     # is installed.
     mkdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d
@@ -401,6 +414,19 @@ rmdir -p /lib/modules/"\$1"/misc 2>/dev/null
 exit 0
 EOF
     chmod 0755 /etc/kernel/postinst.d/vboxadd /etc/kernel/prerm.d/vboxadd
+}
+
+shared_folder_setup()
+{
+    # Add a group "vboxsf" for Shared Folders access
+    # All users which want to access the auto-mounted Shared Folders have to
+    # be added to this group.
+    groupadd -r -f vboxsf >/dev/null 2>&1
+
+    # Put the mount.vboxsf mount helper in the right place.
+    ## @todo It would be nicer if the kernel module just parsed parameters
+    # itself instead of needing a separate binary to do that.
+    ln -sf "${INSTALL_DIR}/other/mount.vboxsf" /sbin
     # SELinux security context for the mount helper.
     if test -e /etc/selinux/config; then
         # This is correct.  semanage maps this to the real path, and it aborts
@@ -416,14 +442,6 @@ EOF
 # setup_script
 setup()
 {
-    begin "Building Guest Additions kernel modules" console
-    if test -r $config; then
-      . $config
-    else
-      fail "Configuration file $config not found"
-    fi
-    test -n "$INSTALL_DIR" -a -n "$INSTALL_VER" ||
-      fail "Configuration file $config not complete"
     export BUILD_TYPE
     export USERNAME
 
@@ -432,51 +450,41 @@ setup()
     BUILDINTMP="$MODULE_SRC/build_in_tmp"
     chcon -t bin_t "$BUILDINTMP" > /dev/null 2>&1
 
-    if setup_modules; then
-        mod_succ=0
-    else
-        mod_succ=1
-        show_error "Please check that you have gcc, make, the header files for your Linux kernel and possibly perl installed."
+    test -z "${INSTALL_NO_MODULE_BUILDS}" && setup_modules
+    create_vbox_user
+    create_udev_rule
+    test -z "${INSTALL_NO_MODULE_BUILDS}" && create_module_rebuild_script
+    test -n "${QUICKSETUP}" && return 0
+    shared_folder_setup
+    if  running_vboxguest || running_vboxadd; then
+        begin "Running kernel modules will not be replaced until the system is restarted"
     fi
-    test -n "${QUICKSETUP}" && return "${mod_succ}"
-    extra_setup
-    if [ "$mod_succ" -eq "0" ]; then
-        if running_vboxguest || running_vboxadd; then
-            begin "You should restart your guest to make sure the new modules are actually used" console
-        fi
-    fi
-    return "${mod_succ}"
+    return 0
 }
 
 # cleanup_script
 cleanup()
 {
-    if test -r $config; then
-      . $config
-      test -n "$INSTALL_DIR" -a -n "$INSTALL_VER" ||
-        fail "Configuration file $config not complete"
-    else
-      fail "Configuration file $config not found"
+    if test -z "${INSTALL_NO_MODULE_BUILDS}"; then
+        # Delete old versions of VBox modules.
+        cleanup_modules
+        depmod
+
+        # Remove old module sources
+        for i in $OLDMODULES; do
+          rm -rf /usr/src/$i-*
+        done
     fi
 
-    # Delete old versions of VBox modules.
-    cleanup_modules
-    depmod
-
-    # Remove old module sources
-    for i in $OLDMODULES; do
-      rm -rf /usr/src/$i-*
-    done
-
     # Clean-up X11-related bits
-    /sbin/rcvboxadd-x11 cleanup
+    ${INSTALL_DIR}/init/vboxadd-x11 cleanup
 
     # Remove other files
     rm /sbin/mount.vboxsf 2>/dev/null
-    rm /sbin/rcvboxadd 2>/dev/null
-    rm /sbin/rcvboxadd-x11 2>/dev/null
-    rm -f /etc/kernel/postinst.d/vboxadd /etc/kernel/prerm.d/vboxadd
-    rmdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d 2>/dev/null
+    if test -z "${INSTALL_NO_MODULE_BUILDS}"; then
+        rm -f /etc/kernel/postinst.d/vboxadd /etc/kernel/prerm.d/vboxadd
+        rmdir -p /etc/kernel/postinst.d /etc/kernel/prerm.d 2>/dev/null
+    fi
     rm /etc/udev/rules.d/60-vboxadd.rules 2>/dev/null
 }
 
@@ -500,7 +508,8 @@ restart)
     restart
     ;;
 setup)
-    setup && start
+    setup
+    start
     ;;
 quicksetup)
     QUICKSETUP=yes
diff --git a/src/VBox/Additions/linux/sharedfolders/Makefile.kmk b/src/VBox/Additions/linux/sharedfolders/Makefile.kmk
index b66e447..89b73b3 100644
--- a/src/VBox/Additions/linux/sharedfolders/Makefile.kmk
+++ b/src/VBox/Additions/linux/sharedfolders/Makefile.kmk
@@ -32,46 +32,6 @@ vboxsf-mod_EXEC_SOURCES = \
 
 
 #
-# The module (for syntax checking).
-# The DEBUG_HASH* stuff is for CONFIG_DYNAMIC_DEBUG-enabled kernels
-#
-ifdef VBOX_WITH_ADDITION_DRIVERS
- SYSMODS += vboxsf
- vboxsf_TEMPLATE        = VBOXGUESTR0
- vboxsf_CFLAGS          = -fshort-wchar
- vboxsf_DEFS            = \
- 	MODULE IN_RT_R0 VBOXGUEST VBOX_WITH_HGCM \
- 	KBUILD_MODNAME=KBUILD_STR\(vboxsf\) \
- 	KBUILD_BASENAME=KBUILD_STR\(vboxsf\) \
- 	DEBUG_HASH=2 DEBUG_HASH2=3
- # detect fc6 2.6.18
- vboxsf_DEFS           += \
- 	$(foreach inc, $(VBOX_LINUX_INCS),\
- 		$(if $(wildcard $(inc)/linux/utsrelease.h),\
- 		  $(if $(shell if grep -q '"2.6.18.*fc6.*"' $(inc)/linux/utsrelease.h;\
- 		               then echo yes; fi),KERNEL_FC6,),))
- # detect rhel5 2.6.18
- vboxsf_DEFS           += \
- 	$(foreach inc, $(VBOX_LINUX_INCS),\
- 		$(if $(wildcard $(inc)/linux/utsrelease.h),\
- 		  $(if $(shell if grep -q '"2.6.18.*el5.*"' $(inc)/linux/utsrelease.h;\
- 		               then echo yes; fi),KERNEL_FC6,),))
-
- vboxsf_INCS            = \
- 	$(PATH_ROOT)/src/VBox/Runtime/r0drv/linux
- vboxsf_SOURCES         = \
- 	vfsmod.c \
- 	utils.c \
- 	dirops.c \
- 	lnkops.c \
- 	regops.c
- vboxsf_LIBS            = \
- 	$(VBOX_LIB_VBGL_R0)
-
-vfsmod.c_DEPS           = $(VBOX_SVN_REV_HEADER)
-endif
-
-#
 # The mount util.
 #
 PROGRAMS += mount.vboxsf
diff --git a/src/VBox/Devices/Audio/DevIchAc97.cpp b/src/VBox/Devices/Audio/DevIchAc97.cpp
index 61f231e..8b61a9d 100644
--- a/src/VBox/Devices/Audio/DevIchAc97.cpp
+++ b/src/VBox/Devices/Audio/DevIchAc97.cpp
@@ -49,6 +49,20 @@
 # endif
 #endif /* DEBUG */
 
+/*
+ * AC97_DEBUG_DUMP_PCM_DATA enables dumping the raw PCM data
+ * to a file on the host. Be sure to adjust AC97_DEBUG_DUMP_PCM_DATA_PATH
+ * to your needs before using this!
+ */
+//#define AC97_DEBUG_DUMP_PCM_DATA
+#ifdef AC97_DEBUG_DUMP_PCM_DATA
+# ifdef RT_OS_WINDOWS
+#  define AC97_DEBUG_DUMP_PCM_DATA_PATH "c:\\temp\\"
+# else
+#  define AC97_DEBUG_DUMP_PCM_DATA_PATH "/tmp/"
+# endif
+#endif
+
 #define AC97_SSM_VERSION 1
 
 #ifdef VBOX
@@ -1018,6 +1032,13 @@ static int ichac97WriteAudio(PAC97STATE pThis, PAC97STREAM pStrmSt, uint32_t cbM
 
         uint32_t cbWritten;
 
+#ifdef AC97_DEBUG_DUMP_PCM_DATA
+        RTFILE fh;
+        RTFileOpen(&fh, AC97_DEBUG_DUMP_PCM_DATA_PATH "ac97DMARead.pcm",
+                   RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND | RTFILE_O_WRITE | RTFILE_O_DENY_NONE);
+        RTFileWrite(fh, pThis->pvReadWriteBuf, cbToRead, NULL);
+        RTFileClose(fh);
+#endif
         /* Just multiplex the output to the connected backends.
          * No need to utilize the virtual mixer here (yet). */
         PAC97DRIVER pDrv;
@@ -1247,7 +1268,7 @@ static DECLCALLBACK(void) ichac97Timer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void
         cbInMax  = RT_MAX(cbInMax, cbIn);
     }
 
-    Log3Func(("cbInMax=%RU32, cbOutMin=%RU32\n", cbInMax, cbOutMin));
+    Log3Func(("cbInMax=%RU32, cbOutMin=%RU32, cbMixerSamplesMin=%RU32\n", cbInMax, cbOutMin, cbMixerSamplesMin));
 
     if (cbOutMin == UINT32_MAX)
         cbOutMin = 0;
diff --git a/src/VBox/Devices/Bus/MsiCommon.cpp b/src/VBox/Devices/Bus/MsiCommon.cpp
index 2236c01..7c4dd49 100644
--- a/src/VBox/Devices/Bus/MsiCommon.cpp
+++ b/src/VBox/Devices/Bus/MsiCommon.cpp
@@ -6,7 +6,7 @@
  */
 
 /*
- * Copyright (C) 2010-2016 Oracle Corporation
+ * Copyright (C) 2010-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -42,20 +42,26 @@ DECLINLINE(bool) msiIs64Bit(PPDMPCIDEV pDev)
     return pciDevIsMsi64Capable(pDev);
 }
 
+/** @todo r=klaus This design assumes that the config space cache is always
+ * up to date, which is a wrong assumption for the "emulate passthrough" case
+ * where only the callbacks give the correct data. */
 DECLINLINE(uint32_t*) msiGetMaskBits(PPDMPCIDEV pDev)
 {
     uint8_t iOff = msiIs64Bit(pDev) ? VBOX_MSI_CAP_MASK_BITS_64 : VBOX_MSI_CAP_MASK_BITS_32;
-    /* passthrough devices may have no masked/pending support */
+    /* devices may have no masked/pending support */
     if (iOff >= pDev->Int.s.u8MsiCapSize)
         return NULL;
     iOff += pDev->Int.s.u8MsiCapOffset;
     return (uint32_t*)(pDev->abConfig + iOff);
 }
 
+/** @todo r=klaus This design assumes that the config space cache is always
+ * up to date, which is a wrong assumption for the "emulate passthrough" case
+ * where only the callbacks give the correct data. */
 DECLINLINE(uint32_t*) msiGetPendingBits(PPDMPCIDEV pDev)
 {
     uint8_t iOff = msiIs64Bit(pDev) ? VBOX_MSI_CAP_PENDING_BITS_64 : VBOX_MSI_CAP_PENDING_BITS_32;
-    /* passthrough devices may have no masked/pending support */
+    /* devices may have no masked/pending support */
     if (iOff >= pDev->Int.s.u8MsiCapSize)
         return NULL;
     iOff += pDev->Int.s.u8MsiCapOffset;
@@ -243,27 +249,35 @@ int MsiInit(PPDMPCIDEV pDev, PPDMMSIREG pMsiReg)
     uint8_t    iCapOffset  = pMsiReg->iMsiCapOffset;
     uint8_t    iNextOffset = pMsiReg->iMsiNextOffset;
     bool       f64bit      = pMsiReg->fMsi64bit;
+    bool       fNoMasking  = pMsiReg->fMsiNoMasking;
     uint16_t   iFlags      = 0;
-    int        iMmc;
 
-    /* Compute multiple-message capable bitfield */
-    for (iMmc = 0; iMmc < 6; iMmc++)
+    Assert(iCapOffset != 0 && iCapOffset < 0xff && iNextOffset < 0xff);
+
+    if (!fNoMasking)
     {
-        if ((1 << iMmc) >= cVectors)
-            break;
-    }
+        int iMmc;
+
+        /* Compute multiple-message capable bitfield */
+        for (iMmc = 0; iMmc < 6; iMmc++)
+        {
+            if ((1 << iMmc) >= cVectors)
+                break;
+        }
 
-    if ((cVectors > VBOX_MSI_MAX_ENTRIES) || (1 << iMmc) < cVectors)
-        return VERR_TOO_MUCH_DATA;
+        if ((cVectors > VBOX_MSI_MAX_ENTRIES) || (1 << iMmc) < cVectors)
+            return VERR_TOO_MUCH_DATA;
 
-    Assert(iCapOffset != 0 && iCapOffset < 0xff && iNextOffset < 0xff);
+        /* We support per-vector masking */
+        iFlags |= VBOX_PCI_MSI_FLAGS_MASKBIT;
+        /* How many vectors we're capable of */
+        iFlags |= iMmc;
+    }
+    else
+        AssertReturn(cVectors == 1, VERR_TOO_MUCH_DATA);
 
-    /* We always support per-vector masking */
-    iFlags |= VBOX_PCI_MSI_FLAGS_MASKBIT | iMmc;
     if (f64bit)
         iFlags |= VBOX_PCI_MSI_FLAGS_64BIT;
-    /* How many vectors we're capable of */
-    iFlags |= iMmc;
 
     pDev->Int.s.u8MsiCapOffset = iCapOffset;
     pDev->Int.s.u8MsiCapSize   = f64bit ? VBOX_MSI_CAP_SIZE_64 : VBOX_MSI_CAP_SIZE_32;
@@ -272,10 +286,15 @@ int MsiInit(PPDMPCIDEV pDev, PPDMMSIREG pMsiReg)
     PCIDevSetByte(pDev,  iCapOffset + 1, iNextOffset); /* next */
     PCIDevSetWord(pDev,  iCapOffset + VBOX_MSI_CAP_MESSAGE_CONTROL, iFlags);
 
-    *msiGetMaskBits(pDev)    = 0;
-    *msiGetPendingBits(pDev) = 0;
+    if (!fNoMasking)
+    {
+        *msiGetMaskBits(pDev)    = 0;
+        *msiGetPendingBits(pDev) = 0;
+    }
 
     pciDevSetMsiCapable(pDev);
+    if (f64bit)
+        pciDevSetMsi64Capable(pDev);
 
     return VINF_SUCCESS;
 }
diff --git a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd
index c643628..22feefc 100644
Binary files a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd and b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd differ
diff --git a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd
index de9114e..043062a 100644
Binary files a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd and b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI64.fd differ
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm
index 3e9206a..56a8395 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.asm
@@ -7293,7 +7293,7 @@ vesa_pm_end:                                 ; 0xc4514 LB 0x1
 
 section _DATA progbits vstart=0x4600 align=1 ; size=0x371f class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2f
-    db  'Oracle VM VirtualBox Version 5.1.18 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.20 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462f LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -8188,7 +8188,7 @@ _vbebios_vendor_name:                        ; 0xc7c73 LB 0x13
 _vbebios_product_name:                       ; 0xc7c86 LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
 _vbebios_product_revision:                   ; 0xc7ca7 LB 0x24
-    db  'Oracle VM VirtualBox Version 5.1.18', 000h
+    db  'Oracle VM VirtualBox Version 5.1.20', 000h
 _vbebios_info_string:                        ; 0xc7ccb LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf6 LB 0x29
@@ -8247,4 +8247,4 @@ section CONST2 progbits vstart=0x7d20 align=1 ; size=0x0 class=DATA group=DGROUP
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0b8h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0c6h
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
index 18d67ca..e841572 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
@@ -1 +1 @@
-381e9097e4f33ebdc5c76bcf9fb4796f *VBoxVgaBios286.rom
+6891c4f7799156e60a44ed274afed440 *VBoxVgaBios286.rom
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm
index 114a4f6..43e78ca 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm
@@ -6769,7 +6769,7 @@ vesa_pm_end:                                 ; 0xc4514 LB 0x1
 
 section _DATA progbits vstart=0x4600 align=1 ; size=0x371f class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2f
-    db  'Oracle VM VirtualBox Version 5.1.18 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.20 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462f LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -7664,7 +7664,7 @@ _vbebios_vendor_name:                        ; 0xc7c73 LB 0x13
 _vbebios_product_name:                       ; 0xc7c86 LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
 _vbebios_product_revision:                   ; 0xc7ca7 LB 0x24
-    db  'Oracle VM VirtualBox Version 5.1.18', 000h
+    db  'Oracle VM VirtualBox Version 5.1.20', 000h
 _vbebios_info_string:                        ; 0xc7ccb LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf6 LB 0x29
@@ -7723,4 +7723,4 @@ section CONST2 progbits vstart=0x7d20 align=1 ; size=0x0 class=DATA group=DGROUP
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0adh
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0bbh
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
index eb440bc..e044b71 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
@@ -1 +1 @@
-58093bf4dfd0d52e2c02b45f672f2740 *VBoxVgaBios386.rom
+e605a5a32b0f6d7f6ac8604817567aad *VBoxVgaBios386.rom
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm
index a59be2d..f082654 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm
@@ -7434,7 +7434,7 @@ vesa_pm_end:                                 ; 0xc4514 LB 0x1
 
 section _DATA progbits vstart=0x4600 align=1 ; size=0x371f class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2f
-    db  'Oracle VM VirtualBox Version 5.1.18 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.20 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462f LB 0x80
     db  000h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 001h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
     db  002h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h, 003h, 000h, 000h, 004h, 000h, 0b8h, 0ffh, 002h
@@ -8329,7 +8329,7 @@ _vbebios_vendor_name:                        ; 0xc7c73 LB 0x13
 _vbebios_product_name:                       ; 0xc7c86 LB 0x21
     db  'Oracle VM VirtualBox VBE Adapter', 000h
 _vbebios_product_revision:                   ; 0xc7ca7 LB 0x24
-    db  'Oracle VM VirtualBox Version 5.1.18', 000h
+    db  'Oracle VM VirtualBox Version 5.1.20', 000h
 _vbebios_info_string:                        ; 0xc7ccb LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf6 LB 0x29
@@ -8388,4 +8388,4 @@ section CONST2 progbits vstart=0x7d20 align=1 ; size=0x0 class=DATA group=DGROUP
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03fh
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 04dh
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
index c80b897..a6ccdeb 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
@@ -1 +1 @@
-6225bcbe6028512d2b3fafa70b43ba73 *VBoxVgaBios8086.rom
+653da9f9138edd9e217342f36fd30d82 *VBoxVgaBios8086.rom
diff --git a/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp b/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp
index 22da1ee..0e9a5e7 100644
--- a/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp
+++ b/src/VBox/Devices/Graphics/DevVGA-SVGA3d.cpp
@@ -69,9 +69,27 @@ int vmsvga3dSurfaceDefine(PVGASTATE pThis, uint32_t sid, uint32_t surfaceFlags,
 
     AssertReturn(sid < SVGA3D_MAX_SURFACE_IDS, VERR_INVALID_PARAMETER);
     AssertReturn(cMipLevels >= 1, VERR_INVALID_PARAMETER);
-    /* Assuming all faces have the same nr of mipmaps. */
-    AssertReturn(!(surfaceFlags & SVGA3D_SURFACE_CUBEMAP) || cMipLevels == face[0].numMipLevels * 6, VERR_INVALID_PARAMETER);
-    AssertReturn((surfaceFlags & SVGA3D_SURFACE_CUBEMAP) || cMipLevels == face[0].numMipLevels, VERR_INVALID_PARAMETER);
+
+    /* Number of faces (cFaces) is specified as the number of the first non-zero elements in the 'face' array.
+     * Since only plain surfaces (cFaces == 1) and cubemaps (cFaces == 6) are supported
+     * (see also SVGA3dCmdDefineSurface definition in svga3d_reg.h), we ignore anything else.
+     */
+    uint32_t cFaces = 0;
+    for (uint32_t i = 0; i < SVGA3D_MAX_SURFACE_FACES; ++i)
+    {
+        if (face[i].numMipLevels == 0)
+            break;
+
+        /* All SVGA3dSurfaceFace structures must have the same value of numMipLevels field */
+        AssertReturn(face[i].numMipLevels == face[0].numMipLevels, VERR_INVALID_PARAMETER);
+        ++cFaces;
+    }
+    for (uint32_t i = cFaces; i < SVGA3D_MAX_SURFACE_FACES; ++i)
+        AssertReturn(face[i].numMipLevels == 0, VERR_INVALID_PARAMETER);
+
+    /* cFaces must be 6 for a cubemap and 1 otherwise. */
+    AssertReturn(cFaces == (uint32_t)((surfaceFlags & SVGA3D_SURFACE_CUBEMAP) ? 6 : 1), VERR_INVALID_PARAMETER);
+    AssertReturn(cMipLevels == cFaces * face[0].numMipLevels, VERR_INVALID_PARAMETER);
 
     if (sid >= pState->cSurfaces)
     {
@@ -188,7 +206,7 @@ int vmsvga3dSurfaceDefine(PVGASTATE pThis, uint32_t sid, uint32_t surfaceFlags,
     pSurface->flags             = surfaceFlags;
     pSurface->format            = format;
     memcpy(pSurface->faces, face, sizeof(pSurface->faces));
-    pSurface->cFaces            = 1;        /* check for cube maps later */
+    pSurface->cFaces            = cFaces;
     pSurface->multiSampleCount  = multisampleCount;
     pSurface->autogenFilter     = autogenFilter;
     Assert(autogenFilter != SVGA3D_TEX_FILTER_FLATCUBIC);
@@ -225,7 +243,6 @@ int vmsvga3dSurfaceDefine(PVGASTATE pThis, uint32_t sid, uint32_t surfaceFlags,
     {
     case SVGA3D_SURFACE_CUBEMAP:
         Log(("SVGA3D_SURFACE_CUBEMAP\n"));
-        pSurface->cFaces = 6;
         break;
 
     case SVGA3D_SURFACE_HINT_INDEXBUFFER:
@@ -258,20 +275,16 @@ int vmsvga3dSurfaceDefine(PVGASTATE pThis, uint32_t sid, uint32_t surfaceFlags,
     Assert(!VMSVGA3DSURFACE_HAS_HW_SURFACE(pSurface));
 
     /* Allocate buffer to hold the surface data until we can move it into a D3D object */
-    for (uint32_t iFace=0; iFace < pSurface->cFaces; iFace++)
+    for (uint32_t i = 0; i < cMipLevels; ++i)
     {
-        for (uint32_t i=0; i < pSurface->faces[iFace].numMipLevels; i++)
-        {
-            uint32_t idx = i + iFace * pSurface->faces[0].numMipLevels;
-
-            Log(("vmsvga3dSurfaceDefine: face %d mip level %d (%d,%d,%d)\n", iFace, i, pSurface->pMipmapLevels[idx].size.width, pSurface->pMipmapLevels[idx].size.height, pSurface->pMipmapLevels[idx].size.depth));
-            Log(("vmsvga3dSurfaceDefine: cbPitch=%x cbBlock=%x \n", pSurface->cbBlock * pSurface->pMipmapLevels[idx].size.width, pSurface->cbBlock));
-
-            pSurface->pMipmapLevels[idx].cbSurfacePitch = pSurface->cbBlock * pSurface->pMipmapLevels[idx].size.width;
-            pSurface->pMipmapLevels[idx].cbSurface      = pSurface->pMipmapLevels[idx].cbSurfacePitch * pSurface->pMipmapLevels[idx].size.height * pSurface->pMipmapLevels[idx].size.depth;
-            pSurface->pMipmapLevels[idx].pSurfaceData   = RTMemAllocZ(pSurface->pMipmapLevels[idx].cbSurface);
-            AssertReturn(pSurface->pMipmapLevels[idx].pSurfaceData, VERR_NO_MEMORY);
-        }
+        PVMSVGA3DMIPMAPLEVEL pMipmapLevel = &pSurface->pMipmapLevels[i];
+        LogFunc(("[%d] face %d mip level %d (%d,%d,%d)\n", i, i / pSurface->faces[0].numMipLevels, i % pSurface->faces[0].numMipLevels, pMipmapLevel->size.width, pMipmapLevel->size.height, pMipmapLevel->size.depth));
+        LogFunc(("cbPitch=0x%x cbBlock=0x%x\n", pSurface->cbBlock * pMipmapLevel->size.width, pSurface->cbBlock));
+
+        pMipmapLevel->cbSurfacePitch = pSurface->cbBlock * pMipmapLevel->size.width;
+        pMipmapLevel->cbSurface      = pMipmapLevel->cbSurfacePitch * pMipmapLevel->size.height * pMipmapLevel->size.depth;
+        pMipmapLevel->pSurfaceData   = RTMemAllocZ(pMipmapLevel->cbSurface);
+        AssertReturn(pMipmapLevel->pSurfaceData, VERR_NO_MEMORY);
     }
     return VINF_SUCCESS;
 }
diff --git a/src/VBox/Devices/Network/DevVirtioNet.cpp b/src/VBox/Devices/Network/DevVirtioNet.cpp
index d294a90..acda3cf 100644
--- a/src/VBox/Devices/Network/DevVirtioNet.cpp
+++ b/src/VBox/Devices/Network/DevVirtioNet.cpp
@@ -1143,7 +1143,7 @@ DECLINLINE(uint16_t) vnetCSum16(const void *pvBuf, size_t cb)
     return ~csum;
 }
 
-DECLINLINE(void) vnetCompleteChecksum(uint8_t *pBuf, unsigned cbSize, uint16_t uStart, uint16_t uOffset)
+DECLINLINE(void) vnetCompleteChecksum(uint8_t *pBuf, size_t cbSize, uint16_t uStart, uint16_t uOffset)
 {
     *(uint16_t*)(pBuf + uStart + uOffset) = vnetCSum16(pBuf + uStart, cbSize - uStart);
 }
@@ -1206,10 +1206,13 @@ static void vnetTransmitPendingPackets(PVNETSTATE pThis, PVQUEUE pQueue, bool fO
             unsigned int uSize = 0;
             STAM_PROFILE_ADV_START(&pThis->StatTransmit, a);
             /* Compute total frame size. */
-            for (unsigned int i = 1; i < elem.nOut; i++)
+            for (unsigned int i = 1; i < elem.nOut && uSize < VNET_MAX_FRAME_SIZE; i++)
                 uSize += elem.aSegsOut[i].cb;
             Log5(("%s vnetTransmitPendingPackets: complete frame is %u bytes.\n", INSTANCE(pThis), uSize));
             Assert(uSize <= VNET_MAX_FRAME_SIZE);
+            /* Truncate oversized frames. */
+            if (uSize > VNET_MAX_FRAME_SIZE)
+                uSize = VNET_MAX_FRAME_SIZE;
             if (pThis->pDrv)
             {
                 VNETHDR Hdr;
@@ -1229,16 +1232,18 @@ static void vnetTransmitPendingPackets(PVNETSTATE pThis, PVQUEUE pQueue, bool fO
                 if (RT_SUCCESS(rc))
                 {
                     Assert(pSgBuf->cSegs == 1);
+                    pSgBuf->cbUsed = uSize;
                     /* Assemble a complete frame. */
-                    for (unsigned int i = 1; i < elem.nOut; i++)
+                    for (unsigned int i = 1; i < elem.nOut && uSize > 0; i++)
                     {
+                        unsigned int cbSegment = RT_MIN(uSize, elem.aSegsOut[i].cb);
                         PDMDevHlpPhysRead(pThis->VPCI.CTX_SUFF(pDevIns), elem.aSegsOut[i].addr,
                                           ((uint8_t*)pSgBuf->aSegs[0].pvSeg) + uOffset,
-                                          elem.aSegsOut[i].cb);
-                        uOffset += elem.aSegsOut[i].cb;
+                                          cbSegment);
+                        uOffset += cbSegment;
+                        uSize -= cbSegment;
                     }
-                    pSgBuf->cbUsed = uSize;
-                    vnetPacketDump(pThis, (uint8_t *)pSgBuf->aSegs[0].pvSeg, uSize, "--> Outgoing");
+                    vnetPacketDump(pThis, (uint8_t *)pSgBuf->aSegs[0].pvSeg, pSgBuf->cbUsed, "--> Outgoing");
                     if (pGso)
                     {
                         /* Some guests (RHEL) may report HdrLen excluding transport layer header! */
@@ -1279,7 +1284,7 @@ static void vnetTransmitPendingPackets(PVNETSTATE pThis, PVQUEUE pQueue, bool fO
                         /*
                          * This is not GSO frame but checksum offloading is requested.
                          */
-                        vnetCompleteChecksum((uint8_t*)pSgBuf->aSegs[0].pvSeg, uSize,
+                        vnetCompleteChecksum((uint8_t*)pSgBuf->aSegs[0].pvSeg, pSgBuf->cbUsed,
                                              Hdr.u16CSumStart, Hdr.u16CSumOffset);
                     }
 
diff --git a/src/VBox/Devices/Network/slirp/ip_input.c b/src/VBox/Devices/Network/slirp/ip_input.c
index f7c839a..e39d3a7 100644
--- a/src/VBox/Devices/Network/slirp/ip_input.c
+++ b/src/VBox/Devices/Network/slirp/ip_input.c
@@ -94,6 +94,7 @@ ip_input(PNATState pData, struct mbuf *m)
     register struct ip *ip;
     int hlen = 0;
     int mlen = 0;
+    int iplen = 0;
 
     STAM_PROFILE_START(&pData->StatIP_input, a);
 
@@ -102,26 +103,6 @@ ip_input(PNATState pData, struct mbuf *m)
     Log2(("ip_dst=%RTnaipv4(len:%d) m_len = %d\n", ip->ip_dst, RT_N2H_U16(ip->ip_len), m->m_len));
 
     ipstat.ips_total++;
-    {
-        int rc;
-        if (!(m->m_flags & M_SKIP_FIREWALL))
-        {
-            STAM_PROFILE_START(&pData->StatALIAS_input, b);
-            rc = LibAliasIn(pData->proxy_alias, mtod(m, char *), m_length(m, NULL));
-            STAM_PROFILE_STOP(&pData->StatALIAS_input, b);
-            Log2(("NAT: LibAlias return %d\n", rc));
-        }
-        else
-            m->m_flags &= ~M_SKIP_FIREWALL;
-
-        /*
-         * XXX: TODO: this is most likely a leftover spooky action at
-         * a distance from alias_dns.c host resolver code and can be
-         * g/c'ed.
-         */
-        if (m->m_len != RT_N2H_U16(ip->ip_len))
-            m->m_len = RT_N2H_U16(ip->ip_len);
-    }
 
     mlen = m->m_len;
 
@@ -157,34 +138,31 @@ ip_input(PNATState pData, struct mbuf *m)
         goto bad_free_m;
     }
 
-    /*
-     * Convert fields to host representation.
-     */
-    NTOHS(ip->ip_len);
-    if (ip->ip_len < hlen)
+    iplen = RT_N2H_U16(ip->ip_len);
+    if (iplen < hlen)
     {
         ipstat.ips_badlen++;
         goto bad_free_m;
     }
 
-    NTOHS(ip->ip_id);
-    NTOHS(ip->ip_off);
-
     /*
      * Check that the amount of data in the buffers
      * is as at least much as the IP header would have us expect.
      * Trim mbufs if longer than we expect.
      * Drop packet if shorter than we expect.
      */
-    if (mlen < ip->ip_len)
+    if (mlen < iplen)
     {
         ipstat.ips_tooshort++;
         goto bad_free_m;
     }
 
     /* Should drop packet if mbuf too long? hmmm... */
-    if (mlen > ip->ip_len)
-        m_adj(m, ip->ip_len - mlen);
+    if (mlen > iplen)
+    {
+        m_adj(m, iplen - mlen);
+        mlen = m->m_len;
+    }
 
     /* source must be unicast */
     if ((ip->ip_src.s_addr & RT_N2H_U32_C(0xe0000000)) == RT_N2H_U32_C(0xe0000000))
@@ -207,6 +185,11 @@ ip_input(PNATState pData, struct mbuf *m)
     {
         if (ip->ip_ttl <= 1)
         {
+            /* icmp_error expects these in host order */
+            NTOHS(ip->ip_len);
+            NTOHS(ip->ip_id);
+            NTOHS(ip->ip_off);
+
             icmp_error(pData, m, ICMP_TIMXCEED, ICMP_TIMXCEED_INTRANS, 0, "ttl");
             goto no_free_m;
         }
@@ -226,6 +209,39 @@ ip_input(PNATState pData, struct mbuf *m)
             ip->ip_sum += RT_H2N_U16_C(1 << 8);
     }
 
+    /* run it through libalias */
+    {
+        int rc;
+        if (!(m->m_flags & M_SKIP_FIREWALL))
+        {
+            STAM_PROFILE_START(&pData->StatALIAS_input, b);
+            rc = LibAliasIn(pData->proxy_alias, mtod(m, char *), mlen);
+            STAM_PROFILE_STOP(&pData->StatALIAS_input, b);
+            Log2(("NAT: LibAlias return %d\n", rc));
+        }
+        else
+            m->m_flags &= ~M_SKIP_FIREWALL;
+
+#if 0 /* disabled: no module we use does it in this direction */
+        /*
+         * XXX: spooky action at a distance - libalias may modify the
+         * packet and will update ip_len to reflect the new length.
+         */
+        if (iplen != RT_N2H_U16(ip->ip_len))
+        {
+            iplen = RT_N2H_U16(ip->ip_len);
+            m->m_len = iplen;
+            mlen = m->m_len;
+        }
+#endif
+    }
+
+    /*
+     * Convert fields to host representation.
+     */
+    NTOHS(ip->ip_len);
+    NTOHS(ip->ip_id);
+    NTOHS(ip->ip_off);
 
     /*
      * If offset or IP_MF are set, must reassemble.
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
index 61bf1da..d2d5353 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
@@ -987,12 +987,12 @@ _fd_parm:                                    ; 0xf0000 LB 0x5b
 _fd_map:                                     ; 0xf005b LB 0xf
     db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
 _pktacc:                                     ; 0xf006a LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 03ah, 081h, 0a0h, 090h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 03bh, 081h, 0a1h, 090h
 _softrst:                                    ; 0xf0076 LB 0xc
     db  000h, 000h, 000h, 000h, 000h, 000h, 089h, 02dh, 01ch, 03bh, 01ch, 03bh
 _dskacc:                                     ; 0xf0082 LB 0x2e
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0f0h, 029h, 0a5h, 02ah, 000h, 000h, 000h, 000h
-    db  07ah, 07fh, 05ah, 080h, 072h, 08fh, 01ah, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  07bh, 07fh, 05bh, 080h, 073h, 08fh, 01bh, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
 section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
@@ -1115,7 +1115,7 @@ section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
 
 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
-    db  'VirtualBox 5.1.18', 000h
+    db  'VirtualBox 5.1.20', 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -1439,7 +1439,7 @@ _print_bios_banner:                          ; 0xf178d LB 0x2e
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     jmp short 017b7h                          ; eb 03
-    call 07b3fh                               ; e8 88 63
+    call 07b40h                               ; e8 89 63
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
@@ -2693,7 +2693,7 @@ _ata_detect:                                 ; 0xf2118 LB 0x64e
     push si                                   ; 56
     mov dx, ss                                ; 8c d2
     lea ax, [bp-03ah]                         ; 8d 46 c6
-    call 059cbh                               ; e8 21 36
+    call 059cch                               ; e8 22 36
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5420,7 +5420,7 @@ device_is_cdrom_:                            ; 0xf3cf7 LB 0x35
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf3d2c LB 0x434
+cdrom_boot_:                                 ; 0xf3d2c LB 0x435
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5432,11 +5432,11 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
     call 0166ch                               ; e8 2b d9
-    mov word [bp-01ah], ax                    ; 89 46 e6
-    mov si, 00366h                            ; be 66 03
-    mov word [bp-016h], ax                    ; 89 46 ea
-    mov word [bp-018h], 00122h                ; c7 46 e8 22 01
     mov word [bp-012h], ax                    ; 89 46 ee
+    mov si, 00366h                            ; be 66 03
+    mov word [bp-014h], ax                    ; 89 46 ec
+    mov word [bp-016h], 00122h                ; c7 46 ea 22 01
+    mov word [bp-010h], ax                    ; 89 46 f0
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     jmp short 03d61h                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
@@ -5450,7 +5450,7 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
     jc short 03d79h                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 040fdh                           ; e9 84 03
+    jmp near 040feh                           ; e9 85 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
@@ -5467,8 +5467,8 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     mov ax, strict word 00001h                ; b8 01 00
     xchg ah, al                               ; 86 c4
     mov word [bp-01fh], ax                    ; 89 46 e1
-    mov es, [bp-012h]                         ; 8e 46 ee
-    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov es, [bp-010h]                         ; 8e 46 f0
+    mov bx, word [bp-016h]                    ; 8b 5e ea
     mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00
     mov word [es:bx+010h], 00800h             ; 26 c7 47 10 00 08
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
@@ -5479,8 +5479,8 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
-    mov es, [bp-012h]                         ; 8e 46 ee
-    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov es, [bp-010h]                         ; 8e 46 f0
+    mov bx, word [bp-016h]                    ; 8b 5e ea
     add bx, ax                                ; 01 c3
     mov al, byte [es:bx+022h]                 ; 26 8a 47 22
     xor ah, ah                                ; 30 e4
@@ -5503,11 +5503,11 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     test ax, ax                               ; 85 c0
     je short 03e0ah                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 040fdh                           ; e9 f3 02
+    jmp near 040feh                           ; e9 f4 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
     je short 03e17h                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 040fdh                           ; e9 e6 02
+    jmp near 040feh                           ; e9 e7 02
     xor di, di                                ; 31 ff
     jmp short 03e21h                          ; eb 06
     inc di                                    ; 47
@@ -5517,7 +5517,7 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
     je short 03e1bh                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 040fdh                           ; e9 cc 02
+    jmp near 040feh                           ; e9 cd 02
     xor di, di                                ; 31 ff
     jmp short 03e3bh                          ; eb 06
     inc di                                    ; 47
@@ -5527,7 +5527,7 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
     je short 03e35h                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 040fdh                           ; e9 b2 02
+    jmp near 040feh                           ; e9 b3 02
     mov ax, word [bp-007dfh]                  ; 8b 86 21 f8
     mov dx, word [bp-007ddh]                  ; 8b 96 23 f8
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
@@ -5542,8 +5542,8 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
-    mov es, [bp-012h]                         ; 8e 46 ee
-    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov es, [bp-010h]                         ; 8e 46 f0
+    mov bx, word [bp-016h]                    ; 8b 5e ea
     add bx, ax                                ; 01 c3
     mov al, byte [es:bx+022h]                 ; 26 8a 47 22
     xor ah, ah                                ; 30 e4
@@ -5564,27 +5564,27 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     test ax, ax                               ; 85 c0
     je short 03eadh                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 040fdh                           ; e9 50 02
+    jmp near 040feh                           ; e9 51 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
     je short 03ebah                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 040fdh                           ; e9 43 02
+    jmp near 040feh                           ; e9 44 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
     je short 03ec7h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 040fdh                           ; e9 36 02
+    jmp near 040feh                           ; e9 37 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
     je short 03ed4h                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 040fdh                           ; e9 29 02
+    jmp near 040feh                           ; e9 2a 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
     jne short 03eceh                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
     je short 03ee8h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 040fdh                           ; e9 15 02
+    jmp near 040feh                           ; e9 16 02
     mov al, byte [bp-00805h]                  ; 8a 86 fb f7
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov byte [es:si+001h], al                 ; 26 88 44 01
     cmp byte [bp-00805h], 000h                ; 80 be fb f7 00
     jne short 03f01h                          ; 75 07
@@ -5602,7 +5602,7 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     db  02bh, 0c2h
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov byte [es:si+003h], al                 ; 26 88 44 03
     mov ax, bx                                ; 89 d8
     cwd                                       ; 99
@@ -5610,12 +5610,12 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     idiv bx                                   ; f7 fb
     mov word [es:si+004h], dx                 ; 26 89 54 04
     mov ax, word [bp-00804h]                  ; 8b 86 fc f7
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-01ah], ax                    ; 89 46 e6
     test ax, ax                               ; 85 c0
     jne short 03f43h                          ; 75 05
-    mov word [bp-010h], 007c0h                ; c7 46 f0 c0 07
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov word [bp-01ah], 007c0h                ; c7 46 e6 c0 07
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov word [es:si+00ch], ax                 ; 26 89 44 0c
     mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00
     mov di, word [bp-00800h]                  ; 8b be 00 f8
@@ -5625,7 +5625,7 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     cmp di, 00400h                            ; 81 ff 00 04
     jbe short 03f6bh                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 040fdh                           ; e9 92 01
+    jmp near 040feh                           ; e9 93 01
     mov ax, word [bp-007feh]                  ; 8b 86 02 f8
     mov dx, word [bp-007fch]                  ; 8b 96 04 f8
     mov word [es:si+008h], ax                 ; 26 89 44 08
@@ -5642,8 +5642,8 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     mov ax, cx                                ; 89 c8
     xchg ah, al                               ; 86 c4
     mov word [bp-01fh], ax                    ; 89 46 e1
-    mov es, [bp-012h]                         ; 8e 46 ee
-    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov es, [bp-010h]                         ; 8e 46 f0
+    mov bx, word [bp-016h]                    ; 8b 5e ea
     mov word [es:bx+00eh], cx                 ; 26 89 4f 0e
     mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
     mov ax, di                                ; 89 f8
@@ -5660,8 +5660,8 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     mov al, byte [es:bx+022h]                 ; 26 8a 47 22
     xor ah, ah                                ; 30 e4
     add ax, ax                                ; 01 c0
-    mov word [bp-014h], ax                    ; 89 46 ec
-    push word [bp-010h]                       ; ff 76 f0
+    mov word [bp-018h], ax                    ; 89 46 e8
+    push word [bp-01ah]                       ; ff 76 e6
     push strict byte 00000h                   ; 6a 00
     push strict byte 00001h                   ; 6a 01
     mov ax, di                                ; 89 f8
@@ -5678,16 +5678,16 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     mov cx, ss                                ; 8c d1
     lea bx, [bp-026h]                         ; 8d 5e da
     mov dx, strict word 0000ch                ; ba 0c 00
-    mov di, word [bp-014h]                    ; 8b 7e ec
+    mov di, word [bp-018h]                    ; 8b 7e e8
     call word [word di+0006ah]                ; ff 95 6a 00
-    mov es, [bp-012h]                         ; 8e 46 ee
-    mov bx, word [bp-018h]                    ; 8b 5e e8
+    mov es, [bp-010h]                         ; 8e 46 f0
+    mov bx, word [bp-016h]                    ; 8b 5e ea
     mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00
     test ax, ax                               ; 85 c0
     je short 04013h                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 040fdh                           ; e9 ea 00
-    mov es, [bp-016h]                         ; 8e 46 ea
+    jmp near 040feh                           ; e9 eb 00
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov al, byte [es:si+001h]                 ; 26 8a 44 01
     cmp AL, strict byte 002h                  ; 3c 02
     jc short 0402bh                           ; 72 0d
@@ -5696,75 +5696,75 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     je short 04056h                           ; 74 32
     cmp AL, strict byte 003h                  ; 3c 03
     je short 0404eh                           ; 74 26
-    jmp near 040a2h                           ; e9 77 00
+    jmp near 040a3h                           ; e9 78 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 040a2h                          ; 75 73
-    mov es, [bp-016h]                         ; 8e 46 ea
+    jne short 040a3h                          ; 75 74
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00
     mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00
     mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00
-    jmp short 040a2h                          ; eb 5c
+    jmp short 040a3h                          ; eb 5d
     mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00
     jmp short 04038h                          ; eb ea
     mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00
     jmp short 04038h                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
     call 01650h                               ; e8 f1 d5
     and AL, strict byte 03fh                  ; 24 3f
     xor ah, ah                                ; 30 e4
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov word [es:si+014h], ax                 ; 26 89 44 14
     mov dx, 001c4h                            ; ba c4 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
     call 01650h                               ; e8 dd d5
-    xor ah, ah                                ; 30 e4
+    and ax, 000c0h                            ; 25 c0 00
     mov bx, ax                                ; 89 c3
     sal bx, 002h                              ; c1 e3 02
     mov dx, 001c5h                            ; ba c5 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01650h                               ; e8 cd d5
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    call 01650h                               ; e8 cc d5
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
     inc ax                                    ; 40
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov word [es:si+012h], ax                 ; 26 89 44 12
     mov dx, 001c3h                            ; ba c3 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01650h                               ; e8 b8 d5
+    mov ax, word [bp-01ah]                    ; 8b 46 e6
+    call 01650h                               ; e8 b7 d5
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov word [es:si+010h], ax                 ; 26 89 44 10
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-014h]                         ; 8e 46 ec
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 040e3h                           ; 74 37
+    je short 040e4h                           ; 74 37
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 040cbh                          ; 75 18
+    jne short 040cch                          ; 75 18
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 94 d5
+    call 01650h                               ; e8 93 d5
     mov bl, al                                ; 88 c3
     or bl, 041h                               ; 80 cb 41
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    jmp short 040e0h                          ; eb 15
+    jmp short 040e1h                          ; eb 15
     mov dx, 00304h                            ; ba 04 03
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 01650h                               ; e8 7c d5
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    call 01650h                               ; e8 7b d5
     mov bl, al                                ; 88 c3
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, 00304h                            ; ba 04 03
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 0165eh                               ; e8 7b d5
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov ax, word [bp-012h]                    ; 8b 46 ee
+    call 0165eh                               ; e8 7a d5
+    mov es, [bp-014h]                         ; 8e 46 ec
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 040f1h                           ; 74 04
+    je short 040f2h                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
-    mov es, [bp-016h]                         ; 8e 46 ea
+    mov es, [bp-014h]                         ; 8e 46 ec
     mov al, byte [es:si+002h]                 ; 26 8a 44 02
     xor ah, ah                                ; 30 e4
     sal ax, 008h                              ; c1 e0 08
@@ -5777,12 +5777,12 @@ cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     pop bp                                    ; 5d
     retn                                      ; c3
     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, 006h, 045h, 005h
-    db  042h, 038h, 042h, 062h, 042h, 02dh, 042h, 062h, 042h, 02dh, 042h, 054h, 044h, 03ah, 044h, 006h
-    db  045h, 006h, 045h, 03ah, 044h, 03ah, 044h, 03ah, 044h, 03ah, 044h, 03ah, 044h, 0fdh, 044h, 03ah
-    db  044h, 006h, 045h, 006h, 045h, 006h, 045h, 006h, 045h, 006h, 045h, 006h, 045h, 006h, 045h, 006h
-    db  045h, 006h, 045h, 006h, 045h, 006h, 045h, 006h, 045h
-_int13_cdemu:                                ; 0xf4160 LB 0x442
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 007h, 045h, 006h
+    db  042h, 039h, 042h, 063h, 042h, 02eh, 042h, 063h, 042h, 02eh, 042h, 055h, 044h, 03bh, 044h, 007h
+    db  045h, 007h, 045h, 03bh, 044h, 03bh, 044h, 03bh, 044h, 03bh, 044h, 03bh, 044h, 0feh, 044h, 03bh
+    db  044h, 007h, 045h, 007h, 045h, 007h, 045h, 007h, 045h, 007h, 045h, 007h, 045h, 007h, 045h, 007h
+    db  045h, 007h, 045h, 007h, 045h, 007h, 045h, 007h, 045h
+_int13_cdemu:                                ; 0xf4161 LB 0x442
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -5790,7 +5790,7 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     sub sp, strict byte 0002ah                ; 83 ec 2a
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 fb d4
+    call 0166ch                               ; e8 fa d4
     mov di, 00366h                            ; bf 66 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
@@ -5806,20 +5806,20 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 be d4
+    call 0165eh                               ; e8 bd d4
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 041b7h                           ; 74 0f
+    je short 041b8h                           ; 74 0f
     mov al, byte [es:di+002h]                 ; 26 8a 45 02
     xor ah, ah                                ; 30 e4
     mov dx, word [bp+012h]                    ; 8b 56 12
     xor dh, dh                                ; 30 f6
     cmp ax, dx                                ; 39 d0
-    je short 041e0h                           ; 74 29
+    je short 041e1h                           ; 74 29
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 61 d7
+    call 01923h                               ; e8 60 d7
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -5829,21 +5829,21 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     push 0034ch                               ; 68 4c 03
     push 00358h                               ; 68 58 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 8c d7
+    call 01966h                               ; e8 8b d7
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04526h                           ; e9 46 03
+    jmp near 04527h                           ; e9 46 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe short 0425fh                         ; 77 74
+    jnbe short 04260h                         ; 77 74
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 04107h                            ; bf 07 41
+    mov di, 04108h                            ; bf 08 41
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04124h]               ; 2e 8b 85 24 41
+    mov ax, word [cs:di+04125h]               ; 2e 8b 85 25 41
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
@@ -5856,18 +5856,18 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     xor bh, bh                                ; 30 ff
     add bx, bx                                ; 01 db
     cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00
-    je short 0422ah                           ; 74 09
+    je short 0422bh                           ; 74 09
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     call word [word bx+00076h]                ; ff 97 76 00
-    jmp near 0443ah                           ; e9 0d 02
+    jmp near 0443bh                           ; e9 0d 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 0452eh                           ; e9 f6 02
+    jmp near 0452fh                           ; e9 f6 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 0f d4
+    call 01650h                               ; e8 0e d4
     mov cl, al                                ; 88 c1
     xor ah, ah                                ; 30 e4
     sal ax, 008h                              ; c1 e0 08
@@ -5876,11 +5876,11 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 06 d4
+    call 0165eh                               ; e8 05 d4
     test cl, cl                               ; 84 c9
-    je short 042bch                           ; 74 60
-    jmp near 04542h                           ; e9 e3 02
-    jmp near 04506h                           ; e9 a4 02
+    je short 042bdh                           ; 74 60
+    jmp near 04543h                           ; e9 e3 02
+    jmp near 04507h                           ; e9 a4 02
     mov es, [bp-008h]                         ; 8e 46 f8
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
     mov dx, word [es:si+012h]                 ; 26 8b 54 12
@@ -5904,20 +5904,20 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     xor ch, ch                                ; 30 ed
     mov word [bp-00ah], cx                    ; 89 4e f6
     test cx, cx                               ; 85 c9
-    je short 042cah                           ; 74 1e
+    je short 042cbh                           ; 74 1e
     cmp di, word [bp-010h]                    ; 3b 7e f0
-    jc short 042b9h                           ; 72 08
+    jc short 042bah                           ; 72 08
     cmp ax, dx                                ; 39 d0
-    jnc short 042b9h                          ; 73 04
+    jnc short 042bah                          ; 73 04
     cmp si, bx                                ; 39 de
-    jc short 042bfh                           ; 72 06
-    jmp near 04526h                           ; e9 6a 02
-    jmp near 0443eh                           ; e9 7f 01
+    jc short 042c0h                           ; 72 06
+    jmp near 04527h                           ; e9 6a 02
+    jmp near 0443fh                           ; e9 7f 01
     mov dx, word [bp+016h]                    ; 8b 56 16
     shr dx, 008h                              ; c1 ea 08
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jne short 042cdh                          ; 75 03
-    jmp near 0443ah                           ; e9 6d 01
+    jne short 042ceh                          ; 75 03
+    jmp near 0443bh                           ; e9 6d 01
     mov dx, word [bp+010h]                    ; 8b 56 10
     shr dx, 004h                              ; c1 ea 04
     mov cx, word [bp+006h]                    ; 8b 4e 06
@@ -5928,13 +5928,13 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     mov word [bp-01eh], dx                    ; 89 56 e2
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 95 5c
+    call 09f80h                               ; e8 94 5c
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
     adc dx, bx                                ; 11 da
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 88 5c
+    call 09f80h                               ; e8 87 5c
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-010h]                    ; 8b 46 f0
     dec ax                                    ; 48
@@ -5969,7 +5969,7 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     mov cx, strict word 0000ch                ; b9 0c 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 09ff0h                               ; e8 a1 5c
+    call 09ff0h                               ; e8 a0 5c
     mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
     add ax, si                                ; 01 f0
@@ -6019,7 +6019,7 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 043d1h                               ; e2 fa
+    loop 043d2h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
     push ax                                   ; 50
@@ -6035,11 +6035,11 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     mov word [es:bx+01eh], strict word 00000h ; 26 c7 47 1e 00 00
     mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00
     test al, al                               ; 84 c0
-    je short 0443ah                           ; 74 37
+    je short 0443bh                           ; 74 37
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 15 d5
+    call 01923h                               ; e8 14 d5
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6049,19 +6049,19 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     push 0034ch                               ; 68 4c 03
     push 0038eh                               ; 68 8e 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 41 d5
+    call 01966h                               ; e8 40 d5
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 002h                               ; 80 cc 02
     mov word [bp+016h], ax                    ; 89 46 16
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 04531h                           ; e9 f7 00
+    jmp near 04532h                           ; e9 f7 00
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 15 d2
+    call 0165eh                               ; e8 14 d2
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6109,41 +6109,41 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     mov dl, byte [es:si+001h]                 ; 26 8a 54 01
     mov word [bp+010h], ax                    ; 89 46 10
     cmp dl, 003h                              ; 80 fa 03
-    je short 044e0h                           ; 74 1a
+    je short 044e1h                           ; 74 1a
     cmp dl, 002h                              ; 80 fa 02
-    je short 044dch                           ; 74 11
+    je short 044ddh                           ; 74 11
     cmp dl, 001h                              ; 80 fa 01
-    jne short 044e4h                          ; 75 14
+    jne short 044e5h                          ; 75 14
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor al, al                                ; 30 c0
     or AL, strict byte 002h                   ; 0c 02
     mov word [bp+010h], ax                    ; 89 46 10
-    jmp short 044e4h                          ; eb 08
+    jmp short 044e5h                          ; eb 08
     or AL, strict byte 004h                   ; 0c 04
-    jmp short 044d7h                          ; eb f7
+    jmp short 044d8h                          ; eb f7
     or AL, strict byte 005h                   ; 0c 05
-    jmp short 044d7h                          ; eb f3
+    jmp short 044d8h                          ; eb f3
     mov es, [bp-008h]                         ; 8e 46 f8
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jc short 044f1h                           ; 72 03
-    jmp near 0443ah                           ; e9 49 ff
+    jc short 044f2h                           ; 72 03
+    jmp near 0443bh                           ; e9 49 ff
     mov word [bp+008h], 0efc7h                ; c7 46 08 c7 ef
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
-    jmp short 044eeh                          ; eb f1
+    jmp short 044efh                          ; eb f1
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 0443eh                           ; e9 38 ff
+    jmp near 0443fh                           ; e9 38 ff
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 12 d4
+    call 01923h                               ; e8 11 d4
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0034ch                               ; 68 4c 03
     push 003afh                               ; 68 af 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 43 d4
+    call 01966h                               ; e8 42 d4
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -6154,16 +6154,16 @@ _int13_cdemu:                                ; 0xf4160 LB 0x442
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 1c d1
+    call 0165eh                               ; e8 1b d1
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 0444dh                           ; e9 04 ff
+    jmp near 0444eh                           ; e9 04 ff
     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, 046h, 0c5h
-    db  04ah, 04dh, 046h, 090h, 046h, 042h, 046h, 090h, 046h, 042h, 046h, 090h, 046h, 0c5h, 04ah, 090h
-    db  046h, 090h, 046h, 0c5h, 04ah, 0c5h, 04ah, 0c5h, 04ah, 0c5h, 04ah, 0c5h, 04ah, 074h, 046h, 0c5h
-    db  04ah, 090h, 046h, 07dh, 046h, 0ach, 046h, 042h, 046h, 0ach, 046h, 0eeh, 047h, 089h, 048h, 0ach
-    db  046h, 0b1h, 048h, 0dfh, 04ah, 0e7h, 04ah, 090h, 046h
-_int13_cdrom:                                ; 0xf45a2 LB 0x57d
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 091h, 046h, 0c6h
+    db  04ah, 04eh, 046h, 091h, 046h, 043h, 046h, 091h, 046h, 043h, 046h, 091h, 046h, 0c6h, 04ah, 091h
+    db  046h, 091h, 046h, 0c6h, 04ah, 0c6h, 04ah, 0c6h, 04ah, 0c6h, 04ah, 0c6h, 04ah, 075h, 046h, 0c6h
+    db  04ah, 091h, 046h, 07eh, 046h, 0adh, 046h, 043h, 046h, 0adh, 046h, 0efh, 047h, 08ah, 048h, 0adh
+    db  046h, 0b2h, 048h, 0e0h, 04ah, 0e8h, 04ah, 091h, 046h
+_int13_cdrom:                                ; 0xf45a3 LB 0x57d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6171,20 +6171,20 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     sub sp, strict byte 0002ch                ; 83 ec 2c
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b9 d0
+    call 0166ch                               ; e8 b8 d0
     mov word [bp-016h], ax                    ; 89 46 ea
     mov si, 00122h                            ; be 22 01
     mov word [bp-01eh], ax                    ; 89 46 e2
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 97 d0
+    call 0165eh                               ; e8 96 d0
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 045d6h                           ; 72 05
+    jc short 045d7h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 045f4h                           ; 72 1e
+    jc short 045f5h                           ; 72 1e
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6194,9 +6194,9 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     push 003dfh                               ; 68 df 03
     push 003ebh                               ; 68 eb 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 78 d3
+    call 01966h                               ; e8 77 d3
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04afdh                           ; e9 09 05
+    jmp near 04afeh                           ; e9 09 05
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     mov es, [bp-01eh]                         ; 8e 46 e2
@@ -6205,36 +6205,36 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov dl, byte [es:bx+00114h]               ; 26 8a 97 14 01
     mov byte [bp-006h], dl                    ; 88 56 fa
     cmp dl, 010h                              ; 80 fa 10
-    jc short 0461dh                           ; 72 10
+    jc short 0461eh                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 003dfh                               ; 68 df 03
     push 00416h                               ; 68 16 04
-    jmp short 045e9h                          ; eb cc
+    jmp short 045eah                          ; eb cc
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe short 04690h                         ; 77 68
+    jnbe short 04691h                         ; 77 68
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 04549h                            ; bf 49 45
+    mov di, 0454ah                            ; bf 4a 45
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04566h]               ; 2e 8b 85 66 45
+    mov ax, word [cs:di+04567h]               ; 2e 8b 85 67 45
     mov bx, word [bp+018h]                    ; 8b 5e 18
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 04b05h                           ; e9 b8 04
+    jmp near 04b06h                           ; e9 b8 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 fa cf
+    call 01650h                               ; e8 f9 cf
     mov cl, al                                ; 88 c1
     xor ah, ah                                ; 30 e4
     sal ax, 008h                              ; c1 e0 08
@@ -6243,29 +6243,29 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 f1 cf
+    call 0165eh                               ; e8 f0 cf
     test cl, cl                               ; 84 c9
-    je short 0468dh                           ; 74 1c
-    jmp near 04b19h                           ; e9 a5 04
+    je short 0468eh                           ; 74 1c
+    jmp near 04b1ah                           ; e9 a5 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 04b08h                           ; e9 8b 04
+    jmp near 04b09h                           ; e9 8b 04
     mov word [bp+012h], 0aa55h                ; c7 46 12 55 aa
     or bh, 030h                               ; 80 cf 30
     mov word [bp+018h], bx                    ; 89 5e 18
     mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
-    jmp near 04ac9h                           ; e9 39 04
+    jmp near 04acah                           ; e9 39 04
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 88 d2
+    call 01923h                               ; e8 87 d2
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 003dfh                               ; 68 df 03
     push 00333h                               ; 68 33 03
     push strict byte 00004h                   ; 6a 04
-    jmp short 046ech                          ; eb 40
+    jmp short 046edh                          ; eb 40
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [bp-014h], bx                    ; 89 5e ec
@@ -6280,16 +6280,16 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
     mov word [bp-022h], ax                    ; 89 46 de
     or ax, word [bp-00eh]                     ; 0b 46 f2
-    je short 046f5h                           ; 74 18
+    je short 046f6h                           ; 74 18
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 003dfh                               ; 68 df 03
     push 00448h                               ; 68 48 04
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 77 d2
+    call 01966h                               ; e8 76 d2
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 04afdh                           ; e9 08 04
+    jmp near 04afeh                           ; e9 08 04
     mov es, [bp-010h]                         ; 8e 46 f0
     mov bx, word [bp-014h]                    ; 8b 5e ec
     mov ax, word [es:bx+008h]                 ; 26 8b 47 08
@@ -6300,15 +6300,15 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     shr ax, 008h                              ; c1 e8 08
     mov word [bp-012h], ax                    ; 89 46 ee
     cmp ax, strict word 00044h                ; 3d 44 00
-    je short 0471ch                           ; 74 05
+    je short 0471dh                           ; 74 05
     cmp ax, strict word 00047h                ; 3d 47 00
-    jne short 0471fh                          ; 75 03
-    jmp near 04ac5h                           ; e9 a6 03
+    jne short 04720h                          ; 75 03
+    jmp near 04ac6h                           ; e9 a6 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-030h]                         ; 8d 46 d0
-    call 09ff0h                               ; e8 c4 58
+    call 09ff0h                               ; e8 c3 58
     mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, word [bp-022h]                    ; 8b 56 de
@@ -6340,7 +6340,7 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov cx, strict word 0000bh                ; b9 0b 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0477ch                               ; e2 fa
+    loop 0477dh                               ; e2 fa
     push dx                                   ; 52
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
@@ -6358,16 +6358,16 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov cx, strict word 0000bh                ; b9 0b 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 047abh                               ; e2 fa
+    loop 047ach                               ; e2 fa
     mov es, [bp-010h]                         ; 8e 46 f0
     mov bx, word [bp-014h]                    ; 8b 5e ec
     mov word [es:bx+002h], ax                 ; 26 89 47 02
     cmp byte [bp-018h], 000h                  ; 80 7e e8 00
-    je short 04814h                           ; 74 53
+    je short 04815h                           ; 74 53
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 57 d1
+    call 01923h                               ; e8 56 d1
     mov al, byte [bp-018h]                    ; 8a 46 e8
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6375,14 +6375,14 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     push 003dfh                               ; 68 df 03
     push 00471h                               ; 68 71 04
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 86 d1
+    call 01966h                               ; e8 85 d1
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 04b05h                           ; e9 17 03
+    jmp near 04b06h                           ; e9 17 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe short 0485ch                         ; 77 69
+    jnbe short 0485dh                         ; 77 69
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -6391,21 +6391,21 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     add di, ax                                ; 01 c7
     mov al, byte [es:di+025h]                 ; 26 8a 45 25
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 04872h                           ; 74 67
+    je short 04873h                           ; 74 67
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 0484ch                           ; 74 3c
+    je short 0484dh                           ; 74 3c
     test bx, bx                               ; 85 db
-    je short 04817h                           ; 74 03
-    jmp near 04ac5h                           ; e9 ae 02
+    je short 04818h                           ; 74 03
+    jmp near 04ac6h                           ; e9 ae 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 0482dh                          ; 75 12
+    jne short 0482eh                          ; 75 12
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b4h                               ; 80 cc b4
     mov word [bp+018h], ax                    ; 89 46 18
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 04b05h                           ; e9 d8 02
+    jmp near 04b06h                           ; e9 d8 02
     mov dl, byte [bp-006h]                    ; 8a 56 fa
     xor dh, dh                                ; 30 f6
     imul dx, dx, strict byte 0001ch           ; 6b d2 1c
@@ -6418,14 +6418,14 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp short 04814h                          ; eb c8
+    jmp short 04815h                          ; eb c8
     test al, al                               ; 84 c0
-    jne short 0485fh                          ; 75 0f
+    jne short 04860h                          ; 75 0f
     or bh, 0b0h                               ; 80 cf b0
     mov word [bp+018h], bx                    ; 89 5e 18
     mov byte [bp+018h], al                    ; 88 46 18
-    jmp near 04b08h                           ; e9 ac 02
-    jmp near 04afdh                           ; e9 9e 02
+    jmp near 04b09h                           ; e9 ac 02
+    jmp near 04afeh                           ; e9 9e 02
     mov dl, byte [bp-006h]                    ; 8a 56 fa
     xor dh, dh                                ; 30 f6
     imul dx, dx, strict byte 0001ch           ; 6b d2 1c
@@ -6435,15 +6435,15 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     add si, dx                                ; 01 d6
     mov byte [es:si+025h], al                 ; 26 88 44 25
     test al, al                               ; 84 c0
-    jne short 04884h                          ; 75 0e
+    jne short 04885h                          ; 75 0e
     xor ah, ah                                ; 30 e4
     mov dx, word [bp+018h]                    ; 8b 56 18
     xor dl, dl                                ; 30 d2
     or dx, ax                                 ; 09 c2
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 04814h                          ; eb 90
+    jmp short 04815h                          ; eb 90
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 04878h                          ; eb ef
+    jmp short 04879h                          ; eb ef
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -6451,14 +6451,14 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     add si, ax                                ; 01 c6
     mov al, byte [es:si+025h]                 ; 26 8a 44 25
     test al, al                               ; 84 c0
-    je short 048a4h                           ; 74 06
+    je short 048a5h                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 04677h                           ; e9 d3 fd
-    je short 048cdh                           ; 74 27
+    jmp near 04678h                           ; e9 d3 fd
+    je short 048ceh                           ; 74 27
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 04b05h                           ; e9 54 02
+    jmp near 04b06h                           ; e9 54 02
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
     mov bx, dx                                ; 89 d3
@@ -6468,10 +6468,10 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov ax, word [es:di]                      ; 26 8b 05
     mov word [bp-00ch], ax                    ; 89 46 f4
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jnc short 048d0h                          ; 73 05
-    jmp short 0485ch                          ; eb 8f
-    jmp near 04ac5h                           ; e9 f5 01
-    jc short 04934h                           ; 72 62
+    jnc short 048d1h                          ; 73 05
+    jmp short 0485dh                          ; eb 8f
+    jmp near 04ac6h                           ; e9 f5 01
+    jc short 04935h                           ; 72 62
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -6495,8 +6495,8 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov word [es:di+014h], strict word 0ffffh ; 26 c7 45 14 ff ff
     mov word [es:di+016h], strict word 0ffffh ; 26 c7 45 16 ff ff
     cmp word [bp-00ch], strict byte 0001eh    ; 83 7e f4 1e
-    jnc short 0493dh                          ; 73 03
-    jmp near 049f9h                           ; e9 bc 00
+    jnc short 0493eh                          ; 73 03
+    jmp near 049fah                           ; e9 bc 00
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
     mov ax, word [bp-016h]                    ; 8b 46 ea
@@ -6539,25 +6539,25 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov byte [es:si+00242h], 011h             ; 26 c6 84 42 02 11
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
-    jmp short 049d9h                          ; eb 05
+    jmp short 049dah                          ; eb 05
     cmp ch, 00fh                              ; 80 fd 0f
-    jnc short 049efh                          ; 73 16
+    jnc short 049f0h                          ; 73 16
     mov al, ch                                ; 88 e8
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 01650h                               ; e8 67 cc
+    call 01650h                               ; e8 66 cc
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 049d4h                          ; eb e5
+    jmp short 049d5h                          ; eb e5
     neg cl                                    ; f6 d9
     mov es, [bp-01eh]                         ; 8e 46 e2
     mov byte [es:si+00243h], cl               ; 26 88 8c 43 02
     cmp word [bp-00ch], strict byte 00042h    ; 83 7e f4 42
-    jnc short 04a02h                          ; 73 03
-    jmp near 04ac5h                           ; e9 c3 00
+    jnc short 04a03h                          ; 73 03
+    jmp near 04ac6h                           ; e9 c3 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -6576,7 +6576,7 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov word [es:bx+020h], strict word 00024h ; 26 c7 47 20 24 00
     mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
     test al, al                               ; 84 c0
-    jne short 04a4ah                          ; 75 0c
+    jne short 04a4bh                          ; 75 0c
     mov word [es:bx+024h], 05349h             ; 26 c7 47 24 49 53
     mov word [es:bx+026h], 02041h             ; 26 c7 47 26 41 20
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6585,7 +6585,7 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov word [es:bx+02ch], 02020h             ; 26 c7 47 2c 20 20
     mov word [es:bx+02eh], 02020h             ; 26 c7 47 2e 20 20
     test al, al                               ; 84 c0
-    jne short 04a7fh                          ; 75 16
+    jne short 04a80h                          ; 75 16
     mov word [es:bx+030h], dx                 ; 26 89 57 30
     mov word [es:bx+032h], strict word 00000h ; 26 c7 47 32 00 00
     mov word [es:bx+034h], strict word 00000h ; 26 c7 47 34 00 00
@@ -6600,9 +6600,9 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     mov word [es:bx+03eh], strict word 00000h ; 26 c7 47 3e 00 00
     xor al, al                                ; 30 c0
     mov AH, strict byte 01eh                  ; b4 1e
-    jmp short 04aaah                          ; eb 05
+    jmp short 04aabh                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04abch                          ; 73 12
+    jnc short 04abdh                          ; 73 12
     mov dl, ah                                ; 88 e2
     xor dh, dh                                ; 30 f6
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6611,7 +6611,7 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     add al, byte [es:si]                      ; 26 02 04
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 04aa5h                          ; eb e9
+    jmp short 04aa6h                          ; eb e9
     neg al                                    ; f6 d8
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:bx+041h], al                 ; 26 88 47 41
@@ -6619,7 +6619,7 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 8a cb
+    call 0165eh                               ; e8 89 cb
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6628,16 +6628,16 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     retn                                      ; c3
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 04b19h                          ; eb 32
+    jmp short 04b1ah                          ; eb 32
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je short 04ac5h                           ; 74 d9
+    je short 04ac6h                           ; 74 d9
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 04afdh                           ; 72 0c
-    jbe short 04ac5h                          ; 76 d2
+    jc short 04afeh                           ; 72 0c
+    jbe short 04ac6h                          ; 76 d2
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 04afdh                           ; 72 05
+    jc short 04afeh                           ; 72 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 04ac5h                          ; 76 c8
+    jbe short 04ac6h                          ; 76 c8
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -6647,44 +6647,44 @@ _int13_cdrom:                                ; 0xf45a2 LB 0x57d
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 45 cb
+    call 0165eh                               ; e8 44 cb
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp short 04ad8h                          ; eb b9
-print_boot_device_:                          ; 0xf4b1f LB 0x4b
+    jmp short 04ad9h                          ; eb b9
+print_boot_device_:                          ; 0xf4b20 LB 0x4b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 04b2ch                           ; 74 05
+    je short 04b2dh                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 04b46h                          ; eb 1a
+    jmp short 04b47h                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 04b35h                           ; 74 05
+    je short 04b36h                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 04b46h                          ; eb 11
+    jmp short 04b47h                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04b3eh                          ; 75 04
+    jne short 04b3fh                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 04b46h                          ; eb 08
+    jmp short 04b47h                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 04b64h                           ; 74 21
+    je short 04b65h                           ; 74 21
     mov dx, strict word 00001h                ; ba 01 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 d2 cd
+    call 01923h                               ; e8 d1 cd
     imul dx, dx, strict byte 0000ah           ; 6b d2 0a
     add dx, 00dc6h                            ; 81 c2 c6 0d
     push dx                                   ; 52
     push 00494h                               ; 68 94 04
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 05 ce
+    call 01966h                               ; e8 04 ce
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-print_boot_failure_:                         ; 0xf4b6a LB 0x96
+print_boot_failure_:                         ; 0xf4b6b LB 0x96
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6695,59 +6695,59 @@ print_boot_failure_:                         ; 0xf4b6a LB 0x96
     xor ch, ch                                ; 30 ed
     mov si, cx                                ; 89 ce
     test al, al                               ; 84 c0
-    je short 04b9ah                           ; 74 1b
+    je short 04b9bh                           ; 74 1b
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 99 cd
+    call 01923h                               ; e8 98 cd
     push 00ddah                               ; 68 da 0d
     push 004a8h                               ; 68 a8 04
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 d1 cd
+    call 01966h                               ; e8 d0 cd
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 04bdeh                          ; eb 44
+    jmp short 04bdfh                          ; eb 44
     test ah, ah                               ; 84 e4
-    je short 04baeh                           ; 74 10
+    je short 04bafh                           ; 74 10
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 7a cd
+    call 01923h                               ; e8 79 cd
     push 00de4h                               ; 68 e4 0d
-    jmp short 04b8dh                          ; eb df
+    jmp short 04b8eh                          ; eb df
     test bl, 080h                             ; f6 c3 80
-    je short 04bc4h                           ; 74 11
+    je short 04bc5h                           ; 74 11
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 65 cd
+    call 01923h                               ; e8 64 cd
     push si                                   ; 56
     push 00dd0h                               ; 68 d0 0d
-    jmp short 04bd3h                          ; eb 0f
+    jmp short 04bd4h                          ; eb 0f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 54 cd
+    call 01923h                               ; e8 53 cd
     push si                                   ; 56
     push 00dc6h                               ; 68 c6 0d
     push 004bdh                               ; 68 bd 04
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 8b cd
+    call 01966h                               ; e8 8a cd
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04bf8h                          ; 75 14
+    jne short 04bf9h                          ; 75 14
     test dl, dl                               ; 84 d2
-    jne short 04bedh                          ; 75 05
+    jne short 04beeh                          ; 75 05
     push 004d5h                               ; 68 d5 04
-    jmp short 04bf0h                          ; eb 03
+    jmp short 04bf1h                          ; eb 03
     push 004ffh                               ; 68 ff 04
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 71 cd
+    call 01966h                               ; e8 70 cd
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-print_cdromboot_failure_:                    ; 0xf4c00 LB 0x27
+print_cdromboot_failure_:                    ; 0xf4c01 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -6757,11 +6757,11 @@ print_cdromboot_failure_:                    ; 0xf4c00 LB 0x27
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 10 cd
+    call 01923h                               ; e8 0f cd
     push dx                                   ; 52
     push 00534h                               ; 68 34 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 4a cd
+    call 01966h                               ; e8 49 cd
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -6769,7 +6769,7 @@ print_cdromboot_failure_:                    ; 0xf4c00 LB 0x27
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf4c27 LB 0x271
+_int19_function:                             ; 0xf4c28 LB 0x271
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6777,56 +6777,56 @@ _int19_function:                             ; 0xf4c27 LB 0x271
     sub sp, strict byte 0000eh                ; 83 ec 0e
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 34 ca
+    call 0166ch                               ; e8 33 ca
     mov bx, ax                                ; 89 c3
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     mov ax, strict word 0003dh                ; b8 3d 00
-    call 016ach                               ; e8 65 ca
+    call 016ach                               ; e8 64 ca
     mov dl, al                                ; 88 c2
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00038h                ; b8 38 00
-    call 016ach                               ; e8 5b ca
+    call 016ach                               ; e8 5a ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sal ax, 004h                              ; c1 e0 04
     mov si, dx                                ; 89 d6
     or si, ax                                 ; 09 c6
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016ach                               ; e8 4a ca
+    call 016ach                               ; e8 49 ca
     and AL, strict byte 00fh                  ; 24 0f
     xor ah, ah                                ; 30 e4
     sal ax, 00ch                              ; c1 e0 0c
     or si, ax                                 ; 09 c6
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01650h                               ; e8 dd c9
+    call 01650h                               ; e8 dc c9
     test al, al                               ; 84 c0
-    je short 04c83h                           ; 74 0c
+    je short 04c84h                           ; 74 0c
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01650h                               ; e8 d1 c9
+    call 01650h                               ; e8 d0 c9
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04c99h                          ; 75 10
+    jne short 04c9ah                          ; 75 10
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016ach                               ; e8 1d ca
+    call 016ach                               ; e8 1c ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
-    call 07d65h                               ; e8 cc 30
+    call 07d66h                               ; e8 cc 30
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04ca2h                          ; 75 03
+    jne short 04ca3h                          ; 75 03
     shr si, 004h                              ; c1 ee 04
     cmp byte [bp+004h], 003h                  ; 80 7e 04 03
-    jne short 04cabh                          ; 75 03
+    jne short 04cach                          ; 75 03
     shr si, 008h                              ; c1 ee 08
     cmp byte [bp+004h], 004h                  ; 80 7e 04 04
-    jne short 04cb4h                          ; 75 03
+    jne short 04cb5h                          ; 75 03
     shr si, 00ch                              ; c1 ee 0c
     cmp si, strict byte 00010h                ; 83 fe 10
-    jnc short 04cbdh                          ; 73 04
+    jnc short 04cbeh                          ; 73 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -6835,48 +6835,48 @@ _int19_function:                             ; 0xf4c27 LB 0x271
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 50 cc
+    call 01923h                               ; e8 4f cc
     push si                                   ; 56
     mov al, byte [bp+004h]                    ; 8a 46 04
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 00554h                               ; 68 54 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 84 cc
+    call 01966h                               ; e8 83 cc
     add sp, strict byte 00008h                ; 83 c4 08
     and si, strict byte 0000fh                ; 83 e6 0f
     cmp si, strict byte 00002h                ; 83 fe 02
-    jc short 04cfbh                           ; 72 0e
-    jbe short 04d0ah                          ; 76 1b
+    jc short 04cfch                           ; 72 0e
+    jbe short 04d0bh                          ; 76 1b
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 04d28h                           ; 74 34
+    je short 04d29h                           ; 74 34
     cmp si, strict byte 00003h                ; 83 fe 03
-    je short 04d1eh                           ; 74 25
-    jmp short 04d57h                          ; eb 5c
+    je short 04d1fh                           ; 74 25
+    jmp short 04d58h                          ; eb 5c
     cmp si, strict byte 00001h                ; 83 fe 01
-    jne short 04d57h                          ; 75 57
+    jne short 04d58h                          ; 75 57
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-008h], al                    ; 88 46 f8
-    jmp short 04d6fh                          ; eb 65
+    jmp short 04d70h                          ; eb 65
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 01650h                               ; e8 3d c9
+    call 01650h                               ; e8 3c c9
     add AL, strict byte 080h                  ; 04 80
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
-    jmp short 04d6fh                          ; eb 51
+    jmp short 04d70h                          ; eb 51
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
-    jmp short 04d32h                          ; eb 0a
+    jmp short 04d33h                          ; eb 0a
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04d6fh                           ; 74 3d
-    call 03d2ch                               ; e8 f7 ef
+    je short 04d70h                           ; 74 3d
+    call 03d2ch                               ; e8 f6 ef
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 04d5eh                           ; 74 23
-    call 04c00h                               ; e8 c2 fe
+    je short 04d5fh                           ; 74 23
+    call 04c01h                               ; e8 c2 fe
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6886,65 +6886,65 @@ _int19_function:                             ; 0xf4c27 LB 0x271
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov cx, strict word 00001h                ; b9 01 00
-    call 04b6ah                               ; e8 13 fe
+    call 04b6bh                               ; e8 13 fe
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 04e91h                           ; e9 33 01
+    jmp near 04e92h                           ; e9 33 01
     mov dx, 00372h                            ; ba 72 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 0166ch                               ; e8 05 c9
+    call 0166ch                               ; e8 04 c9
     mov di, ax                                ; 89 c7
     shr bx, 008h                              ; c1 eb 08
     mov byte [bp-006h], bl                    ; 88 5e fa
     cmp byte [bp-00ah], 001h                  ; 80 7e f6 01
-    jne short 04dcah                          ; 75 55
+    jne short 04dcbh                          ; 75 55
     xor si, si                                ; 31 f6
     mov ax, 0e200h                            ; b8 00 e2
     mov es, ax                                ; 8e c0
     cmp word [es:si], 0aa55h                  ; 26 81 3c 55 aa
-    jne short 04d3eh                          ; 75 bb
+    jne short 04d3fh                          ; 75 bb
     mov cx, ax                                ; 89 c1
     mov si, word [es:si+01ah]                 ; 26 8b 74 1a
     cmp word [es:si+002h], 0506eh             ; 26 81 7c 02 6e 50
-    jne short 04d3eh                          ; 75 ad
+    jne short 04d3fh                          ; 75 ad
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04d3eh                          ; 75 a6
+    jne short 04d3fh                          ; 75 a6
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
     mov dx, word [es:di]                      ; 26 8b 15
     mov ax, word [es:di+002h]                 ; 26 8b 45 02
     cmp ax, 06568h                            ; 3d 68 65
-    jne short 04dcch                          ; 75 24
+    jne short 04dcdh                          ; 75 24
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04dcch                          ; 75 1e
+    jne short 04dcdh                          ; 75 1e
     mov bl, byte [bp-006h]                    ; 8a 5e fa
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-00ah]                    ; 8a 56 f6
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 04b1fh                               ; e8 5f fd
+    call 04b20h                               ; e8 5f fd
     mov word [bp-012h], strict word 00006h    ; c7 46 ee 06 00
     mov word [bp-010h], cx                    ; 89 4e f0
-    jmp short 04debh                          ; eb 21
-    jmp short 04df1h                          ; eb 25
+    jmp short 04dech                          ; eb 21
+    jmp short 04df2h                          ; eb 25
     mov bl, byte [bp-006h]                    ; 8a 5e fa
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-00ah]                    ; 8a 56 f6
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 04b1fh                               ; e8 41 fd
+    call 04b20h                               ; e8 41 fd
     sti                                       ; fb
     mov word [bp-010h], cx                    ; 89 4e f0
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
     mov word [bp-012h], ax                    ; 89 46 ee
     call far [bp-012h]                        ; ff 5e ee
-    jmp near 04d3eh                           ; e9 4d ff
+    jmp near 04d3fh                           ; e9 4d ff
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 04e1eh                          ; 75 27
+    jne short 04e1fh                          ; 75 27
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04e1eh                          ; 75 21
+    jne short 04e1fh                          ; 75 21
     mov di, 007c0h                            ; bf c0 07
     mov es, di                                ; 8e c7
     mov dl, byte [bp-006h]                    ; 8a 56 fa
@@ -6957,32 +6957,32 @@ _int19_function:                             ; 0xf4c27 LB 0x271
     mov ax, strict word 00000h                ; b8 00 00
     sbb ax, strict byte 00000h                ; 83 d8 00
     test ax, ax                               ; 85 c0
-    je short 04e1eh                           ; 74 03
-    jmp near 04d3eh                           ; e9 20 ff
+    je short 04e1fh                           ; 74 03
+    jmp near 04d3fh                           ; e9 20 ff
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 04e28h                           ; 74 04
+    je short 04e29h                           ; 74 04
     xor bl, bl                                ; 30 db
-    jmp short 04e2ah                          ; eb 02
+    jmp short 04e2bh                          ; eb 02
     mov BL, strict byte 001h                  ; b3 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04e32h                           ; 74 02
+    je short 04e33h                           ; 74 02
     mov BL, strict byte 001h                  ; b3 01
     xor dx, dx                                ; 31 d2
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 33 c8
+    call 0166ch                               ; e8 32 c8
     mov si, ax                                ; 89 c6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 29 c8
+    call 0166ch                               ; e8 28 c8
     cmp si, ax                                ; 39 c6
-    je short 04e58h                           ; 74 11
+    je short 04e59h                           ; 74 11
     test bl, bl                               ; 84 db
-    jne short 04e70h                          ; 75 25
+    jne short 04e71h                          ; 75 25
     mov dx, 001feh                            ; ba fe 01
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 19 c8
+    call 0166ch                               ; e8 18 c8
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04e70h                           ; 74 18
+    je short 04e71h                           ; 74 18
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6992,14 +6992,14 @@ _int19_function:                             ; 0xf4c27 LB 0x271
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor cx, cx                                ; 31 c9
-    jmp near 04d54h                           ; e9 e4 fe
+    jmp near 04d55h                           ; e9 e4 fe
     mov bl, byte [bp-006h]                    ; 8a 5e fa
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-00ah]                    ; 8a 56 f6
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 04b1fh                               ; e8 9d fc
+    call 04b20h                               ; e8 9d fc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
@@ -7012,18 +7012,18 @@ _int19_function:                             ; 0xf4c27 LB 0x271
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4e98 LB 0x13
+keyboard_panic_:                             ; 0xf4e99 LB 0x13
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push ax                                   ; 50
     push 00574h                               ; 68 74 05
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 c2 ca
+    call 01966h                               ; e8 c1 ca
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4eab LB 0x26a
+_keyboard_init:                              ; 0xf4eac LB 0x26a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov AL, strict byte 0aah                  ; b0 aa
@@ -7035,44 +7035,44 @@ _keyboard_init:                              ; 0xf4eab LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04eceh                           ; 74 0d
+    je short 04ecfh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04eceh                          ; 76 08
+    jbe short 04ecfh                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04eb7h                          ; eb e9
+    jmp short 04eb8h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ed7h                          ; 75 05
+    jne short 04ed8h                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04e98h                               ; e8 c1 ff
+    call 04e99h                               ; e8 c1 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04ef1h                          ; 75 0d
+    jne short 04ef2h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ef1h                          ; 76 08
+    jbe short 04ef2h                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04edah                          ; eb e9
+    jmp short 04edbh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04efbh                          ; 75 06
+    jne short 04efch                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04e98h                               ; e8 9d ff
+    call 04e99h                               ; e8 9d ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, strict word 00055h                ; 3d 55 00
-    je short 04f0ch                           ; 74 06
+    je short 04f0dh                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04e98h                               ; e8 8c ff
+    call 04e99h                               ; e8 8c ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7082,44 +7082,44 @@ _keyboard_init:                              ; 0xf4eab LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04f2ch                           ; 74 0d
+    je short 04f2dh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f2ch                          ; 76 08
+    jbe short 04f2dh                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f15h                          ; eb e9
+    jmp short 04f16h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f36h                          ; 75 06
+    jne short 04f37h                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04e98h                               ; e8 62 ff
+    call 04e99h                               ; e8 62 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04f50h                          ; 75 0d
+    jne short 04f51h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f50h                          ; 76 08
+    jbe short 04f51h                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f39h                          ; eb e9
+    jmp short 04f3ah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f5ah                          ; 75 06
+    jne short 04f5bh                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04e98h                               ; e8 3e ff
+    call 04e99h                               ; e8 3e ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test ax, ax                               ; 85 c0
-    je short 04f6ah                           ; 74 06
+    je short 04f6bh                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04e98h                               ; e8 2e ff
+    call 04e99h                               ; e8 2e ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7129,67 +7129,67 @@ _keyboard_init:                              ; 0xf4eab LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04f8ah                           ; 74 0d
+    je short 04f8bh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f8ah                          ; 76 08
+    jbe short 04f8bh                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f73h                          ; eb e9
+    jmp short 04f74h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f94h                          ; 75 06
+    jne short 04f95h                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04e98h                               ; e8 04 ff
+    call 04e99h                               ; e8 04 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04faeh                          ; 75 0d
+    jne short 04fafh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04faeh                          ; 76 08
+    jbe short 04fafh                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f97h                          ; eb e9
+    jmp short 04f98h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04fb8h                          ; 75 06
+    jne short 04fb9h                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04e98h                               ; e8 e0 fe
+    call 04e99h                               ; e8 e0 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 04fc9h                           ; 74 06
+    je short 04fcah                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04e98h                               ; e8 cf fe
+    call 04e99h                               ; e8 cf fe
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04fdbh                          ; 75 08
+    jne short 04fdch                          ; 75 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fc9h                          ; eb ee
+    jmp short 04fcah                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04ff4h                           ; 74 0e
+    je short 04ff5h                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04ff4h                           ; 74 06
+    je short 04ff5h                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04e98h                               ; e8 a4 fe
+    call 04e99h                               ; e8 a4 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7199,44 +7199,44 @@ _keyboard_init:                              ; 0xf4eab LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05014h                           ; 74 0d
+    je short 05015h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05014h                          ; 76 08
+    jbe short 05015h                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ffdh                          ; eb e9
+    jmp short 04ffeh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0501eh                          ; 75 06
+    jne short 0501fh                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04e98h                               ; e8 7a fe
+    call 04e99h                               ; e8 7a fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05038h                          ; 75 0d
+    jne short 05039h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05038h                          ; 76 08
+    jbe short 05039h                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05021h                          ; eb e9
+    jmp short 05022h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05042h                          ; 75 06
+    jne short 05043h                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04e98h                               ; e8 56 fe
+    call 04e99h                               ; e8 56 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 05053h                           ; 74 06
+    je short 05054h                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04e98h                               ; e8 45 fe
+    call 04e99h                               ; e8 45 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7246,18 +7246,18 @@ _keyboard_init:                              ; 0xf4eab LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05073h                           ; 74 0d
+    je short 05074h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05073h                          ; 76 08
+    jbe short 05074h                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0505ch                          ; eb e9
+    jmp short 0505dh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0507dh                          ; 75 06
+    jne short 0507eh                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04e98h                               ; e8 1b fe
+    call 04e99h                               ; e8 1b fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7267,18 +7267,18 @@ _keyboard_init:                              ; 0xf4eab LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0509dh                           ; 74 0d
+    je short 0509eh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0509dh                          ; 76 08
+    jbe short 0509eh                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05086h                          ; eb e9
+    jmp short 05087h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050a7h                          ; 75 06
+    jne short 050a8h                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04e98h                               ; e8 f1 fd
+    call 04e99h                               ; e8 f1 fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7288,53 +7288,53 @@ _keyboard_init:                              ; 0xf4eab LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 050c7h                           ; 74 0d
+    je short 050c8h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050c7h                          ; 76 08
+    jbe short 050c8h                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050b0h                          ; eb e9
+    jmp short 050b1h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050d1h                          ; 75 06
+    jne short 050d2h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04e98h                               ; e8 c7 fd
+    call 04e99h                               ; e8 c7 fd
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 050ebh                          ; 75 0d
+    jne short 050ech                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050ebh                          ; 76 08
+    jbe short 050ech                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050d4h                          ; eb e9
+    jmp short 050d5h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050f5h                          ; 75 06
+    jne short 050f6h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04e98h                               ; e8 a3 fd
+    call 04e99h                               ; e8 a3 fd
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 05106h                           ; 74 06
+    je short 05107h                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04e98h                               ; e8 92 fd
+    call 04e99h                               ; e8 92 fd
     mov AL, strict byte 0a8h                  ; b0 a8
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
     xor ax, ax                                ; 31 c0
-    call 065afh                               ; e8 9e 14
+    call 065b0h                               ; e8 9e 14
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf5115 LB 0x9e
+enqueue_key_:                                ; 0xf5116 LB 0x9e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -7346,35 +7346,35 @@ enqueue_key_:                                ; 0xf5115 LB 0x9e
     mov bl, dl                                ; 88 d3
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 41 c5
+    call 0166ch                               ; e8 40 c5
     mov di, ax                                ; 89 c7
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 36 c5
+    call 0166ch                               ; e8 35 c5
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 05143h                           ; 72 03
+    jc short 05144h                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 0514bh                          ; 75 04
+    jne short 0514ch                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 05175h                          ; eb 2a
+    jmp short 05176h                          ; eb 2a
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, si                                ; 89 f2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 05 c5
+    call 0165eh                               ; e8 04 c5
     mov bl, byte [bp-00ah]                    ; 8a 5e f6
     xor bh, bh                                ; 30 ff
     lea dx, [si+001h]                         ; 8d 54 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 f7 c4
+    call 0165eh                               ; e8 f6 c4
     mov bx, cx                                ; 89 cb
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 08 c5
+    call 0167ah                               ; e8 07 c5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop di                                    ; 5f
@@ -7384,10 +7384,10 @@ enqueue_key_:                                ; 0xf5115 LB 0x9e
     pop bp                                    ; 5d
     retn                                      ; c3
     db  0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
-    db  01dh, 0f1h, 054h, 0a9h, 052h, 04bh, 052h, 04bh, 052h, 038h, 053h, 022h, 052h, 0bch, 053h, 030h
-    db  054h, 0d7h, 054h, 0b5h, 054h, 0f0h, 052h, 04bh, 052h, 04bh, 052h, 07ah, 053h, 040h, 052h, 010h
-    db  054h, 095h, 054h, 0d0h, 054h
-_int09_function:                             ; 0xf51b3 LB 0x494
+    db  01dh, 0f2h, 054h, 0aah, 052h, 04ch, 052h, 04ch, 052h, 039h, 053h, 023h, 052h, 0bdh, 053h, 031h
+    db  054h, 0d8h, 054h, 0b6h, 054h, 0f1h, 052h, 04ch, 052h, 04ch, 052h, 07bh, 053h, 041h, 052h, 011h
+    db  054h, 096h, 054h, 0d1h, 054h
+_int09_function:                             ; 0xf51b4 LB 0x494
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
@@ -7395,40 +7395,40 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov al, byte [bp+014h]                    ; 8a 46 14
     mov byte [bp-00ah], al                    ; 88 46 f6
     test al, al                               ; 84 c0
-    jne short 051ddh                          ; 75 19
+    jne short 051deh                          ; 75 19
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 54 c7
+    call 01923h                               ; e8 53 c7
     push 00587h                               ; 68 87 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 8f c7
+    call 01966h                               ; e8 8e c7
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 052a3h                           ; e9 c6 00
+    jmp near 052a4h                           ; e9 c6 00
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 6a c4
+    call 01650h                               ; e8 69 c4
     mov byte [bp-010h], al                    ; 88 46 f0
     mov byte [bp-008h], al                    ; 88 46 f8
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 5b c4
+    call 01650h                               ; e8 5a c4
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-00ch], al                    ; 88 46 f4
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 4c c4
+    call 01650h                               ; e8 4b c4
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00012h                ; b9 12 00
-    mov di, 0517eh                            ; bf 7e 51
+    mov di, 0517fh                            ; bf 7f 51
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0518fh]               ; 2e 8b 85 8f 51
+    mov ax, word [cs:di+05190h]               ; 2e 8b 85 90 51
     jmp ax                                    ; ff e0
     xor byte [bp-00eh], 040h                  ; 80 76 f2 40
     mov al, byte [bp-00eh]                    ; 8a 46 f2
@@ -7436,53 +7436,53 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 28 c4
+    call 0165eh                               ; e8 27 c4
     or byte [bp-008h], 040h                   ; 80 4e f8 40
     mov al, byte [bp-008h]                    ; 8a 46 f8
-    jmp near 054c1h                           ; e9 81 02
+    jmp near 054c2h                           ; e9 81 02
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0bfh                  ; 24 bf
     mov byte [bp-008h], al                    ; 88 46 f8
-    jmp near 054c1h                           ; e9 76 02
+    jmp near 054c2h                           ; e9 76 02
     test byte [bp-00ch], 002h                 ; f6 46 f4 02
-    jne short 05284h                          ; 75 33
+    jne short 05285h                          ; 75 33
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 02ah                  ; 3c 2a
-    jne short 0525fh                          ; 75 05
+    jne short 05260h                          ; 75 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 05262h                          ; eb 03
+    jmp short 05263h                          ; eb 03
     mov dx, strict word 00001h                ; ba 01 00
     test byte [bp-00ah], 080h                 ; f6 46 f6 80
-    je short 05271h                           ; 74 09
+    je short 05272h                           ; 74 09
     mov al, dl                                ; 88 d0
     not al                                    ; f6 d0
     and byte [bp-00eh], al                    ; 20 46 f2
-    jmp short 05274h                          ; eb 03
+    jmp short 05275h                          ; eb 03
     or byte [bp-00eh], dl                     ; 08 56 f2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 da c3
+    call 0165eh                               ; e8 d9 c3
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 01dh                  ; 3c 1d
-    je short 05291h                           ; 74 04
+    je short 05292h                           ; 74 04
     and byte [bp-00ch], 0feh                  ; 80 66 f4 fe
     and byte [bp-00ch], 0fdh                  ; 80 66 f4 fd
     mov bl, byte [bp-00ch]                    ; 8a 5e f4
     xor bh, bh                                ; 30 ff
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 bb c3
+    call 0165eh                               ; e8 ba c3
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
     test byte [bp-004h], 001h                 ; f6 46 fc 01
-    jne short 05284h                          ; 75 d5
+    jne short 05285h                          ; 75 d5
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7490,16 +7490,16 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 9a c3
+    call 0165eh                               ; e8 99 c3
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 052d9h                           ; 74 0e
+    je short 052dah                           ; 74 0e
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-00ch], al                    ; 88 46 f4
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 052e8h                          ; eb 0f
+    jmp short 052e9h                          ; eb 0f
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 001h                   ; 0c 01
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7507,10 +7507,10 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 70 c3
-    jmp short 05284h                          ; eb 94
+    call 0165eh                               ; e8 6f c3
+    jmp short 05285h                          ; eb 94
     test byte [bp-004h], 001h                 ; f6 46 fc 01
-    jne short 05284h                          ; 75 8e
+    jne short 05285h                          ; 75 8e
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7518,16 +7518,16 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 53 c3
+    call 0165eh                               ; e8 52 c3
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 05320h                           ; 74 0e
+    je short 05321h                           ; 74 0e
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-00ch], al                    ; 88 46 f4
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 0532fh                          ; eb 0f
+    jmp short 05330h                          ; eb 0f
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0feh                  ; 24 fe
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7535,8 +7535,8 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 29 c3
-    jmp near 05284h                           ; e9 4c ff
+    call 0165eh                               ; e8 28 c3
+    jmp near 05285h                           ; e9 4c ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7544,16 +7544,16 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 11 c3
+    call 0165eh                               ; e8 10 c3
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 05362h                           ; 74 0e
+    je short 05363h                           ; 74 0e
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-00ch], al                    ; 88 46 f4
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05371h                          ; eb 0f
+    jmp short 05372h                          ; eb 0f
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 002h                   ; 0c 02
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7561,8 +7561,8 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 e7 c2
-    jmp near 05284h                           ; e9 0a ff
+    call 0165eh                               ; e8 e6 c2
+    jmp near 05285h                           ; e9 0a ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7570,16 +7570,16 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 cf c2
+    call 0165eh                               ; e8 ce c2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 053a4h                           ; 74 0e
+    je short 053a5h                           ; 74 0e
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-00ch], al                    ; 88 46 f4
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 053b3h                          ; eb 0f
+    jmp short 053b4h                          ; eb 0f
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0fdh                  ; 24 fd
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7587,10 +7587,10 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 a5 c2
-    jmp near 05284h                           ; e9 c8 fe
+    call 0165eh                               ; e8 a4 c2
+    jmp near 05285h                           ; e9 c8 fe
     test byte [bp-004h], 003h                 ; f6 46 fc 03
-    jne short 053e2h                          ; 75 20
+    jne short 053e3h                          ; 75 20
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 020h                   ; 0c 20
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7598,11 +7598,11 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 87 c2
+    call 0165eh                               ; e8 86 c2
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor AL, strict byte 020h                  ; 34 20
     mov byte [bp-00eh], al                    ; 88 46 f2
-    jmp near 05277h                           ; e9 95 fe
+    jmp near 05278h                           ; e9 95 fe
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7610,20 +7610,20 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 67 c2
+    call 0165eh                               ; e8 66 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
-    call 0e034h                               ; e8 34 8c
+    call 0e034h                               ; e8 33 8c
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 47 c2
+    call 01650h                               ; e8 46 c2
     test AL, strict byte 008h                 ; a8 08
-    jne short 05400h                          ; 75 f3
-    jmp near 05284h                           ; e9 74 fe
+    jne short 05401h                          ; 75 f3
+    jmp near 05285h                           ; e9 74 fe
     test byte [bp-004h], 003h                 ; f6 46 fc 03
-    je short 05419h                           ; 74 03
-    jmp near 05284h                           ; e9 6b fe
+    je short 0541ah                           ; 74 03
+    jmp near 05285h                           ; e9 6b fe
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0dfh                  ; 24 df
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7631,21 +7631,21 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 30 c2
-    jmp short 05416h                          ; eb e6
+    call 0165eh                               ; e8 2f c2
+    jmp short 05417h                          ; eb e6
     test byte [bp-004h], 002h                 ; f6 46 fc 02
-    je short 05469h                           ; 74 33
+    je short 0546ah                           ; 74 33
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 2d c2
+    call 0166ch                               ; e8 2c c2
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 30 c2
+    call 0167ah                               ; e8 2f c2
     mov bx, 00080h                            ; bb 80 00
     mov dx, strict word 00071h                ; ba 71 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 08 c2
+    call 0165eh                               ; e8 07 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7654,8 +7654,8 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     pop bp                                    ; 5d
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
-    call 05115h                               ; e8 ae fc
-    jmp short 05416h                          ; eb ad
+    call 05116h                               ; e8 ae fc
+    jmp short 05417h                          ; eb ad
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 010h                   ; 0c 10
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7663,7 +7663,7 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 e0 c1
+    call 0165eh                               ; e8 df c1
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor AL, strict byte 010h                  ; 34 10
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7671,11 +7671,11 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 cb c1
-    jmp short 05416h                          ; eb 81
+    call 0165eh                               ; e8 ca c1
+    jmp short 05417h                          ; eb 81
     test byte [bp-004h], 002h                 ; f6 46 fc 02
-    je short 0549eh                           ; 74 03
-    jmp near 05284h                           ; e9 e6 fd
+    je short 0549fh                           ; 74 03
+    jmp near 05285h                           ; e9 e6 fd
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0efh                  ; 24 ef
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7683,109 +7683,109 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 ab c1
-    jmp short 0549bh                          ; eb e6
+    call 0165eh                               ; e8 aa c1
+    jmp short 0549ch                          ; eb e6
     mov al, byte [bp-010h]                    ; 8a 46 f0
     test AL, strict byte 004h                 ; a8 04
-    jne short 0549bh                          ; 75 df
+    jne short 0549ch                          ; 75 df
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-008h], al                    ; 88 46 f8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 90 c1
-    jmp short 0549bh                          ; eb cb
+    call 0165eh                               ; e8 8f c1
+    jmp short 0549ch                          ; eb cb
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0fbh                  ; 24 fb
-    jmp short 054a3h                          ; eb cc
+    jmp short 054a4h                          ; eb cc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 00ch                  ; 24 0c
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jne short 054f1h                          ; 75 11
+    jne short 054f2h                          ; 75 11
     mov bx, 01234h                            ; bb 34 12
     mov dx, strict word 00072h                ; ba 72 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 8e c1
+    call 0167ah                               ; e8 8d c1
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-008h], 008h                 ; f6 46 f8 08
-    je short 05506h                           ; 74 0f
+    je short 05507h                           ; 74 0f
     and byte [bp-008h], 0f7h                  ; 80 66 f8 f7
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00018h                ; ba 18 00
-    jmp near 0529dh                           ; e9 97 fd
+    jmp near 0529eh                           ; e9 97 fd
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 080h                 ; a8 80
-    je short 05544h                           ; 74 37
+    je short 05545h                           ; 74 37
     cmp AL, strict byte 0fah                  ; 3c fa
-    jne short 05523h                          ; 75 12
+    jne short 05524h                          ; 75 12
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 36 c1
+    call 01650h                               ; e8 35 c1
     mov bl, al                                ; 88 c3
     or bl, 010h                               ; 80 cb 10
     xor bh, bh                                ; 30 ff
-    jmp short 05539h                          ; eb 16
+    jmp short 0553ah                          ; eb 16
     cmp AL, strict byte 0feh                  ; 3c fe
-    je short 0552ah                           ; 74 03
-    jmp near 05284h                           ; e9 5a fd
+    je short 0552bh                           ; 74 03
+    jmp near 05285h                           ; e9 5a fd
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 1d c1
+    call 01650h                               ; e8 1c c1
     or AL, strict byte 020h                   ; 0c 20
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 1c c1
-    jmp short 05527h                          ; eb e3
+    call 0165eh                               ; e8 1b c1
+    jmp short 05528h                          ; eb e3
     cmp byte [bp-00ah], 058h                  ; 80 7e f6 58
-    jbe short 05569h                          ; 76 1f
+    jbe short 0556ah                          ; 76 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 ce c3
+    call 01923h                               ; e8 cd c3
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 005a1h                               ; 68 a1 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 03 c4
+    call 01966h                               ; e8 02 c4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 052a3h                           ; e9 3a fd
+    jmp near 052a4h                           ; e9 3a fd
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 008h                 ; a8 08
-    je short 05583h                           ; 74 13
+    je short 05584h                           ; 74 13
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     imul bx, ax, strict byte 0000ah           ; 6b d8 0a
     mov dl, byte [bx+00df4h]                  ; 8a 97 f4 0d
     mov ax, word [bx+00df4h]                  ; 8b 87 f4 0d
-    jmp near 05613h                           ; e9 90 00
+    jmp near 05614h                           ; e9 90 00
     test AL, strict byte 004h                 ; a8 04
-    je short 0559ah                           ; 74 13
+    je short 0559bh                           ; 74 13
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     imul bx, ax, strict byte 0000ah           ; 6b d8 0a
     mov dl, byte [bx+00df2h]                  ; 8a 97 f2 0d
     mov ax, word [bx+00df2h]                  ; 8b 87 f2 0d
-    jmp near 05613h                           ; e9 79 00
+    jmp near 05614h                           ; e9 79 00
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 002h                  ; 24 02
     test al, al                               ; 84 c0
-    jbe short 055b7h                          ; 76 14
+    jbe short 055b8h                          ; 76 14
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 055b7h                           ; 72 0d
+    jc short 055b8h                           ; 72 0d
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 055b7h                         ; 77 09
+    jnbe short 055b8h                         ; 77 09
     mov DL, strict byte 0e0h                  ; b2 e0
     xor ah, ah                                ; 30 e4
     imul bx, ax, strict byte 0000ah           ; 6b d8 0a
-    jmp short 0560fh                          ; eb 58
+    jmp short 05610h                          ; eb 58
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    je short 055ech                           ; 74 2f
+    je short 055edh                           ; 74 2f
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     imul bx, ax, strict byte 0000ah           ; 6b d8 0a
@@ -7793,15 +7793,15 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 055dch                           ; 74 0a
+    je short 055ddh                           ; 74 0a
     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
-    jmp short 055e4h                          ; eb 08
+    jmp short 055e5h                          ; eb 08
     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ah], al                    ; 88 46 f6
-    jmp short 05619h                          ; eb 2d
+    jmp short 0561ah                          ; eb 2d
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     imul bx, ax, strict byte 0000ah           ; 6b d8 0a
@@ -7809,33 +7809,33 @@ _int09_function:                             ; 0xf51b3 LB 0x494
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 0560bh                           ; 74 0a
+    je short 0560ch                           ; 74 0a
     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
-    jmp short 05613h                          ; eb 08
+    jmp short 05614h                          ; eb 08
     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 05639h                          ; 75 1a
+    jne short 0563ah                          ; 75 1a
     test dl, dl                               ; 84 d2
-    jne short 05639h                          ; 75 16
+    jne short 0563ah                          ; 75 16
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 f5 c2
+    call 01923h                               ; e8 f4 c2
     push 005d8h                               ; 68 d8 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 30 c3
+    call 01966h                               ; e8 2f c3
     add sp, strict byte 00004h                ; 83 c4 04
     mov bl, dl                                ; 88 d3
     xor bh, bh                                ; 30 ff
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
-    jmp near 05464h                           ; e9 1d fe
-dequeue_key_:                                ; 0xf5647 LB 0x94
+    jmp near 05465h                           ; e9 1d fe
+dequeue_key_:                                ; 0xf5648 LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -7848,36 +7848,36 @@ dequeue_key_:                                ; 0xf5647 LB 0x94
     mov word [bp-008h], cx                    ; 89 4e f8
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 0b c0
+    call 0166ch                               ; e8 0a c0
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 00 c0
+    call 0166ch                               ; e8 ff bf
     cmp bx, ax                                ; 39 c3
-    je short 056adh                           ; 74 3d
+    je short 056aeh                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 d8 bf
+    call 01650h                               ; e8 d7 bf
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 cd bf
+    call 01650h                               ; e8 cc bf
     mov es, [bp-008h]                         ; 8e 46 f8
     mov byte [es:si], cl                      ; 26 88 0c
     mov es, [bp-006h]                         ; 8e 46 fa
     mov byte [es:di], al                      ; 26 88 05
     cmp word [bp+004h], strict byte 00000h    ; 83 7e 04 00
-    je short 056a8h                           ; 74 13
+    je short 056a9h                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 0569fh                           ; 72 03
+    jc short 056a0h                           ; 72 03
     mov bx, strict word 0001eh                ; bb 1e 00
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 d2 bf
+    call 0167ah                               ; e8 d1 bf
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 056afh                          ; eb 02
+    jmp short 056b0h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -7888,36 +7888,37 @@ dequeue_key_:                                ; 0xf5647 LB 0x94
     adc word [bx+si], dx                      ; 11 10
     or cl, byte [bx+di]                       ; 0a 09
     add ax, 00102h                            ; 05 02 01
-    add ch, bl                                ; 00 dd
+    add dh, bl                                ; 00 de
     push di                                   ; 57
-    xchg sp, ax                               ; 94
+    xchg bp, ax                               ; 95
     push di                                   ; 57
-    db  026h, 058h
-    ; es pop ax                                 ; 26 58
-    jc short 05723h                           ; 72 58
-    sbb word [bx+si-054h], strict byte 00058h ; 83 58 ac 58
-    mov CH, strict byte 058h                  ; b5 58
-    db  026h, 059h
-    ; es pop cx                                 ; 26 59
+    daa                                       ; 27
+    pop ax                                    ; 58
+    jnc short 05724h                          ; 73 58
+    test byte [bx+si-053h], bl                ; 84 58 ad
     pop ax                                    ; 58
+    mov DH, strict byte 058h                  ; b6 58
+    daa                                       ; 27
+    pop cx                                    ; 59
+    pop cx                                    ; 59
     pop cx                                    ; 59
-    xchg word [bx+di-040h], bx                ; 87 59 c0
+    mov byte [bx+di-03fh], bl                 ; 88 59 c1
     pop cx                                    ; 59
-    db  020h
+    db  021h
     pop ax                                    ; 58
-_int16_function:                             ; 0xf56db LB 0x2f0
+_int16_function:                             ; 0xf56dc LB 0x2f0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
     sub sp, strict byte 00006h                ; 83 ec 06
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 65 bf
+    call 01650h                               ; e8 64 bf
     mov cl, al                                ; 88 c1
     mov bh, al                                ; 88 c7
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 58 bf
+    call 01650h                               ; e8 57 bf
     mov bl, al                                ; 88 c3
     mov dl, cl                                ; 88 ca
     xor dh, dh                                ; 30 f6
@@ -7927,7 +7928,7 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     xor ah, ah                                ; 30 e4
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 05774h                           ; 74 66
+    je short 05775h                           ; 74 66
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
     mov dx, strict word 00060h                ; ba 60 00
@@ -7937,17 +7938,17 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05727h                          ; 75 08
+    jne short 05728h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05715h                          ; eb ee
+    jmp short 05716h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 05773h                          ; 75 41
+    jne short 05774h                          ; 75 41
     mov dl, bl                                ; 88 da
     and dl, 0c8h                              ; 80 e2 c8
     mov al, bh                                ; 88 f8
@@ -7967,11 +7968,11 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05762h                          ; 75 08
+    jne short 05763h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05750h                          ; eb ee
+    jmp short 05751h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -7979,39 +7980,39 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     xor bh, bh                                ; 30 ff
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 eb be
+    call 0165eh                               ; e8 ea be
     sti                                       ; fb
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000a2h                            ; 3d a2 00
-    jnbe short 057ddh                         ; 77 5e
+    jnbe short 057deh                         ; 77 5e
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 056b8h                            ; bf b8 56
+    mov di, 056b9h                            ; bf b9 56
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+056c3h]               ; 2e 8b 85 c3 56
+    mov ax, word [cs:di+056c4h]               ; 2e 8b 85 c4 56
     jmp ax                                    ; ff e0
     push strict byte 00001h                   ; 6a 01
     mov cx, ss                                ; 8c d1
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 05647h                               ; e8 a4 fe
+    call 05648h                               ; e8 a4 fe
     test ax, ax                               ; 85 c0
-    jne short 057b2h                          ; 75 0b
+    jne short 057b3h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 b7 c1
+    call 01966h                               ; e8 b6 c1
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 057beh                           ; 74 06
+    je short 057bfh                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 057c4h                           ; 74 06
+    je short 057c5h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 057c8h                          ; 75 04
+    jne short 057c9h                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
@@ -8020,22 +8021,22 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     mov al, byte [bp-008h]                    ; 8a 46 f8
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 05820h                           ; e9 43 00
+    jmp near 05821h                           ; e9 43 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 3b c1
+    call 01923h                               ; e8 3a c1
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 00633h                               ; 68 33 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 6f c1
+    call 01966h                               ; e8 6e c1
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 1e c1
+    call 01923h                               ; e8 1d c1
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -8046,7 +8047,7 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     push ax                                   ; 50
     push 0065bh                               ; 68 5b 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 49 c1
+    call 01966h                               ; e8 48 c1
     add sp, strict byte 0000ch                ; 83 c4 0c
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
@@ -8058,17 +8059,17 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 05647h                               ; e8 0d fe
+    call 05648h                               ; e8 0d fe
     test ax, ax                               ; 85 c0
-    jne short 05844h                          ; 75 06
+    jne short 05845h                          ; 75 06
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp short 05820h                          ; eb dc
+    jmp short 05821h                          ; eb dc
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 05850h                           ; 74 06
+    je short 05851h                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 05856h                           ; 74 06
+    je short 05857h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 0585ah                          ; 75 04
+    jne short 0585bh                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
@@ -8078,32 +8079,32 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
     and word [bp+01ch], strict byte 0ffbfh    ; 83 66 1c bf
-    jmp short 05820h                          ; eb ae
+    jmp short 05821h                          ; eb ae
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 d5 bd
+    call 01650h                               ; e8 d4 bd
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
-    jmp near 057d7h                           ; e9 54 ff
+    jmp near 057d8h                           ; e9 54 ff
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 05115h                               ; e8 82 f8
+    call 05116h                               ; e8 82 f8
     test ax, ax                               ; 85 c0
-    jne short 058a4h                          ; 75 0d
+    jne short 058a5h                          ; 75 0d
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 05820h                           ; e9 7c ff
+    jmp near 05821h                           ; e9 7c ff
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 05820h                           ; e9 74 ff
+    jmp near 05821h                           ; e9 74 ff
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 030h                   ; 0c 30
-    jmp short 0589eh                          ; eb e9
+    jmp short 0589fh                          ; eb e9
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
     cli                                       ; fa
@@ -8116,40 +8117,40 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 058dch                          ; 75 0d
+    jne short 058ddh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 058dch                          ; 76 08
+    jbe short 058ddh                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 058c5h                          ; eb e9
+    jmp short 058c6h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05920h                          ; 76 40
+    jbe short 05921h                          ; 76 40
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 05920h                          ; 75 35
+    jne short 05921h                          ; 75 35
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05905h                          ; 75 0d
+    jne short 05906h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05905h                          ; 76 08
+    jbe short 05906h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 058eeh                          ; eb e9
+    jmp short 058efh                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05917h                          ; 76 0e
+    jbe short 05918h                          ; 76 0e
     shr cx, 008h                              ; c1 e9 08
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -8159,71 +8160,71 @@ _int16_function:                             ; 0xf56db LB 0x2f0
     or cx, ax                                 ; 09 c1
     dec byte [bp-004h]                        ; fe 4e fc
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jnbe short 058ebh                         ; 77 cb
+    jnbe short 058ech                         ; 77 cb
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 05820h                           ; e9 fa fe
+    jmp near 05821h                           ; e9 fa fe
     push strict byte 00001h                   ; 6a 01
     mov cx, ss                                ; 8c d1
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 05647h                               ; e8 12 fd
+    call 05648h                               ; e8 12 fd
     test ax, ax                               ; 85 c0
-    jne short 05944h                          ; 75 0b
+    jne short 05945h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 25 c0
+    call 01966h                               ; e8 24 c0
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 0594dh                          ; 75 03
-    jmp near 057c8h                           ; e9 7b fe
+    jne short 0594eh                          ; 75 03
+    jmp near 057c9h                           ; e9 7b fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    jne short 05956h                          ; 75 03
-    jmp near 057c4h                           ; e9 6e fe
-    jmp short 0594ah                          ; eb f2
+    jne short 05957h                          ; 75 03
+    jmp near 057c5h                           ; e9 6e fe
+    jmp short 0594bh                          ; eb f2
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     push strict byte 00000h                   ; 6a 00
     mov cx, ss                                ; 8c d1
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 05647h                               ; e8 db fc
+    call 05648h                               ; e8 db fc
     test ax, ax                               ; 85 c0
-    jne short 05973h                          ; 75 03
-    jmp near 0583eh                           ; e9 cb fe
+    jne short 05974h                          ; 75 03
+    jmp near 0583fh                           ; e9 cb fe
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 0597ch                          ; 75 03
-    jmp near 0585ah                           ; e9 de fe
+    jne short 0597dh                          ; 75 03
+    jmp near 0585bh                           ; e9 de fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    jne short 05985h                          ; 75 03
-    jmp near 05856h                           ; e9 d1 fe
-    jmp short 05979h                          ; eb f2
+    jne short 05986h                          ; 75 03
+    jmp near 05857h                           ; e9 d1 fe
+    jmp short 0597ah                          ; eb f2
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 c0 bc
+    call 01650h                               ; e8 bf bc
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 af bc
+    call 01650h                               ; e8 ae bc
     mov bh, al                                ; 88 c7
     and bh, 073h                              ; 80 e7 73
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 a1 bc
+    call 01650h                               ; e8 a0 bc
     and AL, strict byte 00ch                  ; 24 0c
     or al, bh                                 ; 08 f8
     mov dx, word [bp+012h]                    ; 8b 56 12
     xor dh, dh                                ; 30 f6
     xor ah, ah                                ; 30 e4
     sal ax, 008h                              ; c1 e0 08
-    jmp near 057d5h                           ; e9 15 fe
+    jmp near 057d6h                           ; e9 15 fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 0589eh                           ; e9 d3 fe
-set_geom_lba_:                               ; 0xf59cb LB 0xe7
+    jmp near 0589fh                           ; e9 d3 fe
+set_geom_lba_:                               ; 0xf59cc LB 0xe7
     push bx                                   ; 53
     push cx                                   ; 51
     push si                                   ; 56
@@ -8239,32 +8240,32 @@ set_geom_lba_:                               ; 0xf59cb LB 0xe7
     mov cx, word [bp+00eh]                    ; 8b 4e 0e
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov si, strict word 00020h                ; be 20 00
-    call 09fd0h                               ; e8 d8 45
+    call 09fd0h                               ; e8 d7 45
     test ax, ax                               ; 85 c0
-    jne short 05a08h                          ; 75 0c
+    jne short 05a09h                          ; 75 0c
     test bx, bx                               ; 85 db
-    jne short 05a08h                          ; 75 08
+    jne short 05a09h                          ; 75 08
     test cx, cx                               ; 85 c9
-    jne short 05a08h                          ; 75 04
+    jne short 05a09h                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 05a0fh                           ; 74 07
+    je short 05a10h                           ; 74 07
     mov bx, strict word 0ffffh                ; bb ff ff
     mov si, bx                                ; 89 de
-    jmp short 05a15h                          ; eb 06
+    jmp short 05a16h                          ; eb 06
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov si, word [bp+00eh]                    ; 8b 76 0e
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 05a21h                          ; eb 05
+    jmp short 05a22h                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 05a44h                          ; 7d 23
+    jnl short 05a45h                          ; 7d 23
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp si, ax                                ; 39 c6
-    jc short 05a32h                           ; 72 0a
-    jne short 05a3bh                          ; 75 11
+    jc short 05a33h                           ; 72 0a
+    jne short 05a3ch                          ; 75 11
     mov ax, word [bp-004h]                    ; 8b 46 fc
     cmp ax, word [bp-008h]                    ; 3b 46 f8
-    jnbe short 05a3bh                         ; 77 09
+    jnbe short 05a3ch                         ; 77 09
     mov ax, word [bp-002h]                    ; 8b 46 fe
     inc ax                                    ; 40
     shr ax, 1                                 ; d1 e8
@@ -8272,20 +8273,20 @@ set_geom_lba_:                               ; 0xf59cb LB 0xe7
     shr word [bp-006h], 1                     ; d1 6e fa
     rcr word [bp-008h], 1                     ; d1 5e f8
     inc bx                                    ; 43
-    jmp short 05a1ch                          ; eb d8
+    jmp short 05a1dh                          ; eb d8
     mov ax, word [bp-002h]                    ; 8b 46 fe
     xor dx, dx                                ; 31 d2
     mov bx, strict word 0003fh                ; bb 3f 00
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 2f 45
+    call 09f80h                               ; e8 2e 45
     mov bx, ax                                ; 89 c3
     mov cx, dx                                ; 89 d1
     mov ax, word [bp-004h]                    ; 8b 46 fc
     mov dx, si                                ; 89 f2
-    call 09fa0h                               ; e8 43 45
+    call 09fa0h                               ; e8 42 45
     mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 05a6ch                          ; 76 06
+    jbe short 05a6dh                          ; 76 06
     mov word [es:di+002h], 00400h             ; 26 c7 45 02 00 04
     mov ax, word [bp-002h]                    ; 8b 46 fe
     mov word [es:di], ax                      ; 26 89 05
@@ -8296,48 +8297,53 @@ set_geom_lba_:                               ; 0xf59cb LB 0xe7
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn 00008h                               ; c2 08 00
-    cmp bl, byte [bp+di+04bh]                 ; 3a 5b 4b
+    cmp bx, word [bp+di+04ch]                 ; 3b 5b 4c
     pop bx                                    ; 5b
-    jp short 05ae1h                           ; 7a 5b
-    jp short 05ae3h                           ; 7a 5b
-    jp short 05ae5h                           ; 7a 5b
-    push strict byte 0005dh                   ; 6a 5d
-    mov word [0a35eh], ax                     ; a3 5e a3
+    jnp short 05ae2h                          ; 7b 5b
+    jnp short 05ae4h                          ; 7b 5b
+    jnp short 05ae6h                          ; 7b 5b
+    imul bx, word [di-05ch], strict byte 0005eh ; 6b 5d a4 5e
+    movsb                                     ; a4
     pop si                                    ; 5e
-    xchg di, ax                               ; 97
+    cbw                                       ; 98
     pop bp                                    ; 5d
-    sbb byte [bp-05dh], 05eh                  ; 80 5e a3 5e
-    mov word [0805eh], ax                     ; a3 5e 80
+    sbb word [bp-05ch], 0a45eh                ; 81 5e a4 5e a4
+    pop si                                    ; 5e
+    sbb word [bp-07fh], 0a45eh                ; 81 5e 81 5e a4
+    pop si                                    ; 5e
+    movsb                                     ; a4
+    pop si                                    ; 5e
+    add bx, word [bp-07fh]                    ; 03 5e 81
     pop si                                    ; 5e
-    sbb byte [bp-05dh], 05eh                  ; 80 5e a3 5e
-    mov word [0025eh], ax                     ; a3 5e 02
+    movsb                                     ; a4
     pop si                                    ; 5e
-    sbb byte [bp-05dh], 05eh                  ; 80 5e a3 5e
-    mov word [0805eh], ax                     ; a3 5e 80
+    movsb                                     ; a4
     pop si                                    ; 5e
-    xor bx, word [bp-05dh]                    ; 33 5e a3
+    sbb word [bp+034h], 0a45eh                ; 81 5e 34 5e a4
     pop si                                    ; 5e
-    mov word [0a35eh], ax                     ; a3 5e a3
+    movsb                                     ; a4
     pop si                                    ; 5e
-_int13_harddisk:                             ; 0xf5ab2 LB 0x44f
+    movsb                                     ; a4
+    pop si                                    ; 5e
+_int13_harddisk:                             ; 0xf5ab3 LB 0x44f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00010h                ; 83 ec 10
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 ab bb
+    call 0166ch                               ; e8 aa bb
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
     xor bx, bx                                ; 31 db
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 8c bb
+    call 0165eh                               ; e8 8b bb
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05ae1h                           ; 72 05
+    jc short 05ae2h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05affh                           ; 72 1e
+    jc short 05b00h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8347,9 +8353,9 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     push 0067eh                               ; 68 7e 06
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 6d be
+    call 01966h                               ; e8 6c be
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05ebeh                           ; e9 bf 03
+    jmp near 05ebfh                           ; e9 bf 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8358,29 +8364,29 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
     mov byte [bp-002h], dl                    ; 88 56 fe
     cmp dl, 010h                              ; 80 fa 10
-    jc short 05b28h                           ; 72 10
+    jc short 05b29h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 006b8h                               ; 68 b8 06
-    jmp short 05af4h                          ; eb cc
+    jmp short 05af5h                          ; eb cc
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     cmp bx, strict byte 00018h                ; 83 fb 18
-    jnbe short 05b77h                         ; 77 44
+    jnbe short 05b78h                         ; 77 44
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+05a80h]                   ; 2e ff a7 80 5a
+    jmp word [cs:bx+05a81h]                   ; 2e ff a7 81 5a
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc short 05b48h                          ; 73 08
+    jnc short 05b49h                          ; 73 08
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 01d85h                               ; e8 3d c2
-    jmp near 05d80h                           ; e9 35 02
+    call 01d85h                               ; e8 3c c2
+    jmp near 05d81h                           ; e9 35 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 fc ba
+    call 01650h                               ; e8 fb ba
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
     xor dh, dh                                ; 30 f6
@@ -8391,11 +8397,11 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 ee ba
+    call 0165eh                               ; e8 ed ba
     test cl, cl                               ; 84 c9
-    je short 05bd8h                           ; 74 64
-    jmp near 05edah                           ; e9 63 03
-    jmp near 05ea3h                           ; e9 29 03
+    je short 05bd9h                           ; 74 64
+    jmp near 05edbh                           ; e9 63 03
+    jmp near 05ea4h                           ; e9 29 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -8415,23 +8421,23 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     mov word [bp-008h], ax                    ; 89 46 f8
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, 00080h                            ; 3d 80 00
-    jnbe short 05bb5h                         ; 77 04
+    jnbe short 05bb6h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 05bdbh                          ; 75 26
+    jne short 05bdch                          ; 75 26
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 63 bd
+    call 01923h                               ; e8 62 bd
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 006eah                               ; 68 ea 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 94 bd
+    call 01966h                               ; e8 93 bd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05ebeh                           ; e9 e6 02
-    jmp near 05d84h                           ; e9 a9 01
+    jmp near 05ebfh                           ; e9 e6 02
+    jmp near 05d85h                           ; e9 a9 01
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -8443,16 +8449,16 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     mov dx, word [es:bx+02eh]                 ; 26 8b 57 2e
     mov word [bp-00ah], dx                    ; 89 56 f6
     cmp di, ax                                ; 39 c7
-    jnc short 05c09h                          ; 73 0c
+    jnc short 05c0ah                          ; 73 0c
     cmp cx, word [bp-008h]                    ; 3b 4e f8
-    jbe short 05c09h                          ; 76 07
+    jbe short 05c0ah                          ; 76 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp ax, dx                                ; 39 d0
-    jbe short 05c39h                          ; 76 30
+    jbe short 05c3ah                          ; 76 30
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 0f bd
+    call 01923h                               ; e8 0e bd
     push word [bp-006h]                       ; ff 76 fa
     push word [bp-008h]                       ; ff 76 f8
     push di                                   ; 57
@@ -8465,13 +8471,13 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     push 0067eh                               ; 68 7e 06
     push 00712h                               ; 68 12 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 33 bd
+    call 01966h                               ; e8 32 bd
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 05ebeh                           ; e9 85 02
+    jmp near 05ebfh                           ; e9 85 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00004h                ; 3d 04 00
-    je short 05c64h                           ; 74 20
+    je short 05c65h                           ; 74 20
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -8479,25 +8485,25 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
     cmp cx, word [es:bx+030h]                 ; 26 3b 4f 30
-    jne short 05c6dh                          ; 75 14
+    jne short 05c6eh                          ; 75 14
     mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    je short 05c67h                           ; 74 05
-    jmp short 05c6dh                          ; eb 09
-    jmp near 05d80h                           ; e9 19 01
+    je short 05c68h                           ; 74 05
+    jmp short 05c6eh                          ; eb 09
+    jmp near 05d81h                           ; e9 19 01
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 05c9dh                           ; 72 30
+    jc short 05c9eh                           ; 72 30
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 08 43
+    call 09f80h                               ; e8 07 43
     xor bx, bx                                ; 31 db
     add ax, word [bp-008h]                    ; 03 46 f8
     adc dx, bx                                ; 11 da
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 f9 42
+    call 09f80h                               ; e8 f8 42
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
     adc dx, bx                                ; 11 da
@@ -8553,11 +8559,11 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     or bx, ax                                 ; 09 c3
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je short 05d80h                           ; 74 46
+    je short 05d81h                           ; 74 46
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 de bb
+    call 01923h                               ; e8 dd bb
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8567,25 +8573,25 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     push 0067eh                               ; 68 7e 06
     push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 0a bc
+    call 01966h                               ; e8 09 bc
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 05ec6h                           ; e9 5c 01
+    jmp near 05ec7h                           ; e9 5c 01
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 ae bb
+    call 01923h                               ; e8 ad bb
     push 0077ah                               ; 68 7a 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 e9 bb
+    call 01966h                               ; e8 e8 bb
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 cf b8
+    call 0165eh                               ; e8 ce b8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
@@ -8628,7 +8634,7 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     mov word [bp+012h], dx                    ; 89 56 12
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 05d80h                           ; e9 7e ff
+    jmp near 05d81h                           ; e9 7e ff
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -8645,12 +8651,12 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 05e28h                          ; 75 03
-    jmp near 05d80h                           ; e9 58 ff
+    jne short 05e29h                          ; 75 03
+    jmp near 05d81h                           ; e9 58 ff
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 05ec6h                           ; e9 93 00
+    jmp near 05ec7h                           ; e9 93 00
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -8665,10 +8671,10 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-008h]                    ; 8b 5e f8
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 22 41
+    call 09f80h                               ; e8 21 41
     mov bx, word [bp-006h]                    ; 8b 5e fa
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 1a 41
+    call 09f80h                               ; e8 19 41
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-00ch], dx                    ; 89 56 f4
     mov word [bp+014h], dx                    ; 89 56 14
@@ -8677,30 +8683,30 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05d84h                           ; e9 04 ff
+    jmp near 05d85h                           ; e9 04 ff
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 98 ba
+    call 01923h                               ; e8 97 ba
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 00794h                               ; 68 94 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 c9 ba
+    call 01966h                               ; e8 c8 ba
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05d80h                           ; e9 dd fe
+    jmp near 05d81h                           ; e9 dd fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 75 ba
+    call 01923h                               ; e8 74 ba
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 007c7h                               ; 68 c7 07
-    jmp near 05bcdh                           ; e9 0f fd
+    jmp near 05bceh                           ; e9 0f fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8710,48 +8716,49 @@ _int13_harddisk:                             ; 0xf5ab2 LB 0x44f
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 84 b7
+    call 0165eh                               ; e8 83 b7
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05d93h                           ; e9 b2 fe
-    popfw                                     ; 9d
+    jmp near 05d94h                           ; e9 b2 fe
+    sahf                                      ; 9e
     pop di                                    ; 5f
-    rcr byte [bx-030h], 1                     ; d0 5f d0
+    rcr word [bx-02fh], 1                     ; d1 5f d1
     pop di                                    ; 5f
-    rcr byte [bx-03fh], 1                     ; d0 5f c1
-    arpl [bp+di], bp                          ; 63 2b
+    rcr word [bx-03eh], 1                     ; d1 5f c2
+    arpl [si], bp                             ; 63 2c
     popaw                                     ; 61
-    rcr byte [bx+034h], 1                     ; d0 5f 34
+    rcr word [bx+035h], 1                     ; d1 5f 35
     popaw                                     ; 61
-    sal word [bp+di-04bh], 05fh               ; c1 63 b5 5f
-    mov CH, strict byte 05fh                  ; b5 5f
-    mov CH, strict byte 05fh                  ; b5 5f
-    mov CH, strict byte 05fh                  ; b5 5f
-    fsub dword [bp+di-04bh]                   ; d8 63 b5
+    retn 0b663h                               ; c2 63 b6
+    pop di                                    ; 5f
+    mov DH, strict byte 05fh                  ; b6 5f
+    mov DH, strict byte 05fh                  ; b6 5f
+    mov DH, strict byte 05fh                  ; b6 5f
+    fldenv [bp+di-04ah]                       ; d9 63 b6
     pop di                                    ; 5f
-    mov CH, strict byte 05fh                  ; b5 5f
-_int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
+    mov DH, strict byte 05fh                  ; b6 5f
+_int13_harddisk_ext:                         ; 0xf5f02 LB 0x50f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00028h                ; 83 ec 28
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 5c b7
+    call 0166ch                               ; e8 5b b7
     mov word [bp-012h], ax                    ; 89 46 ee
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 50 b7
+    call 0166ch                               ; e8 4f b7
     mov word [bp-008h], 00122h                ; c7 46 f8 22 01
     mov word [bp-006h], ax                    ; 89 46 fa
     xor bx, bx                                ; 31 db
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 2f b7
+    call 0165eh                               ; e8 2e b7
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05f3eh                           ; 72 05
+    jc short 05f3fh                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05f5ch                           ; 72 1e
+    jc short 05f5dh                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8761,9 +8768,9 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     push 007f5h                               ; 68 f5 07
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 10 ba
+    call 01966h                               ; e8 0f ba
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 063eeh                           ; e9 92 04
+    jmp near 063efh                           ; e9 92 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     les bx, [bp-008h]                         ; c4 5e f8
@@ -8771,40 +8778,40 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
     mov byte [bp-004h], dl                    ; 88 56 fc
     cmp dl, 010h                              ; 80 fa 10
-    jc short 05f83h                           ; 72 10
+    jc short 05f84h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 007f5h                               ; 68 f5 07
     push 006b8h                               ; 68 b8 06
-    jmp short 05f51h                          ; eb ce
+    jmp short 05f52h                          ; eb ce
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     sub bx, strict byte 00041h                ; 83 eb 41
     cmp bx, strict byte 0000fh                ; 83 fb 0f
-    jnbe short 05fb5h                         ; 77 24
+    jnbe short 05fb6h                         ; 77 24
     add bx, bx                                ; 01 db
     mov dx, word [bp+016h]                    ; 8b 56 16
     xor dh, dh                                ; 30 f6
-    jmp word [cs:bx+05ee1h]                   ; 2e ff a7 e1 5e
+    jmp word [cs:bx+05ee2h]                   ; 2e ff a7 e2 5e
     mov word [bp+010h], 0aa55h                ; c7 46 10 55 aa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 030h                               ; 80 cc 30
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 063c5h                           ; e9 10 04
+    jmp near 063c6h                           ; e9 10 04
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 63 b9
+    call 01923h                               ; e8 62 b9
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 007f5h                               ; 68 f5 07
     push 007c7h                               ; 68 c7 07
-    jmp near 06065h                           ; e9 95 00
+    jmp near 06066h                           ; e9 95 00
     mov di, word [bp+00ah]                    ; 8b 7e 0a
     mov es, [bp+004h]                         ; 8e 46 04
     mov word [bp-01ah], di                    ; 89 7e e6
@@ -8820,7 +8827,7 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     xor ax, ax                                ; 31 c0
     xor bx, bx                                ; 31 db
     mov si, strict word 00020h                ; be 20 00
-    call 09fe0h                               ; e8 dd 3f
+    call 09fe0h                               ; e8 dc 3f
     mov si, ax                                ; 89 c6
     mov word [bp-00ch], bx                    ; 89 5e f4
     mov ax, word [es:di+008h]                 ; 26 8b 45 08
@@ -8834,39 +8841,39 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     add bx, ax                                ; 01 c3
     mov al, byte [es:bx+022h]                 ; 26 8a 47 22
     cmp si, word [es:bx+03ch]                 ; 26 3b 77 3c
-    jnbe short 0604dh                         ; 77 22
-    jne short 06070h                          ; 75 43
+    jnbe short 0604eh                         ; 77 22
+    jne short 06071h                          ; 75 43
     mov di, word [bp-00ch]                    ; 8b 7e f4
     cmp di, word [es:bx+03ah]                 ; 26 3b 7f 3a
-    jnbe short 0604dh                         ; 77 17
+    jnbe short 0604eh                         ; 77 17
     mov di, word [bp-00ch]                    ; 8b 7e f4
     cmp di, word [es:bx+03ah]                 ; 26 3b 7f 3a
-    jne short 06070h                          ; 75 31
+    jne short 06071h                          ; 75 31
     cmp cx, word [es:bx+038h]                 ; 26 3b 4f 38
-    jnbe short 0604dh                         ; 77 08
-    jne short 06070h                          ; 75 29
+    jnbe short 0604eh                         ; 77 08
+    jne short 06071h                          ; 75 29
     cmp dx, word [es:bx+036h]                 ; 26 3b 57 36
-    jc short 06070h                           ; 72 23
+    jc short 06071h                           ; 72 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 cb b8
+    call 01923h                               ; e8 ca b8
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 007f5h                               ; 68 f5 07
     push 00808h                               ; 68 08 08
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 fc b8
+    call 01966h                               ; e8 fb b8
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 063eeh                           ; e9 7e 03
+    jmp near 063efh                           ; e9 7e 03
     mov di, word [bp+016h]                    ; 8b 7e 16
     shr di, 008h                              ; c1 ef 08
     cmp di, strict byte 00044h                ; 83 ff 44
-    je short 06080h                           ; 74 05
+    je short 06081h                           ; 74 05
     cmp di, strict byte 00047h                ; 83 ff 47
-    jne short 06083h                          ; 75 03
-    jmp near 063c1h                           ; e9 3e 03
+    jne short 06084h                          ; 75 03
+    jmp near 063c2h                           ; e9 3e 03
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00
     mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00
@@ -8904,11 +8911,11 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     les bx, [bp-01ah]                         ; c4 5e e6
     mov word [es:bx+002h], ax                 ; 26 89 47 02
     test dl, dl                               ; 84 d2
-    je short 06152h                           ; 74 51
+    je short 06153h                           ; 74 51
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 17 b8
+    call 01923h                               ; e8 16 b8
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8916,15 +8923,15 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     push 007f5h                               ; 68 f5 07
     push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 49 b8
+    call 01966h                               ; e8 48 b8
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 063f6h                           ; e9 cb 02
+    jmp near 063f7h                           ; e9 cb 02
     or dh, 0b2h                               ; 80 ce b2
     mov word [bp+016h], dx                    ; 89 56 16
-    jmp near 063f9h                           ; e9 c5 02
+    jmp near 063fah                           ; e9 c5 02
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
     mov word [bp-024h], ax                    ; 89 46 dc
@@ -8934,11 +8941,11 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     mov ax, word [es:bx]                      ; 26 8b 07
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jnc short 06155h                          ; 73 06
-    jmp near 063eeh                           ; e9 9c 02
-    jmp near 063c1h                           ; e9 6c 02
-    jnc short 0615ah                          ; 73 03
-    jmp near 061f1h                           ; e9 97 00
+    jnc short 06156h                          ; 73 06
+    jmp near 063efh                           ; e9 9c 02
+    jmp near 063c2h                           ; e9 6c 02
+    jnc short 0615bh                          ; 73 03
+    jmp near 061f2h                           ; e9 97 00
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -8977,12 +8984,12 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     mov ax, si                                ; 89 f0
     mov bx, word [bp-00ch]                    ; 8b 5e f4
     mov si, strict word 00020h                ; be 20 00
-    call 09fd0h                               ; e8 e9 3d
+    call 09fd0h                               ; e8 e8 3d
     mov bx, di                                ; 89 fb
     mov word [es:bx+014h], dx                 ; 26 89 57 14
     mov word [es:bx+016h], cx                 ; 26 89 4f 16
     cmp word [bp-00eh], strict byte 0001eh    ; 83 7e f2 1e
-    jc short 0625ch                           ; 72 65
+    jc short 0625dh                           ; 72 65
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di], strict word 0001eh      ; 26 c7 05 1e 00
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -9009,22 +9016,22 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     add bx, word [bp-008h]                    ; 03 5e f8
     mov dl, byte [es:bx+027h]                 ; 26 8a 57 27
     test dl, dl                               ; 84 d2
-    jne short 0624ch                          ; 75 04
+    jne short 0624dh                          ; 75 04
     xor bx, bx                                ; 31 db
-    jmp short 0624fh                          ; eb 03
+    jmp short 06250h                          ; eb 03
     mov bx, strict word 00008h                ; bb 08 00
     or bl, 010h                               ; 80 cb 10
     cmp dl, 001h                              ; 80 fa 01
-    jne short 0625fh                          ; 75 08
+    jne short 06260h                          ; 75 08
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 06261h                          ; eb 05
-    jmp near 062f2h                           ; e9 93 00
+    jmp short 06262h                          ; eb 05
+    jmp near 062f3h                           ; e9 93 00
     xor ax, ax                                ; 31 c0
     or bx, ax                                 ; 09 c3
     cmp dl, 003h                              ; 80 fa 03
-    jne short 0626dh                          ; 75 05
+    jne short 0626eh                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 0626fh                          ; eb 02
+    jmp short 06270h                          ; eb 02
     xor ax, ax                                ; 31 c0
     or bx, ax                                 ; 09 c3
     mov ax, word [bp-01ch]                    ; 8b 46 e4
@@ -9051,24 +9058,24 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     mov byte [es:bx+00242h], 011h             ; 26 c6 87 42 02 11
     xor bl, bl                                ; 30 db
     xor bh, bh                                ; 30 ff
-    jmp short 062d4h                          ; eb 05
+    jmp short 062d5h                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 062e8h                          ; 73 14
+    jnc short 062e9h                          ; 73 14
     mov dl, bh                                ; 88 fa
     xor dh, dh                                ; 30 f6
     add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-012h]                    ; 8b 46 ee
-    call 01650h                               ; e8 6e b3
+    call 01650h                               ; e8 6d b3
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 062cfh                          ; eb e7
+    jmp short 062d0h                          ; eb e7
     neg bl                                    ; f6 db
     les si, [bp-008h]                         ; c4 76 f8
     mov byte [es:si+00243h], bl               ; 26 88 9c 43 02
     cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
-    jnc short 062fbh                          ; 73 03
-    jmp near 063c1h                           ; e9 c6 00
+    jnc short 062fch                          ; 73 03
+    jmp near 063c2h                           ; e9 c6 00
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -9087,7 +9094,7 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00
     mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00
     test al, al                               ; 84 c0
-    jne short 06343h                          ; 75 0c
+    jne short 06344h                          ; 75 0c
     mov word [es:di+024h], 05349h             ; 26 c7 45 24 49 53
     mov word [es:di+026h], 02041h             ; 26 c7 45 26 41 20
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -9096,7 +9103,7 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     mov word [es:di+02ch], 02020h             ; 26 c7 45 2c 20 20
     mov word [es:di+02eh], 02020h             ; 26 c7 45 2e 20 20
     test al, al                               ; 84 c0
-    jne short 06378h                          ; 75 16
+    jne short 06379h                          ; 75 16
     mov word [es:di+030h], dx                 ; 26 89 55 30
     mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00
     mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00
@@ -9111,19 +9118,19 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00
     xor bl, bl                                ; 30 db
     mov BH, strict byte 01eh                  ; b7 1e
-    jmp short 063a3h                          ; eb 05
+    jmp short 063a4h                          ; eb 05
     cmp bh, 040h                              ; 80 ff 40
-    jnc short 063b8h                          ; 73 15
+    jnc short 063b9h                          ; 73 15
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, ax                                ; 01 c2
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01650h                               ; e8 9e b2
+    call 01650h                               ; e8 9d b2
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 0639eh                          ; eb e6
+    jmp short 0639fh                          ; eb e6
     neg bl                                    ; f6 db
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+041h], bl                 ; 26 88 5d 41
@@ -9131,20 +9138,20 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 8e b2
+    call 0165eh                               ; e8 8d b2
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
     cmp dx, strict byte 00006h                ; 83 fa 06
-    je short 063c1h                           ; 74 e4
+    je short 063c2h                           ; 74 e4
     cmp dx, strict byte 00001h                ; 83 fa 01
-    jc short 063eeh                           ; 72 0c
-    jbe short 063c1h                          ; 76 dd
+    jc short 063efh                           ; 72 0c
+    jbe short 063c2h                          ; 76 dd
     cmp dx, strict byte 00003h                ; 83 fa 03
-    jc short 063eeh                           ; 72 05
+    jc short 063efh                           ; 72 05
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jbe short 063c1h                          ; 76 d3
+    jbe short 063c2h                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -9154,10 +9161,10 @@ _int13_harddisk_ext:                         ; 0xf5f01 LB 0x50f
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 54 b2
+    call 0165eh                               ; e8 53 b2
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 063d4h                          ; eb c4
-_int14_function:                             ; 0xf6410 LB 0x15c
+    jmp short 063d5h                          ; eb c4
+_int14_function:                             ; 0xf6411 LB 0x15c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9165,30 +9172,30 @@ _int14_function:                             ; 0xf6410 LB 0x15c
     mov dx, word [bp+00eh]                    ; 8b 56 0e
     add dx, dx                                ; 01 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 4c b2
+    call 0166ch                               ; e8 4b b2
     mov si, ax                                ; 89 c6
     mov bx, ax                                ; 89 c3
     mov dx, word [bp+00eh]                    ; 8b 56 0e
     add dx, strict byte 0007ch                ; 83 c2 7c
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 20 b2
+    call 01650h                               ; e8 1f b2
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc short 0643ch                          ; 73 04
+    jnc short 0643dh                          ; 73 04
     test si, si                               ; 85 f6
-    jnbe short 0643fh                         ; 77 03
-    jmp near 06562h                           ; e9 23 01
+    jnbe short 06440h                         ; 77 03
+    jmp near 06563h                           ; e9 23 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 06453h                           ; 72 0d
-    jbe short 064b3h                          ; 76 6b
+    jc short 06454h                           ; 72 0d
+    jbe short 064b4h                          ; 76 6b
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 064abh                           ; 74 5f
+    je short 064ach                           ; 74 5f
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 064aeh                           ; 74 5e
-    jmp near 0655ch                           ; e9 09 01
+    je short 064afh                           ; 74 5e
+    jmp near 0655dh                           ; e9 09 01
     test al, al                               ; 84 c0
-    jne short 064b0h                          ; 75 59
+    jne short 064b1h                          ; 75 59
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9198,14 +9205,14 @@ _int14_function:                             ; 0xf6410 LB 0x15c
     lea si, [bx+001h]                         ; 8d 77 01
     mov al, byte [bp+012h]                    ; 8a 46 12
     test AL, strict byte 0e0h                 ; a8 e0
-    jne short 06476h                          ; 75 0c
+    jne short 06477h                          ; 75 0c
     mov AL, strict byte 017h                  ; b0 17
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     mov AL, strict byte 004h                  ; b0 04
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
-    jmp short 0648dh                          ; eb 17
+    jmp short 0648eh                          ; eb 17
     and AL, strict byte 0e0h                  ; 24 e0
     xor ah, ah                                ; 30 e4
     mov cx, ax                                ; 89 c1
@@ -9231,13 +9238,13 @@ _int14_function:                             ; 0xf6410 LB 0x15c
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 0653dh                           ; e9 92 00
-    jmp near 0654bh                           ; e9 9d 00
-    jmp short 06501h                          ; eb 51
-    jmp near 0655ch                           ; e9 a9 00
+    jmp near 0653eh                           ; e9 92 00
+    jmp near 0654ch                           ; e9 9d 00
+    jmp short 06502h                          ; eb 51
+    jmp near 0655dh                           ; e9 a9 00
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b0 b1
+    call 0166ch                               ; e8 af b1
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
@@ -9245,20 +9252,20 @@ _int14_function:                             ; 0xf6410 LB 0x15c
     ; sub ah, ah                                ; 2a e4
     and ax, strict word 00060h                ; 25 60 00
     cmp ax, strict word 00060h                ; 3d 60 00
-    je short 064e3h                           ; 74 17
+    je short 064e4h                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 064e3h                           ; 74 13
+    je short 064e4h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 93 b1
+    call 0166ch                               ; e8 92 b1
     cmp ax, si                                ; 39 f0
-    je short 064beh                           ; 74 e1
+    je short 064bfh                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 064beh                          ; eb db
+    jmp short 064bfh                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 064edh                           ; 74 06
+    je short 064eeh                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -9268,33 +9275,33 @@ _int14_function:                             ; 0xf6410 LB 0x15c
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 0653dh                          ; 75 43
+    jne short 0653eh                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 0653dh                          ; eb 3c
+    jmp short 0653eh                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 62 b1
+    call 0166ch                               ; e8 61 b1
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0652dh                          ; 75 17
+    jne short 0652eh                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 0652dh                           ; 74 13
+    je short 0652eh                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 49 b1
+    call 0166ch                               ; e8 48 b1
     cmp ax, si                                ; 39 f0
-    je short 0650ch                           ; 74 e5
+    je short 0650dh                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 0650ch                          ; eb df
+    jmp short 0650dh                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 06543h                           ; 74 12
+    je short 06544h                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -9302,12 +9309,12 @@ _int14_function:                             ; 0xf6410 LB 0x15c
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 06566h                          ; eb 23
+    jmp short 06567h                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 064fch                          ; eb b1
+    jmp short 064fdh                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9317,15 +9324,15 @@ _int14_function:                             ; 0xf6410 LB 0x15c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 0653ah                          ; eb de
+    jmp short 0653bh                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 06566h                          ; eb 04
+    jmp short 06567h                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-timer_wait_:                                 ; 0xf656c LB 0x43
+timer_wait_:                                 ; 0xf656d LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9333,7 +9340,7 @@ timer_wait_:                                 ; 0xf656c LB 0x43
     push ax                                   ; 50
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 09fa0h                               ; e8 26 3a
+    call 09fa0h                               ; e8 25 3a
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
     mov dx, strict word 00061h                ; ba 61 00
@@ -9345,23 +9352,23 @@ timer_wait_:                                 ; 0xf656c LB 0x43
     add cx, strict byte 0ffffh                ; 83 c1 ff
     adc bx, strict byte 0ffffh                ; 83 d3 ff
     cmp bx, strict byte 0ffffh                ; 83 fb ff
-    jne short 06599h                          ; 75 05
+    jne short 0659ah                          ; 75 05
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 065a8h                           ; 74 0f
+    je short 065a9h                           ; 74 0f
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 010h                  ; 24 10
     cmp al, byte [bp-006h]                    ; 3a 46 fa
-    jne short 06599h                          ; 75 f3
-    jmp short 06589h                          ; eb e1
+    jne short 0659ah                          ; 75 f3
+    jmp short 0658ah                          ; eb e1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf65af LB 0x30
+set_enable_a20_:                             ; 0xf65b0 LB 0x30
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9374,16 +9381,16 @@ set_enable_a20_:                             ; 0xf65af LB 0x30
     ; sub ah, ah                                ; 2a e4
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 065c8h                           ; 74 05
+    je short 065c9h                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 065cbh                          ; eb 03
+    jmp short 065cch                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
     test cl, 002h                             ; f6 c1 02
-    je short 065d5h                           ; 74 05
+    je short 065d6h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 065d7h                          ; eb 02
+    jmp short 065d8h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -9391,7 +9398,7 @@ set_enable_a20_:                             ; 0xf65af LB 0x30
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf65df LB 0x88
+set_e820_range_:                             ; 0xf65e0 LB 0x88
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9421,10 +9428,10 @@ set_e820_range_:                             ; 0xf65df LB 0x88
     pop si                                    ; 5e
     retn 0000ah                               ; c2 0a 00
     db  0ech, 0e9h, 0d8h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 083h, 052h, 04fh, 041h, 024h, 000h
-    db  071h, 069h, 0a2h, 066h, 0b6h, 066h, 04bh, 067h, 051h, 067h, 056h, 067h, 05bh, 067h, 003h, 068h
-    db  02eh, 068h, 044h, 067h, 044h, 067h, 0fbh, 068h, 023h, 069h, 036h, 069h, 045h, 069h, 04bh, 067h
-    db  04ch, 069h
-_int15_function:                             ; 0xf6667 LB 0x33c
+    db  072h, 069h, 0a3h, 066h, 0b7h, 066h, 04ch, 067h, 052h, 067h, 057h, 067h, 05ch, 067h, 004h, 068h
+    db  02fh, 068h, 045h, 067h, 045h, 067h, 0fch, 068h, 024h, 069h, 037h, 069h, 046h, 069h, 04ch, 067h
+    db  04dh, 069h
+_int15_function:                             ; 0xf6668 LB 0x33c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9432,15 +9439,15 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe short 066ach                         ; 77 35
+    jnbe short 066adh                         ; 77 35
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00011h                ; b9 11 00
-    mov di, 06635h                            ; bf 35 66
+    mov di, 06636h                            ; bf 36 66
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+06645h]               ; 2e 8b b5 45 66
+    mov si, word [cs:di+06646h]               ; 2e 8b b5 46 66
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     mov cx, word [bp+018h]                    ; 8b 4e 18
@@ -9453,31 +9460,31 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    je short 066afh                           ; 74 03
-    jmp near 06971h                           ; e9 c2 02
+    je short 066b0h                           ; 74 03
+    jmp near 06972h                           ; e9 c2 02
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 0691ah                           ; e9 64 02
+    jmp near 0691bh                           ; e9 64 02
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 066cbh                           ; 72 0e
-    jbe short 066dfh                          ; 76 20
+    jc short 066cch                           ; 72 0e
+    jbe short 066e0h                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 0670ch                           ; 74 48
+    je short 0670dh                           ; 74 48
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 066efh                           ; 74 26
-    jmp short 06719h                          ; eb 4e
+    je short 066f0h                           ; 74 26
+    jmp short 0671ah                          ; eb 4e
     test ax, ax                               ; 85 c0
-    jne short 06719h                          ; 75 4a
+    jne short 0671ah                          ; 75 4a
     xor ax, ax                                ; 31 c0
-    call 065afh                               ; e8 db fe
+    call 065b0h                               ; e8 db fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 06744h                           ; e9 65 00
+    jmp near 06745h                           ; e9 65 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 065afh                               ; e8 ca fe
+    call 065b0h                               ; e8 ca fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 06744h                           ; e9 55 00
+    jmp near 06745h                           ; e9 55 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9489,21 +9496,21 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     mov word [bp+012h], dx                    ; 89 56 12
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
-    jmp near 06744h                           ; e9 38 00
+    jmp near 06745h                           ; e9 38 00
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
     mov word [bp+00ch], ax                    ; 89 46 0c
-    jmp near 06744h                           ; e9 2b 00
+    jmp near 06745h                           ; e9 2b 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 ff b1
+    call 01923h                               ; e8 fe b1
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 0082eh                               ; 68 2e 08
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 34 b2
+    call 01966h                               ; e8 33 b2
     add sp, strict byte 00006h                ; 83 c4 06
     or byte [bp+018h], 001h                   ; 80 4e 18 01
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -9516,38 +9523,38 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     pop bp                                    ; 5d
     retn                                      ; c3
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp near 067fdh                           ; e9 ac 00
+    jmp near 067feh                           ; e9 ac 00
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 06744h                          ; eb ee
+    jmp short 06745h                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 06741h                          ; eb e6
+    jmp short 06742h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 067d0h                          ; 75 6f
+    jne short 067d1h                          ; 75 6f
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 e6 ae
+    call 01650h                               ; e8 e5 ae
     test AL, strict byte 001h                 ; a8 01
-    jne short 067cdh                          ; 75 5f
+    jne short 067ceh                          ; 75 5f
     mov bx, strict word 00001h                ; bb 01 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 e4 ae
+    call 0165eh                               ; e8 e3 ae
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 f4 ae
+    call 0167ah                               ; e8 f3 ae
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 e8 ae
+    call 0167ah                               ; e8 e7 ae
     mov bx, word [bp+00eh]                    ; 8b 5e 0e
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 dc ae
+    call 0167ah                               ; e8 db ae
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, 0009eh                            ; ba 9e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ah                               ; e8 d0 ae
+    call 0167ah                               ; e8 cf ae
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9556,26 +9563,26 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     and AL, strict byte 0feh                  ; 24 fe
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 ef ae
+    call 016ach                               ; e8 ee ae
     mov dl, al                                ; 88 c2
     or dl, 040h                               ; 80 ca 40
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 fd ae
-    jmp near 06744h                           ; e9 77 ff
-    jmp near 06911h                           ; e9 41 01
+    call 016c7h                               ; e8 fc ae
+    jmp near 06745h                           ; e9 77 ff
+    jmp near 06912h                           ; e9 41 01
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 067f1h                          ; 75 1c
+    jne short 067f2h                          ; 75 1c
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 7e ae
+    call 0165eh                               ; e8 7d ae
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 c2 ae
+    call 016ach                               ; e8 c1 ae
     mov dl, al                                ; 88 c2
     and dl, 0bfh                              ; 80 e2 bf
-    jmp short 067c2h                          ; eb d1
+    jmp short 067c3h                          ; eb d1
     mov word [bp+018h], dx                    ; 89 56 18
     mov ax, bx                                ; 89 d8
     xor ah, bh                                ; 30 fc
@@ -9583,50 +9590,50 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     dec ax                                    ; 48
     or bx, ax                                 ; 09 c3
     mov word [bp+012h], bx                    ; 89 5e 12
-    jmp near 06744h                           ; e9 41 ff
+    jmp near 06745h                           ; e9 41 ff
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 a3 ae
+    call 016ach                               ; e8 a2 ae
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 016ach                               ; e8 96 ae
+    call 016ach                               ; e8 95 ae
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
     cmp dx, strict byte 0ffc0h                ; 83 fa c0
-    jbe short 06827h                          ; 76 05
+    jbe short 06828h                          ; 76 05
     mov word [bp+012h], strict word 0ffc0h    ; c7 46 12 c0 ff
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
-    jmp near 06744h                           ; e9 16 ff
+    jmp near 06745h                           ; e9 16 ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 065afh                               ; e8 7a fd
+    call 065b0h                               ; e8 7a fd
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00038h                ; 83 c2 38
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0167ah                               ; e8 36 ae
+    call 0167ah                               ; e8 35 ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ah                ; 83 c2 3a
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 28 ae
+    call 0167ah                               ; e8 27 ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ch                ; 83 c2 3c
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 0165eh                               ; e8 fd ad
+    call 0165eh                               ; e8 fc ad
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003dh                ; 83 c2 3d
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, 0009bh                            ; bb 9b 00
-    call 0165eh                               ; e8 ee ad
+    call 0165eh                               ; e8 ed ad
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003eh                ; 83 c2 3e
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 fc ad
+    call 0167ah                               ; e8 fb ad
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
     out DX, AL                                ; ee
@@ -9656,7 +9663,7 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     mov dx, 000a1h                            ; ba a1 00
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 068bfh                               ; e8 00 00
+    call 068c0h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00038h                   ; 6a 38
@@ -9684,68 +9691,69 @@ _int15_function:                             ; 0xf6667 LB 0x33c
     push ax                                   ; 50
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 06744h                           ; e9 49 fe
+    jmp near 06745h                           ; e9 49 fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 1d b0
+    call 01923h                               ; e8 1c b0
     push 0086eh                               ; 68 6e 08
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 58 b0
+    call 01966h                               ; e8 57 b0
     add sp, strict byte 00004h                ; 83 c4 04
     or byte [bp+018h], 001h                   ; 80 4e 18 01
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 06744h                           ; e9 21 fe
+    jmp near 06745h                           ; e9 21 fe
     mov word [bp+018h], cx                    ; 89 4e 18
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+00ch], 0e6f5h                ; c7 46 0c f5 e6
     mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
-    jmp near 06744h                           ; e9 0e fe
+    jmp near 06745h                           ; e9 0e fe
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 2d ad
+    call 0166ch                               ; e8 2c ad
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 06827h                           ; e9 e2 fe
+    jmp near 06828h                           ; e9 e2 fe
     push 0089dh                               ; 68 9d 08
     push strict byte 00008h                   ; 6a 08
-    jmp short 0690bh                          ; eb bf
+    jmp short 0690ch                          ; eb bf
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 06971h                          ; 75 1f
+    jne short 06972h                          ; 75 1f
     mov word [bp+012h], ax                    ; 89 46 12
     mov ax, word [bp+00ch]                    ; 8b 46 0c
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 0696ah                           ; 72 0b
+    jc short 0696bh                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 0696ah                         ; 77 06
+    jnbe short 0696bh                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 06744h                           ; e9 da fd
+    jmp near 06745h                           ; e9 da fd
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 06744h                           ; e9 d3 fd
+    jmp near 06745h                           ; e9 d3 fd
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 a7 af
+    call 01923h                               ; e8 a6 af
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     push 008b4h                               ; 68 b4 08
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 dc af
+    call 01966h                               ; e8 db af
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp short 06911h                          ; eb 82
-    or ax, 0326bh                             ; 0d 6b 32
-    imul dx, word [bp+si+06bh], strict byte 0ffa1h ; 6b 52 6b a1
-    imul di, word [bx-02395h], strict byte 0006bh ; 6b bf 6b dc 6b
-    db  0feh
-    imul sp, word [bx+si], strict byte 0006ch ; 6b 20 6c
-    pop bp                                    ; 5d
+    jmp short 06912h                          ; eb 82
+    push CS                                   ; 0e
+    imul si, word [bp+di], strict byte 0006bh ; 6b 33 6b
+    push bx                                   ; 53
+    imul sp, word [bp+si-03f95h], strict byte 0006bh ; 6b a2 6b c0 6b
+    db  0ddh
+    imul di, di, strict byte 0006bh           ; 6b ff 6b
+    and word [si+05eh], bp                    ; 21 6c 5e
     insb                                      ; 6c
-    xchg cx, ax                               ; 91
+    xchg dx, ax                               ; 92
     insb                                      ; 6c
-_int15_function32:                           ; 0xf69a3 LB 0x38a
+_int15_function32:                           ; 0xf69a4 LB 0x38a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9757,34 +9765,34 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov dx, word [bp+020h]                    ; 8b 56 20
     xor dh, dh                                ; 30 f6
     cmp ax, 000e8h                            ; 3d e8 00
-    je short 06a0ah                           ; 74 4a
+    je short 06a0bh                           ; 74 4a
     cmp ax, 000d0h                            ; 3d d0 00
-    je short 069d7h                           ; 74 12
+    je short 069d8h                           ; 74 12
     cmp ax, 00086h                            ; 3d 86 00
-    jne short 06a08h                          ; 75 3e
+    jne short 06a09h                          ; 75 3e
     sti                                       ; fb
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 0656ch                               ; e8 98 fb
-    jmp near 06b9bh                           ; e9 c4 01
+    call 0656dh                               ; e8 98 fb
+    jmp near 06b9ch                           ; e9 c4 01
     cmp dx, strict byte 0004fh                ; 83 fa 4f
-    jne short 06a08h                          ; 75 2c
+    jne short 06a09h                          ; 75 2c
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne short 06a3eh                          ; 75 5b
+    jne short 06a3fh                          ; 75 5b
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne short 06a3eh                          ; 75 54
+    jne short 06a3fh                          ; 75 54
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne short 06a3eh                          ; 75 4d
+    jne short 06a3fh                          ; 75 4d
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne short 06a3eh                          ; 75 46
+    jne short 06a3fh                          ; 75 46
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne short 06a3eh                          ; 75 3e
+    jne short 06a3fh                          ; 75 3e
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    je short 06a0ch                           ; 74 04
-    jmp short 06a3eh                          ; eb 34
-    jmp short 06a34h                          ; eb 28
+    je short 06a0dh                           ; 74 04
+    jmp short 06a3fh                          ; eb 34
+    jmp short 06a35h                          ; eb 28
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov word [bp+008h], ax                    ; 89 46 08
@@ -9796,28 +9804,28 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+020h], 03332h                ; c7 46 20 32 33
     mov word [bp+022h], 04941h                ; c7 46 22 41 49
-    jmp near 06b9bh                           ; e9 67 01
+    jmp near 06b9ch                           ; e9 67 01
     cmp dx, strict byte 00020h                ; 83 fa 20
-    je short 06a44h                           ; 74 0b
+    je short 06a45h                           ; 74 0b
     cmp dx, strict byte 00001h                ; 83 fa 01
-    je short 06a41h                           ; 74 03
-    jmp near 06b71h                           ; e9 30 01
-    jmp near 06cdfh                           ; e9 9b 02
+    je short 06a42h                           ; 74 03
+    jmp near 06b72h                           ; e9 30 01
+    jmp near 06ce0h                           ; e9 9b 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne short 06a3eh                          ; 75 f3
+    jne short 06a3fh                          ; 75 f3
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne short 06a3eh                          ; 75 ec
+    jne short 06a3fh                          ; 75 ec
     mov ax, strict word 00035h                ; b8 35 00
-    call 016ach                               ; e8 54 ac
+    call 016ach                               ; e8 53 ac
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06a61h                               ; e2 fa
+    loop 06a62h                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 016ach                               ; e8 3f ac
+    call 016ach                               ; e8 3e ac
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
     or dx, ax                                 ; 09 c2
@@ -9825,31 +9833,31 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     add bx, bx                                ; 01 db
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 06a87h                           ; 72 06
-    jne short 06ab5h                          ; 75 32
+    jc short 06a88h                           ; 72 06
+    jne short 06ab6h                          ; 75 32
     test bx, bx                               ; 85 db
-    jnbe short 06ab5h                         ; 77 2e
+    jnbe short 06ab6h                         ; 77 2e
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 1f ac
+    call 016ach                               ; e8 1e ac
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06a96h                               ; e2 fa
+    loop 06a97h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 016ach                               ; e8 0a ac
+    call 016ach                               ; e8 09 ac
     xor ah, ah                                ; 30 e4
     or bx, ax                                 ; 09 c3
     mov cx, strict word 0000ah                ; b9 0a 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06aa9h                               ; e2 fa
+    loop 06aaah                               ; e2 fa
     add bx, strict byte 00000h                ; 83 c3 00
     adc dx, strict byte 00010h                ; 83 d2 10
     mov ax, strict word 00062h                ; b8 62 00
-    call 016ach                               ; e8 f1 ab
+    call 016ach                               ; e8 f0 ab
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
     xor al, al                                ; 30 c0
@@ -9857,28 +9865,28 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov cx, strict word 00008h                ; b9 08 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 06ac8h                               ; e2 f8
+    loop 06ac9h                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 016ach                               ; e8 d6 ab
+    call 016ach                               ; e8 d5 ab
     xor ah, ah                                ; 30 e4
     or word [bp-00ah], ax                     ; 09 46 f6
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     mov word [bp-008h], ax                    ; 89 46 f8
     mov word [bp-00ah], strict word 00000h    ; c7 46 f6 00 00
     mov ax, strict word 00063h                ; b8 63 00
-    call 016ach                               ; e8 c0 ab
+    call 016ach                               ; e8 bf ab
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-006h], al                    ; 88 46 fa
     mov ax, word [bp+014h]                    ; 8b 46 14
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 06b71h                         ; 77 77
+    jnbe short 06b72h                         ; 77 77
     mov si, ax                                ; 89 c6
     add si, ax                                ; 01 c6
     mov ax, bx                                ; 89 d8
     add ax, strict word 00000h                ; 05 00 00
     mov cx, dx                                ; 89 d1
     adc cx, strict byte 0ffffh                ; 83 d1 ff
-    jmp word [cs:si+0698fh]                   ; 2e ff a4 8f 69
+    jmp word [cs:si+06990h]                   ; 2e ff a4 90 69
     push strict byte 00001h                   ; 6a 01
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9888,10 +9896,10 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 065dfh                               ; e8 ba fa
+    call 065e0h                               ; e8 ba fa
     mov word [bp+014h], strict word 00001h    ; c7 46 14 01 00
     mov word [bp+016h], strict word 00000h    ; c7 46 16 00 00
-    jmp near 06cc4h                           ; e9 92 01
+    jmp near 06cc5h                           ; e9 92 01
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9901,9 +9909,9 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     mov bx, 0fc00h                            ; bb 00 fc
     mov cx, strict word 00009h                ; b9 09 00
-    call 065dfh                               ; e8 94 fa
+    call 065e0h                               ; e8 94 fa
     mov word [bp+014h], strict word 00002h    ; c7 46 14 02 00
-    jmp short 06b2ah                          ; eb d8
+    jmp short 06b2bh                          ; eb d8
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9913,18 +9921,18 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 065dfh                               ; e8 75 fa
+    call 065e0h                               ; e8 75 fa
     mov word [bp+014h], strict word 00003h    ; c7 46 14 03 00
-    jmp short 06b2ah                          ; eb b9
+    jmp short 06b2bh                          ; eb b9
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 a7 ad
+    call 01923h                               ; e8 a6 ad
     push word [bp+014h]                       ; ff 76 14
     push word [bp+020h]                       ; ff 76 20
     push 008b4h                               ; 68 b4 08
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 dc ad
+    call 01966h                               ; e8 db ad
     add sp, strict byte 00008h                ; 83 c4 08
     or byte [bp+028h], 001h                   ; 80 4e 28 01
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -9944,9 +9952,9 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 065dfh                               ; e8 28 fa
+    call 065e0h                               ; e8 28 fa
     mov word [bp+014h], strict word 00004h    ; c7 46 14 04 00
-    jmp near 06b2ah                           ; e9 6b ff
+    jmp near 06b2bh                           ; e9 6b ff
     push strict byte 00003h                   ; 6a 03
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9956,9 +9964,9 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov si, word [bp+024h]                    ; 8b 76 24
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 065dfh                               ; e8 0b fa
+    call 065e0h                               ; e8 0b fa
     mov word [bp+014h], strict word 00005h    ; c7 46 14 05 00
-    jmp near 06b2ah                           ; e9 4e ff
+    jmp near 06b2bh                           ; e9 4e ff
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9968,9 +9976,9 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fec0h                            ; b9 c0 fe
-    call 065dfh                               ; e8 e9 f9
+    call 065e0h                               ; e8 e9 f9
     mov word [bp+014h], strict word 00006h    ; c7 46 14 06 00
-    jmp near 06b2ah                           ; e9 2c ff
+    jmp near 06b2bh                           ; e9 2c ff
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9980,9 +9988,9 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fee0h                            ; b9 e0 fe
-    call 065dfh                               ; e8 c7 f9
+    call 065e0h                               ; e8 c7 f9
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 06b2ah                           ; e9 0a ff
+    jmp near 06b2bh                           ; e9 0a ff
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9992,19 +10000,19 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 065dfh                               ; e8 a7 f9
+    call 065e0h                               ; e8 a7 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c45h                          ; 75 07
+    jne short 06c46h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06c55h                           ; 74 10
+    je short 06c56h                           ; 74 10
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06b2ah                           ; e9 dd fe
+    jmp near 06b2bh                           ; e9 dd fe
     mov word [bp+014h], strict word 00008h    ; c7 46 14 08 00
-    jmp near 06b2ah                           ; e9 d5 fe
+    jmp near 06b2bh                           ; e9 d5 fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06cc4h                          ; eb 67
+    jmp short 06cc5h                          ; eb 67
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -10014,21 +10022,21 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 065dfh                               ; e8 6b f9
+    call 065e0h                               ; e8 6b f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c81h                          ; 75 07
+    jne short 06c82h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06c89h                           ; 74 08
+    je short 06c8ah                           ; 74 08
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06b2ah                           ; e9 a1 fe
+    jmp near 06b2bh                           ; e9 a1 fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06cc4h                          ; eb 33
+    jmp short 06cc5h                          ; eb 33
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c9dh                          ; 75 06
+    jne short 06c9eh                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 06cc4h                           ; 74 27
+    je short 06cc5h                           ; 74 27
     push strict byte 00001h                   ; 6a 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
     db  0feh, 0c0h
@@ -10042,7 +10050,7 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 065dfh                               ; e8 23 f9
+    call 065e0h                               ; e8 23 f9
     xor ax, ax                                ; 31 c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
@@ -10051,36 +10059,36 @@ _int15_function32:                           ; 0xf69a3 LB 0x38a
     mov word [bp+01ch], strict word 00014h    ; c7 46 1c 14 00
     mov word [bp+01eh], strict word 00000h    ; c7 46 1e 00 00
     and byte [bp+028h], 0feh                  ; 80 66 28 fe
-    jmp near 06b9bh                           ; e9 bc fe
+    jmp near 06b9ch                           ; e9 bc fe
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 c4 a9
+    call 016ach                               ; e8 c3 a9
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 016ach                               ; e8 b7 a9
+    call 016ach                               ; e8 b6 a9
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+01ch], dx                    ; 89 56 1c
     cmp dx, 03c00h                            ; 81 fa 00 3c
-    jbe short 06d07h                          ; 76 05
+    jbe short 06d08h                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 016ach                               ; e8 9f a9
+    call 016ach                               ; e8 9e a9
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00034h                ; b8 34 00
-    call 016ach                               ; e8 92 a9
+    call 016ach                               ; e8 91 a9
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+018h], dx                    ; 89 56 18
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov word [bp+020h], ax                    ; 89 46 20
     mov word [bp+014h], dx                    ; 89 56 14
-    jmp near 06b9bh                           ; e9 6e fe
-_int15_blkmove:                              ; 0xf6d2d LB 0x18a
+    jmp near 06b9ch                           ; e9 6e fe
+_int15_blkmove:                              ; 0xf6d2e LB 0x18a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10089,7 +10097,7 @@ _int15_blkmove:                              ; 0xf6d2d LB 0x18a
     push ax                                   ; 50
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 065afh                               ; e8 74 f8
+    call 065b0h                               ; e8 74 f8
     mov di, ax                                ; 89 c7
     mov ax, word [bp+006h]                    ; 8b 46 06
     sal ax, 004h                              ; c1 e0 04
@@ -10099,7 +10107,7 @@ _int15_blkmove:                              ; 0xf6d2d LB 0x18a
     shr dx, 00ch                              ; c1 ea 0c
     mov byte [bp-006h], dl                    ; 88 56 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 06d5ah                          ; 73 05
+    jnc short 06d5bh                          ; 73 05
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
     mov byte [bp-006h], dl                    ; 88 56 fa
@@ -10107,53 +10115,53 @@ _int15_blkmove:                              ; 0xf6d2d LB 0x18a
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0002fh                ; bb 2f 00
-    call 0167ah                               ; e8 11 a9
+    call 0167ah                               ; e8 10 a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, cx                                ; 89 cb
-    call 0167ah                               ; e8 03 a9
+    call 0167ah                               ; e8 02 a9
     mov bl, byte [bp-006h]                    ; 8a 5e fa
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+006h]                    ; 8b 46 06
-    call 0165eh                               ; e8 d6 a8
+    call 0165eh                               ; e8 d5 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000dh                ; 83 c2 0d
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, 00093h                            ; bb 93 00
-    call 0165eh                               ; e8 c7 a8
+    call 0165eh                               ; e8 c6 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 d5 a8
+    call 0167ah                               ; e8 d4 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00020h                ; 83 c2 20
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0167ah                               ; e8 c6 a8
+    call 0167ah                               ; e8 c5 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00022h                ; 83 c2 22
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 b8 a8
+    call 0167ah                               ; e8 b7 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00024h                ; 83 c2 24
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 0165eh                               ; e8 8d a8
+    call 0165eh                               ; e8 8c a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00025h                ; 83 c2 25
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, 0009bh                            ; bb 9b 00
-    call 0165eh                               ; e8 7e a8
+    call 0165eh                               ; e8 7d a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00026h                ; 83 c2 26
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 8c a8
+    call 0167ah                               ; e8 8b a8
     mov ax, ss                                ; 8c d0
     mov cx, ax                                ; 89 c1
     sal cx, 004h                              ; c1 e1 04
@@ -10163,28 +10171,28 @@ _int15_blkmove:                              ; 0xf6d2d LB 0x18a
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0167ah                               ; e8 70 a8
+    call 0167ah                               ; e8 6f a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002ah                ; 83 c2 2a
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, cx                                ; 89 cb
-    call 0167ah                               ; e8 62 a8
+    call 0167ah                               ; e8 61 a8
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002ch                ; 83 c2 2c
     mov ax, word [bp+006h]                    ; 8b 46 06
-    call 0165eh                               ; e8 35 a8
+    call 0165eh                               ; e8 34 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002dh                ; 83 c2 2d
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, 00093h                            ; bb 93 00
-    call 0165eh                               ; e8 26 a8
+    call 0165eh                               ; e8 25 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002eh                ; 83 c2 2e
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 0167ah                               ; e8 34 a8
+    call 0167ah                               ; e8 33 a8
     lea bx, [bp+004h]                         ; 8d 5e 04
     mov si, word [bp+00ah]                    ; 8b 76 0a
     mov es, [bp+006h]                         ; 8e 46 06
@@ -10194,7 +10202,7 @@ _int15_blkmove:                              ; 0xf6d2d LB 0x18a
     mov ds, ax                                ; 8e d8
     mov word [00467h], bx                     ; 89 1e 67 04
     mov [00469h], ss                          ; 8c 16 69 04
-    call 06e61h                               ; e8 00 00
+    call 06e62h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00020h                   ; 6a 20
@@ -10226,7 +10234,7 @@ _int15_blkmove:                              ; 0xf6d2d LB 0x18a
     lidt [cs:0efe1h]                          ; 2e 0f 01 1e e1 ef
     int3                                      ; cc
     mov ax, di                                ; 89 f8
-    call 065afh                               ; e8 08 f7
+    call 065b0h                               ; e8 08 f7
     sti                                       ; fb
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
@@ -10235,7 +10243,7 @@ _int15_blkmove:                              ; 0xf6d2d LB 0x18a
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_inv_op_handler:                             ; 0xf6eb7 LB 0x19b
+_inv_op_handler:                             ; 0xf6eb8 LB 0x19b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10244,12 +10252,12 @@ _inv_op_handler:                             ; 0xf6eb7 LB 0x19b
     push ax                                   ; 50
     les bx, [bp+018h]                         ; c4 5e 18
     cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
-    jne short 06ecdh                          ; 75 06
+    jne short 06eceh                          ; 75 06
     inc word [bp+018h]                        ; ff 46 18
-    jmp near 0704bh                           ; e9 7e 01
+    jmp near 0704ch                           ; e9 7e 01
     cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
-    je short 06ed7h                           ; 74 03
-    jmp near 07047h                           ; e9 70 01
+    je short 06ed8h                           ; 74 03
+    jmp near 07048h                           ; e9 70 01
     mov si, 00800h                            ; be 00 08
     xor ax, ax                                ; 31 c0
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -10278,11 +10286,11 @@ _inv_op_handler:                             ; 0xf6eb7 LB 0x19b
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f28h                               ; e2 fa
+    loop 06f29h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f36h                          ; 75 04
+    jne short 06f37h                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f3bh                           ; 74 05
+    je short 06f3ch                           ; 74 05
     mov word [bp-008h], strict word 00001h    ; c7 46 f8 01 00
     mov es, [bp-006h]                         ; 8e 46 fa
     mov bl, byte [es:si+04ah]                 ; 26 8a 5c 4a
@@ -10293,11 +10301,11 @@ _inv_op_handler:                             ; 0xf6eb7 LB 0x19b
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f51h                               ; e2 fa
+    loop 06f52h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f5fh                          ; 75 04
+    jne short 06f60h                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f63h                           ; 74 04
+    je short 06f64h                           ; 74 04
     or byte [bp-008h], 002h                   ; 80 4e f8 02
     push strict byte 00000h                   ; 6a 00
     push 00800h                               ; 68 00 08
@@ -10351,10 +10359,10 @@ _inv_op_handler:                             ; 0xf6eb7 LB 0x19b
     lmsw ax                                   ; 0f 01 f0
     mov ax, strict word 00008h                ; b8 08 00
     test cx, strict word 00001h               ; f7 c1 01 00
-    je near 07004h                            ; 0f 84 02 00
+    je near 07005h                            ; 0f 84 02 00
     mov es, ax                                ; 8e c0
     test cx, strict word 00002h               ; f7 c1 02 00
-    je near 0702ch                            ; 0f 84 20 00
+    je near 0702dh                            ; 0f 84 20 00
     mov bx, word [word ss:00000h]             ; 36 8b 1e 00 00
     mov word [word ss:00008h], bx             ; 36 89 1e 08 00
     mov bx, word [word ss:00002h]             ; 36 8b 1e 02 00
@@ -10371,144 +10379,144 @@ _inv_op_handler:                             ; 0xf6eb7 LB 0x19b
     sub sp, strict byte 00006h                ; 83 ec 06
     mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
     iret                                      ; cf
-    jmp short 0704bh                          ; eb 04
+    jmp short 0704ch                          ; eb 04
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 07048h                          ; eb fd
+    jmp short 07049h                          ; eb fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf7052 LB 0x28
+init_rtc_:                                   ; 0xf7053 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016c7h                               ; e8 68 a6
+    call 016c7h                               ; e8 67 a6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 5f a6
+    call 016c7h                               ; e8 5e a6
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016ach                               ; e8 3e a6
+    call 016ach                               ; e8 3d a6
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 016ach                               ; e8 38 a6
+    call 016ach                               ; e8 37 a6
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf707a LB 0x21
+rtc_updating_:                               ; 0xf707b LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 07092h                           ; 74 0e
+    je short 07093h                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016ach                               ; e8 22 a6
+    call 016ach                               ; e8 21 a6
     test AL, strict byte 080h                 ; a8 80
-    jne short 07081h                          ; 75 f3
+    jne short 07082h                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 07095h                          ; eb 03
+    jmp short 07096h                          ; eb 03
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-_int70_function:                             ; 0xf709b LB 0xbf
+_int70_function:                             ; 0xf709c LB 0xbf
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push ax                                   ; 50
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 06 a6
+    call 016ach                               ; e8 05 a6
     mov bl, al                                ; 88 c3
     mov byte [bp-004h], al                    ; 88 46 fc
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016ach                               ; e8 fb a5
+    call 016ach                               ; e8 fa a5
     mov dl, al                                ; 88 c2
     test bl, 060h                             ; f6 c3 60
-    jne short 070bbh                          ; 75 03
-    jmp near 07141h                           ; e9 86 00
+    jne short 070bch                          ; 75 03
+    jmp near 07142h                           ; e9 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 070c3h                           ; 74 04
+    je short 070c4h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dl, 040h                             ; f6 c2 40
-    je short 0712bh                           ; 74 63
+    je short 0712ch                           ; 74 63
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 7f a5
+    call 01650h                               ; e8 7e a5
     test al, al                               ; 84 c0
-    je short 07141h                           ; 74 6c
+    je short 07142h                           ; 74 6c
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01688h                               ; e8 aa a5
+    call 01688h                               ; e8 a9 a5
     test dx, dx                               ; 85 d2
-    jne short 0712dh                          ; 75 4b
+    jne short 0712eh                          ; 75 4b
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 0712dh                          ; 73 46
+    jnc short 0712eh                          ; 73 46
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 7c a5
+    call 0166ch                               ; e8 7b a5
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 71 a5
+    call 0166ch                               ; e8 70 a5
     mov cx, ax                                ; 89 c1
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 56 a5
+    call 0165eh                               ; e8 55 a5
     mov dl, byte [bp-004h]                    ; 8a 56 fc
     and dl, 037h                              ; 80 e2 37
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 b1 a5
+    call 016c7h                               ; e8 b0 a5
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01650h                               ; e8 33 a5
+    call 01650h                               ; e8 32 a5
     mov bl, al                                ; 88 c3
     or bl, 080h                               ; 80 cb 80
     xor bh, bh                                ; 30 ff
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 33 a5
-    jmp short 07141h                          ; eb 14
+    call 0165eh                               ; e8 32 a5
+    jmp short 07142h                          ; eb 14
     mov bx, ax                                ; 89 c3
     add bx, 0fc2fh                            ; 81 c3 2f fc
     mov cx, dx                                ; 89 d1
     adc cx, strict byte 0ffffh                ; 83 d1 ff
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0169ah                               ; e8 59 a5
-    call 0e030h                               ; e8 ec 6e
+    call 0169ah                               ; e8 58 a5
+    call 0e030h                               ; e8 eb 6e
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    jo short 071bdh                           ; 70 71
-    xchg di, ax                               ; 97
-    jno short 0710bh                          ; 71 bc
-    jno short 07149h                          ; 71 f8
-    jno short 0719dh                          ; 71 4a
-    jc short 070d6h                           ; 72 81
-    jc short 0711fh                           ; 72 c8
-    jc short 0717ch                           ; 72 23
+    jno short 071beh                          ; 71 71
+    cbw                                       ; 98
+    jno short 0710dh                          ; 71 bd
+    jno short 0714bh                          ; 71 f9
+    jno short 0719fh                          ; 71 4b
+    jc short 070d8h                           ; 72 82
+    jc short 07121h                           ; 72 c9
+    jc short 0717eh                           ; 72 24
     db  073h
-_int1a_function:                             ; 0xf715a LB 0x1d9
+_int1a_function:                             ; 0xf715b LB 0x1d9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sti                                       ; fb
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe short 071c3h                         ; 77 5e
+    jnbe short 071c4h                         ; 77 5e
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+0714ah]                   ; 2e ff a7 4a 71
+    jmp word [cs:bx+0714bh]                   ; 2e ff a7 4b 71
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10523,7 +10531,7 @@ _int1a_function:                             ; 0xf715a LB 0x1d9
     mov byte [bp+012h], al                    ; 88 46 12
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
-    jmp short 071c3h                          ; eb 2c
+    jmp short 071c4h                          ; eb 2c
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10537,23 +10545,23 @@ _int1a_function:                             ; 0xf715a LB 0x1d9
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 071c3h                          ; eb 07
-    call 0707ah                               ; e8 bb fe
+    jmp short 071c4h                          ; eb 07
+    call 0707bh                               ; e8 bb fe
     test ax, ax                               ; 85 c0
-    je short 071c6h                           ; 74 03
-    jmp near 071f4h                           ; e9 2e 00
+    je short 071c7h                           ; 74 03
+    jmp near 071f5h                           ; e9 2e 00
     xor ax, ax                                ; 31 c0
-    call 016ach                               ; e8 e1 a4
+    call 016ach                               ; e8 e0 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 016ach                               ; e8 d8 a4
+    call 016ach                               ; e8 d7 a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 016ach                               ; e8 cf a4
+    call 016ach                               ; e8 ce a4
     mov dl, al                                ; 88 c2
     mov byte [bp+011h], al                    ; 88 46 11
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 c4 a4
+    call 016ach                               ; e8 c3 a4
     and AL, strict byte 001h                  ; 24 01
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov byte [bp+013h], 000h                  ; c6 46 13 00
@@ -10561,24 +10569,24 @@ _int1a_function:                             ; 0xf715a LB 0x1d9
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 0707ah                               ; e8 7f fe
+    call 0707bh                               ; e8 7f fe
     test ax, ax                               ; 85 c0
-    je short 07202h                           ; 74 03
-    call 07052h                               ; e8 50 fe
+    je short 07203h                           ; 74 03
+    call 07053h                               ; e8 50 fe
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     xor ax, ax                                ; 31 c0
-    call 016c7h                               ; e8 bb a4
+    call 016c7h                               ; e8 ba a4
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00002h                ; b8 02 00
-    call 016c7h                               ; e8 b0 a4
+    call 016c7h                               ; e8 af a4
     mov dl, byte [bp+011h]                    ; 8a 56 11
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00004h                ; b8 04 00
-    call 016c7h                               ; e8 a5 a4
+    call 016c7h                               ; e8 a4 a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 84 a4
+    call 016ach                               ; e8 83 a4
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
     or bl, 002h                               ; 80 cb 02
@@ -10588,78 +10596,78 @@ _int1a_function:                             ; 0xf715a LB 0x1d9
     mov dl, bl                                ; 88 da
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 86 a4
+    call 016c7h                               ; e8 85 a4
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp short 071f4h                          ; eb aa
+    jmp short 071f5h                          ; eb aa
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 0707ah                               ; e8 29 fe
+    call 0707bh                               ; e8 29 fe
     test ax, ax                               ; 85 c0
-    je short 07257h                           ; 74 02
-    jmp short 071f4h                          ; eb 9d
+    je short 07258h                           ; 74 02
+    jmp short 071f5h                          ; eb 9d
     mov ax, strict word 00009h                ; b8 09 00
-    call 016ach                               ; e8 4f a4
+    call 016ach                               ; e8 4e a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 016ach                               ; e8 46 a4
+    call 016ach                               ; e8 45 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 016ach                               ; e8 3d a4
+    call 016ach                               ; e8 3c a4
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 016ach                               ; e8 34 a4
+    call 016ach                               ; e8 33 a4
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 071f4h                           ; e9 73 ff
-    call 0707ah                               ; e8 f6 fd
+    jmp near 071f5h                           ; e9 73 ff
+    call 0707bh                               ; e8 f6 fd
     test ax, ax                               ; 85 c0
-    je short 0728eh                           ; 74 06
-    call 07052h                               ; e8 c7 fd
-    jmp near 071f4h                           ; e9 66 ff
+    je short 0728fh                           ; 74 06
+    call 07053h                               ; e8 c7 fd
+    jmp near 071f5h                           ; e9 66 ff
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00009h                ; b8 09 00
-    call 016c7h                               ; e8 2e a4
+    call 016c7h                               ; e8 2d a4
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00008h                ; b8 08 00
-    call 016c7h                               ; e8 23 a4
+    call 016c7h                               ; e8 22 a4
     mov dl, byte [bp+00eh]                    ; 8a 56 0e
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00007h                ; b8 07 00
-    call 016c7h                               ; e8 18 a4
+    call 016c7h                               ; e8 17 a4
     mov dl, byte [bp+011h]                    ; 8a 56 11
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00032h                ; b8 32 00
-    call 016c7h                               ; e8 0d a4
+    call 016c7h                               ; e8 0c a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 ec a3
+    call 016ach                               ; e8 eb a3
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 07237h                           ; e9 6f ff
+    jmp near 07238h                           ; e9 6f ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 de a3
+    call 016ach                               ; e8 dd a3
     mov bl, al                                ; 88 c3
     mov word [bp+012h], strict word 00000h    ; c7 46 12 00 00
     test AL, strict byte 020h                 ; a8 20
-    je short 072dch                           ; 74 03
-    jmp near 071f4h                           ; e9 18 ff
-    call 0707ah                               ; e8 9b fd
+    je short 072ddh                           ; 74 03
+    jmp near 071f5h                           ; e9 18 ff
+    call 0707bh                               ; e8 9b fd
     test ax, ax                               ; 85 c0
-    je short 072e6h                           ; 74 03
-    call 07052h                               ; e8 6c fd
+    je short 072e7h                           ; 74 03
+    call 07053h                               ; e8 6c fd
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00001h                ; b8 01 00
-    call 016c7h                               ; e8 d6 a3
+    call 016c7h                               ; e8 d5 a3
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00003h                ; b8 03 00
-    call 016c7h                               ; e8 cb a3
+    call 016c7h                               ; e8 ca a3
     mov dl, byte [bp+011h]                    ; 8a 56 11
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00005h                ; b8 05 00
-    call 016c7h                               ; e8 c0 a3
+    call 016c7h                               ; e8 bf a3
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10671,15 +10679,15 @@ _int1a_function:                             ; 0xf715a LB 0x1d9
     or dl, 020h                               ; 80 ca 20
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 a7 a3
-    jmp near 071f4h                           ; e9 d1 fe
+    call 016c7h                               ; e8 a6 a3
+    jmp near 071f5h                           ; e9 d1 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 83 a3
+    call 016ach                               ; e8 82 a3
     mov bl, al                                ; 88 c3
     mov dl, al                                ; 88 c2
     and dl, 057h                              ; 80 e2 57
-    jmp near 07239h                           ; e9 06 ff
-send_to_mouse_ctrl_:                         ; 0xf7333 LB 0x34
+    jmp near 0723ah                           ; e9 06 ff
+send_to_mouse_ctrl_:                         ; 0xf7334 LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10690,11 +10698,11 @@ send_to_mouse_ctrl_:                         ; 0xf7333 LB 0x34
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 07352h                           ; 74 0e
+    je short 07353h                           ; 74 0e
     push 008eeh                               ; 68 ee 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 17 a6
+    call 01966h                               ; e8 16 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
     mov dx, strict word 00064h                ; ba 64 00
@@ -10708,7 +10716,7 @@ send_to_mouse_ctrl_:                         ; 0xf7333 LB 0x34
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf7367 LB 0x5d
+get_mouse_data_:                             ; 0xf7368 LB 0x5d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10723,9 +10731,9 @@ get_mouse_data_:                             ; 0xf7367 LB 0x5d
     ; sub ah, ah                                ; 2a e4
     and ax, strict word 00021h                ; 25 21 00
     cmp ax, strict word 00021h                ; 3d 21 00
-    je short 073aah                           ; 74 28
+    je short 073abh                           ; 74 28
     test cx, cx                               ; 85 c9
-    je short 073aah                           ; 74 24
+    je short 073abh                           ; 74 24
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10742,13 +10750,13 @@ get_mouse_data_:                             ; 0xf7367 LB 0x5d
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cmp dx, ax                                ; 39 c2
-    je short 07391h                           ; 74 ea
+    je short 07392h                           ; 74 ea
     dec cx                                    ; 49
-    jmp short 07374h                          ; eb ca
+    jmp short 07375h                          ; eb ca
     test cx, cx                               ; 85 c9
-    jne short 073b2h                          ; 75 04
+    jne short 073b3h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 073bdh                          ; eb 0b
+    jmp short 073beh                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10760,7 +10768,7 @@ get_mouse_data_:                             ; 0xf7367 LB 0x5d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf73c4 LB 0x32
+set_kbd_command_byte_:                       ; 0xf73c5 LB 0x32
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10771,11 +10779,11 @@ set_kbd_command_byte_:                       ; 0xf73c4 LB 0x32
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 073e3h                           ; 74 0e
+    je short 073e4h                           ; 74 0e
     push 008f8h                               ; 68 f8 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 86 a5
+    call 01966h                               ; e8 85 a5
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -10788,13 +10796,13 @@ set_kbd_command_byte_:                       ; 0xf73c4 LB 0x32
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf73f6 LB 0xd2
+_int74_function:                             ; 0xf73f7 LB 0xd2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00008h                ; 83 ec 08
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 67 a2
+    call 0166ch                               ; e8 66 a2
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
     mov dx, strict word 00064h                ; ba 64 00
@@ -10803,7 +10811,7 @@ _int74_function:                             ; 0xf73f6 LB 0xd2
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne short 0743ah                          ; 75 22
+    jne short 0743bh                          ; 75 22
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10811,15 +10819,15 @@ _int74_function:                             ; 0xf73f6 LB 0xd2
     mov bl, al                                ; 88 c3
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 28 a2
+    call 01650h                               ; e8 27 a2
     mov byte [bp-002h], al                    ; 88 46 fe
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 1d a2
+    call 01650h                               ; e8 1c a2
     mov byte [bp-006h], al                    ; 88 46 fa
     test AL, strict byte 080h                 ; a8 80
-    jne short 0743dh                          ; 75 03
-    jmp near 074b4h                           ; e9 77 00
+    jne short 0743eh                          ; 75 03
+    jmp near 074b5h                           ; e9 77 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 007h                  ; 24 07
     mov byte [bp-004h], al                    ; 88 46 fc
@@ -10833,113 +10841,113 @@ _int74_function:                             ; 0xf73f6 LB 0xd2
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 fe a1
+    call 0165eh                               ; e8 fd a1
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp al, byte [bp-004h]                    ; 3a 46 fc
-    jc short 074a4h                           ; 72 3c
+    jc short 074a5h                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 e0 a1
+    call 01650h                               ; e8 df a1
     xor ah, ah                                ; 30 e4
     mov word [bp+00ch], ax                    ; 89 46 0c
     mov dx, strict word 00029h                ; ba 29 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 d3 a1
+    call 01650h                               ; e8 d2 a1
     xor ah, ah                                ; 30 e4
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov dx, strict word 0002ah                ; ba 2a 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 c6 a1
+    call 01650h                               ; e8 c5 a1
     xor ah, ah                                ; 30 e4
     mov word [bp+008h], ax                    ; 89 46 08
     xor al, al                                ; 30 c0
     mov word [bp+006h], ax                    ; 89 46 06
     mov byte [bp-002h], ah                    ; 88 66 fe
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 074a7h                           ; 74 0a
+    je short 074a8h                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 074a7h                          ; eb 03
+    jmp short 074a8h                          ; eb 03
     inc byte [bp-002h]                        ; fe 46 fe
     mov bl, byte [bp-002h]                    ; 8a 5e fe
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 aa a1
+    call 0165eh                               ; e8 a9 a1
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    or si, word [di-079h]                     ; 0b 75 87
-    jne short 074c1h                          ; 75 04
-    jbe short 07458h                          ; 76 99
-    jbe short 074c6h                          ; 76 05
-    jnbe short 07515h                         ; 77 52
-    jne short 074f2h                          ; 75 2d
-    jnbe short 074b9h                         ; 77 f2
+    or AL, strict byte 075h                   ; 0c 75
+    mov byte [di+005h], dh                    ; 88 75 05
+    jbe short 0745ah                          ; 76 9a
+    jbe short 074c8h                          ; 76 06
+    jnbe short 07517h                         ; 77 53
+    jne short 074f4h                          ; 75 2e
+    jnbe short 074bbh                         ; 77 f3
     db  077h
-_int15_function_mouse:                       ; 0xf74c8 LB 0x38d
+_int15_function_mouse:                       ; 0xf74c9 LB 0x38d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     sub sp, strict byte 00006h                ; 83 ec 06
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 94 a1
+    call 0166ch                               ; e8 93 a1
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 074ebh                          ; 76 0b
+    jbe short 074ech                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 0784fh                           ; e9 64 03
+    jmp near 07850h                           ; e9 64 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 073c4h                               ; e8 d3 fe
+    call 073c5h                               ; e8 d3 fe
     and word [bp+018h], strict byte 0fffeh    ; 83 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov al, byte [bp+012h]                    ; 8a 46 12
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe short 07560h                         ; 77 60
+    jnbe short 07561h                         ; 77 60
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     add si, ax                                ; 01 c6
-    jmp word [cs:si+074b8h]                   ; 2e ff a4 b8 74
+    jmp word [cs:si+074b9h]                   ; 2e ff a4 b9 74
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe short 07563h                         ; 77 52
+    jnbe short 07564h                         ; 77 52
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 37 a1
+    call 01650h                               ; e8 36 a1
     test AL, strict byte 080h                 ; a8 80
-    jne short 07528h                          ; 75 0b
+    jne short 07529h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 07849h                           ; e9 21 03
+    jmp near 0784ah                           ; e9 21 03
     cmp byte [bp+00dh], 000h                  ; 80 7e 0d 00
-    jne short 07532h                          ; 75 04
+    jne short 07533h                          ; 75 04
     mov AL, strict byte 0f5h                  ; b0 f5
-    jmp short 07534h                          ; eb 02
+    jmp short 07535h                          ; eb 02
     mov AL, strict byte 0f4h                  ; b0 f4
     xor ah, ah                                ; 30 e4
-    call 07333h                               ; e8 fa fd
+    call 07334h                               ; e8 fa fd
     test al, al                               ; 84 c0
-    jne short 07566h                          ; 75 29
+    jne short 07567h                          ; 75 29
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 22 fe
+    call 07368h                               ; e8 22 fe
     test al, al                               ; 84 c0
-    je short 0754fh                           ; 74 06
+    je short 07550h                           ; 74 06
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    jne short 07566h                          ; 75 17
-    jmp near 07849h                           ; e9 f7 02
+    jne short 07567h                          ; 75 17
+    jmp near 0784ah                           ; e9 f7 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 0755dh                           ; 72 04
+    jc short 0755eh                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 07569h                          ; 76 0c
-    jmp near 076fbh                           ; e9 9b 01
-    jmp near 07836h                           ; e9 d3 02
-    jmp near 07841h                           ; e9 db 02
-    jmp near 077cdh                           ; e9 64 02
+    jbe short 0756ah                          ; 76 0c
+    jmp near 076fch                           ; e9 9b 01
+    jmp near 07837h                           ; e9 d3 02
+    jmp near 07842h                           ; e9 db 02
+    jmp near 077ceh                           ; e9 64 02
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 df a0
+    call 01650h                               ; e8 de a0
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
     ; dec ah                                    ; fe cc
@@ -10949,283 +10957,283 @@ _int15_function_mouse:                       ; 0xf74c8 LB 0x38d
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 d7 a0
+    call 0165eh                               ; e8 d6 a0
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 c1 a0
+    call 01650h                               ; e8 c0 a0
     mov bl, al                                ; 88 c3
     and bl, 0f8h                              ; 80 e3 f8
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 c0 a0
+    call 0165eh                               ; e8 bf a0
     mov ax, 000ffh                            ; b8 ff 00
-    call 07333h                               ; e8 8f fd
+    call 07334h                               ; e8 8f fd
     test al, al                               ; 84 c0
-    jne short 07566h                          ; 75 be
+    jne short 07567h                          ; 75 be
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07367h                               ; e8 b7 fd
+    call 07368h                               ; e8 b7 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-004h], 0feh                  ; 80 7e fc fe
-    jne short 075c2h                          ; 75 0a
+    jne short 075c3h                          ; 75 0a
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp short 0754fh                          ; eb 8d
+    jmp short 07550h                          ; eb 8d
     cmp byte [bp-004h], 0fah                  ; 80 7e fc fa
-    je short 075d9h                           ; 74 11
+    je short 075dah                           ; 74 11
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 00903h                               ; 68 03 09
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 90 a3
+    call 01966h                               ; e8 8f a3
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 07566h                          ; 75 89
+    jne short 07567h                          ; 75 89
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 82 fd
+    call 07368h                               ; e8 82 fd
     test al, al                               ; 84 c0
-    jne short 0763fh                          ; 75 56
+    jne short 07640h                          ; 75 56
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07367h                               ; e8 76 fd
+    call 07368h                               ; e8 76 fd
     test al, al                               ; 84 c0
-    jne short 0763fh                          ; 75 4a
+    jne short 07640h                          ; 75 4a
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00ch], al                    ; 88 46 0c
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+00dh], al                    ; 88 46 0d
-    jmp near 07849h                           ; e9 45 02
+    jmp near 0784ah                           ; e9 45 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 0761bh                           ; 72 10
-    jbe short 07639h                          ; 76 2c
+    jc short 0761ch                           ; 72 10
+    jbe short 0763ah                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 0764eh                           ; 74 3d
+    je short 0764fh                           ; 74 3d
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 07648h                           ; 74 33
+    je short 07649h                           ; 74 33
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 07642h                           ; 74 29
-    jmp short 07654h                          ; eb 39
+    je short 07643h                           ; 74 29
+    jmp short 07655h                          ; eb 39
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 07633h                           ; 74 14
+    je short 07634h                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 0762dh                           ; 74 0a
+    je short 0762eh                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 07654h                          ; 75 2d
+    jne short 07655h                          ; 75 2d
     mov byte [bp-008h], 00ah                  ; c6 46 f8 0a
-    jmp short 07658h                          ; eb 2b
+    jmp short 07659h                          ; eb 2b
     mov byte [bp-008h], 014h                  ; c6 46 f8 14
-    jmp short 07658h                          ; eb 25
+    jmp short 07659h                          ; eb 25
     mov byte [bp-008h], 028h                  ; c6 46 f8 28
-    jmp short 07658h                          ; eb 1f
+    jmp short 07659h                          ; eb 1f
     mov byte [bp-008h], 03ch                  ; c6 46 f8 3c
-    jmp short 07658h                          ; eb 19
-    jmp near 077cdh                           ; e9 8b 01
+    jmp short 07659h                          ; eb 19
+    jmp near 077ceh                           ; e9 8b 01
     mov byte [bp-008h], 050h                  ; c6 46 f8 50
-    jmp short 07658h                          ; eb 10
+    jmp short 07659h                          ; eb 10
     mov byte [bp-008h], 064h                  ; c6 46 f8 64
-    jmp short 07658h                          ; eb 0a
+    jmp short 07659h                          ; eb 0a
     mov byte [bp-008h], 0c8h                  ; c6 46 f8 c8
-    jmp short 07658h                          ; eb 04
+    jmp short 07659h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jbe short 0768eh                          ; 76 30
+    jbe short 0768fh                          ; 76 30
     mov ax, 000f3h                            ; b8 f3 00
-    call 07333h                               ; e8 cf fc
+    call 07334h                               ; e8 cf fc
     test al, al                               ; 84 c0
-    jne short 07683h                          ; 75 1b
+    jne short 07684h                          ; 75 1b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07367h                               ; e8 f7 fc
+    call 07368h                               ; e8 f7 fc
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 07333h                               ; e8 bb fc
+    call 07334h                               ; e8 bb fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07367h                               ; e8 e7 fc
-    jmp near 07849h                           ; e9 c6 01
+    call 07368h                               ; e8 e7 fc
+    jmp near 0784ah                           ; e9 c6 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07849h                           ; e9 bb 01
+    jmp near 0784ah                           ; e9 bb 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp near 07849h                           ; e9 b0 01
+    jmp near 0784ah                           ; e9 b0 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 076fbh                          ; 73 5c
+    jnc short 076fch                          ; 73 5c
     mov ax, 000e8h                            ; b8 e8 00
-    call 07333h                               ; e8 8e fc
+    call 07334h                               ; e8 8e fc
     test al, al                               ; 84 c0
-    jne short 076f1h                          ; 75 48
+    jne short 076f2h                          ; 75 48
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 b6 fc
+    call 07368h                               ; e8 b6 fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 076c8h                           ; 74 11
+    je short 076c9h                           ; 74 11
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 a1 a2
+    call 01966h                               ; e8 a0 a2
     add sp, strict byte 00006h                ; 83 c4 06
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     xor ah, ah                                ; 30 e4
-    call 07333h                               ; e8 63 fc
+    call 07334h                               ; e8 63 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 8f fc
+    call 07368h                               ; e8 8f fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 0772ah                           ; 74 4c
+    je short 0772bh                           ; 74 4c
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 7a a2
+    call 01966h                               ; e8 79 a2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 0772ah                          ; eb 39
+    jmp short 0772bh                          ; eb 39
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 0772ah                          ; eb 2f
+    jmp short 0772bh                          ; eb 2f
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp short 0772ah                          ; eb 25
+    jmp short 0772bh                          ; eb 25
     mov ax, 000f2h                            ; b8 f2 00
-    call 07333h                               ; e8 28 fc
+    call 07334h                               ; e8 28 fc
     test al, al                               ; 84 c0
-    jne short 07722h                          ; 75 13
+    jne short 07723h                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 50 fc
+    call 07368h                               ; e8 50 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07367h                               ; e8 48 fc
-    jmp near 075fbh                           ; e9 d9 fe
+    call 07368h                               ; e8 48 fc
+    jmp near 075fch                           ; e9 d9 fe
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07849h                           ; e9 1c 01
+    jmp near 0784ah                           ; e9 1c 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 0773bh                          ; 76 07
+    jbe short 0773ch                          ; 76 07
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 077a2h                          ; 76 6a
-    jmp near 077d7h                           ; e9 9c 00
+    jbe short 077a3h                          ; 76 6a
+    jmp near 077d8h                           ; e9 9c 00
     mov ax, 000e9h                            ; b8 e9 00
-    call 07333h                               ; e8 f2 fb
+    call 07334h                               ; e8 f2 fb
     test al, al                               ; 84 c0
-    jne short 077abh                          ; 75 66
+    jne short 077ach                          ; 75 66
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 1a fc
+    call 07368h                               ; e8 1a fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07766h                           ; 74 11
+    je short 07767h                           ; 74 11
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 03 a2
+    call 01966h                               ; e8 02 a2
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 077cdh                          ; 75 63
+    jne short 077ceh                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 f5 fb
+    call 07368h                               ; e8 f5 fb
     test al, al                               ; 84 c0
-    jne short 077cdh                          ; 75 57
+    jne short 077ceh                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07367h                               ; e8 e9 fb
+    call 07368h                               ; e8 e9 fb
     test al, al                               ; 84 c0
-    jne short 077cdh                          ; 75 4b
+    jne short 077ceh                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07367h                               ; e8 dd fb
+    call 07368h                               ; e8 dd fb
     test al, al                               ; 84 c0
-    jne short 077cdh                          ; 75 3f
+    jne short 077ceh                          ; 75 3f
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00ch], al                    ; 88 46 0c
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+010h], al                    ; 88 46 10
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp short 0772ah                          ; eb 88
+    jmp short 0772bh                          ; eb 88
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 077adh                          ; 75 07
+    jne short 077aeh                          ; 75 07
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 077b0h                          ; eb 05
-    jmp short 077cdh                          ; eb 20
+    jmp short 077b1h                          ; eb 05
+    jmp short 077ceh                          ; eb 20
     mov ax, 000e7h                            ; b8 e7 00
-    call 07333h                               ; e8 80 fb
+    call 07334h                               ; e8 80 fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 077c9h                          ; 75 10
+    jne short 077cah                          ; 75 10
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07367h                               ; e8 a6 fb
+    call 07368h                               ; e8 a6 fb
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 077c9h                           ; 74 02
+    je short 077cah                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je short 07834h                           ; 74 67
+    je short 07835h                           ; 74 67
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 07834h                          ; eb 5d
+    jmp short 07835h                          ; eb 5d
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 0095ah                               ; 68 5a 09
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 81 a1
+    call 01966h                               ; e8 80 a1
     add sp, strict byte 00006h                ; 83 c4 06
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp short 07849h                          ; eb 57
+    jmp short 0784ah                          ; eb 57
     mov si, word [bp+00ch]                    ; 8b 76 0c
     mov bx, si                                ; 89 f3
     mov dx, strict word 00022h                ; ba 22 00
     mov ax, cx                                ; 89 c8
-    call 0167ah                               ; e8 7b 9e
+    call 0167ah                               ; e8 7a 9e
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, strict word 00024h                ; ba 24 00
     mov ax, cx                                ; 89 c8
-    call 0167ah                               ; e8 70 9e
+    call 0167ah                               ; e8 6f 9e
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 3e 9e
+    call 01650h                               ; e8 3d 9e
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 07826h                          ; 75 0e
+    jne short 07827h                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 07826h                          ; 75 08
+    jne short 07827h                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 07828h                           ; 74 06
+    je short 07829h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 07828h                          ; eb 02
+    jmp short 07829h                          ; eb 02
     or AL, strict byte 080h                   ; 0c 80
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 2a 9e
-    jmp short 07849h                          ; eb 13
+    call 0165eh                               ; e8 29 9e
+    jmp short 0784ah                          ; eb 13
     push 00974h                               ; 68 74 09
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 28 a1
+    call 01966h                               ; e8 27 a1
     add sp, strict byte 00004h                ; 83 c4 04
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
     mov ax, strict word 00047h                ; b8 47 00
-    call 073c4h                               ; e8 75 fb
+    call 073c5h                               ; e8 75 fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf7855 LB 0xaf
+_int17_function:                             ; 0xf7856 LB 0xaf
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11235,26 +11243,26 @@ _int17_function:                             ; 0xf7855 LB 0xaf
     add dx, dx                                ; 01 d2
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 03 9e
+    call 0166ch                               ; e8 02 9e
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc short 0787fh                          ; 73 0c
+    jnc short 07880h                          ; 73 0c
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc short 0787fh                          ; 73 04
+    jnc short 07880h                          ; 73 04
     test bx, bx                               ; 85 db
-    jnbe short 07882h                         ; 77 03
-    jmp near 078fah                           ; e9 78 00
+    jnbe short 07883h                         ; 77 03
+    jmp near 078fbh                           ; e9 78 00
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00078h                ; 83 c2 78
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 c3 9d
+    call 01650h                               ; e8 c2 9d
     xor ah, ah                                ; 30 e4
     mov cx, ax                                ; 89 c1
     sal cx, 008h                              ; c1 e1 08
     cmp byte [bp+013h], 000h                  ; 80 7e 13 00
-    jne short 078c6h                          ; 75 2c
+    jne short 078c7h                          ; 75 2c
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11274,13 +11282,13 @@ _int17_function:                             ; 0xf7855 LB 0xaf
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 078c6h                           ; 74 07
+    je short 078c7h                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 078c6h                           ; 74 03
+    je short 078c7h                           ; 74 03
     dec cx                                    ; 49
-    jmp short 078b5h                          ; eb ef
+    jmp short 078b6h                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 078e1h                          ; 75 15
+    jne short 078e2h                          ; 75 15
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -11299,16 +11307,16 @@ _int17_function:                             ; 0xf7855 LB 0xaf
     xor AL, strict byte 048h                  ; 34 48
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 078f4h                          ; 75 04
+    jne short 078f5h                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 078feh                          ; eb 04
+    jmp short 078ffh                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-wait_:                                       ; 0xf7904 LB 0xaf
+wait_:                                       ; 0xf7905 LB 0xaf
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11326,28 +11334,28 @@ wait_:                                       ; 0xf7904 LB 0xaf
     xor cx, cx                                ; 31 c9
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01688h                               ; e8 61 9d
+    call 01688h                               ; e8 60 9d
     mov word [bp-010h], ax                    ; 89 46 f0
     mov bx, dx                                ; 89 d3
     hlt                                       ; f4
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01688h                               ; e8 53 9d
+    call 01688h                               ; e8 52 9d
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 07945h                         ; 77 07
-    jne short 0794ch                          ; 75 0c
+    jnbe short 07946h                         ; 77 07
+    jne short 0794dh                          ; 75 0c
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jbe short 0794ch                          ; 76 07
+    jbe short 0794dh                          ; 76 07
     sub ax, word [bp-010h]                    ; 2b 46 f0
     sbb dx, bx                                ; 19 da
-    jmp short 07957h                          ; eb 0b
+    jmp short 07958h                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 07957h                           ; 72 07
-    jne short 0795bh                          ; 75 09
+    jc short 07958h                           ; 72 07
+    jne short 0795ch                          ; 75 09
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnc short 0795bh                          ; 73 04
+    jnc short 0795ch                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -11355,13 +11363,13 @@ wait_:                                       ; 0xf7904 LB 0xaf
     mov bx, di                                ; 89 fb
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je short 0796fh                           ; 74 05
+    je short 07970h                           ; 74 05
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 07971h                           ; e9 02 00
+    jmp near 07972h                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 07998h                           ; 74 23
+    je short 07999h                           ; 74 23
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     int 016h                                  ; cd 16
@@ -11372,17 +11380,17 @@ wait_:                                       ; 0xf7904 LB 0xaf
     push ax                                   ; 50
     push 00996h                               ; 68 96 09
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 db 9f
+    call 01966h                               ; e8 da 9f
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 07998h                           ; 74 04
+    je short 07999h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 079aah                          ; eb 12
+    jmp short 079abh                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 0792ch                         ; 7f 90
-    jne short 079a2h                          ; 75 04
+    jnle short 0792dh                         ; 7f 90
+    jne short 079a3h                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 0792ch                         ; 77 8a
+    jnbe short 0792dh                         ; 77 8a
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     push ax                                   ; 50
     popfw                                     ; 9d
@@ -11394,7 +11402,7 @@ wait_:                                       ; 0xf7904 LB 0xaf
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf79b3 LB 0x16
+read_logo_byte_:                             ; 0xf79b4 LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11409,7 +11417,7 @@ read_logo_byte_:                             ; 0xf79b3 LB 0x16
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf79c9 LB 0x14
+read_logo_word_:                             ; 0xf79ca LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11422,7 +11430,7 @@ read_logo_word_:                             ; 0xf79c9 LB 0x14
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
+print_detected_harddisks_:                   ; 0xf79de LB 0x13a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11434,31 +11442,31 @@ print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 7c 9c
+    call 0166ch                               ; e8 7b 9c
     mov si, ax                                ; 89 c6
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
     mov dx, 00304h                            ; ba 04 03
-    call 01650h                               ; e8 50 9c
+    call 01650h                               ; e8 4f 9c
     mov byte [bp-00ch], al                    ; 88 46 f4
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp-00ch]                    ; 3a 5e f4
-    jnc short 07a67h                          ; 73 5d
+    jnc short 07a68h                          ; 73 5d
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     add dx, 00305h                            ; 81 c2 05 03
     mov ax, si                                ; 89 f0
-    call 01650h                               ; e8 37 9c
+    call 01650h                               ; e8 36 9c
     mov bh, al                                ; 88 c7
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 07a44h                           ; 72 25
+    jc short 07a45h                           ; 72 25
     test cl, cl                               ; 84 c9
-    jne short 07a30h                          ; 75 0d
+    jne short 07a31h                          ; 75 0d
     push 009a7h                               ; 68 a7 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 3b 9f
+    call 01966h                               ; e8 3a 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     mov al, bl                                ; 88 d8
@@ -11467,38 +11475,38 @@ print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
     push ax                                   ; 50
     push 009bch                               ; 68 bc 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 28 9f
+    call 01966h                               ; e8 27 9f
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07ae4h                           ; e9 a0 00
+    jmp near 07ae5h                           ; e9 a0 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 07a5bh                           ; 72 13
+    jc short 07a5ch                           ; 72 13
     test ch, ch                               ; 84 ed
-    jne short 07a59h                          ; 75 0d
+    jne short 07a5ah                          ; 75 0d
     push 009cfh                               ; 68 cf 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 12 9f
+    call 01966h                               ; e8 11 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
-    jmp short 07a30h                          ; eb d5
+    jmp short 07a31h                          ; eb d5
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 07a7bh                          ; 73 1c
+    jnc short 07a7ch                          ; 73 1c
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 07a6ah                           ; 74 05
-    jmp short 07a7bh                          ; eb 14
-    jmp near 07ae9h                           ; e9 7f 00
+    je short 07a6bh                           ; 74 05
+    jmp short 07a7ch                          ; eb 14
+    jmp near 07aeah                           ; e9 7f 00
     push 009e4h                               ; 68 e4 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 f4 9e
+    call 01966h                               ; e8 f3 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07a91h                          ; eb 16
+    jmp short 07a92h                          ; eb 16
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07a91h                           ; 72 11
+    jc short 07a92h                           ; 72 11
     test cl, cl                               ; 84 c9
-    jne short 07a91h                          ; 75 0d
+    jne short 07a92h                          ; 75 0d
     push 009f6h                               ; 68 f6 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 da 9e
+    call 01966h                               ; e8 d9 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     mov al, bl                                ; 88 d8
@@ -11507,10 +11515,10 @@ print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
     push ax                                   ; 50
     push 00a0ah                               ; 68 0a 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 c7 9e
+    call 01966h                               ; e8 c6 9e
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07aaah                           ; 72 03
+    jc short 07aabh                           ; 72 03
     sub bh, 004h                              ; 80 ef 04
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
@@ -11519,12 +11527,12 @@ print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07abch                           ; 74 05
+    je short 07abdh                           ; 74 05
     push 00a14h                               ; 68 14 0a
-    jmp short 07abfh                          ; eb 03
+    jmp short 07ac0h                          ; eb 03
     push 00a1fh                               ; 68 1f 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 a2 9e
+    call 01966h                               ; e8 a1 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
@@ -11532,29 +11540,29 @@ print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
     cwd                                       ; 99
     idiv di                                   ; f7 ff
     test dx, dx                               ; 85 d2
-    je short 07adah                           ; 74 05
+    je short 07adbh                           ; 74 05
     push 00a28h                               ; 68 28 0a
-    jmp short 07addh                          ; eb 03
+    jmp short 07adeh                          ; eb 03
     push 00a2eh                               ; 68 2e 0a
     push di                                   ; 57
-    call 01966h                               ; e8 85 9e
+    call 01966h                               ; e8 84 9e
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp near 07a05h                           ; e9 1c ff
+    jmp near 07a06h                           ; e9 1c ff
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 07b02h                          ; 75 13
+    jne short 07b03h                          ; 75 13
     test cl, cl                               ; 84 c9
-    jne short 07b02h                          ; 75 0f
+    jne short 07b03h                          ; 75 0f
     test ch, ch                               ; 84 ed
-    jne short 07b02h                          ; 75 0b
+    jne short 07b03h                          ; 75 0b
     push 00a35h                               ; 68 35 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 67 9e
+    call 01966h                               ; e8 66 9e
     add sp, strict byte 00004h                ; 83 c4 04
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 5c 9e
+    call 01966h                               ; e8 5b 9e
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -11564,7 +11572,7 @@ print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf7b17 LB 0x28
+get_boot_drive_:                             ; 0xf7b18 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11572,12 +11580,12 @@ get_boot_drive_:                             ; 0xf7b17 LB 0x28
     mov bl, al                                ; 88 c3
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 45 9b
+    call 0166ch                               ; e8 44 9b
     mov dx, 00304h                            ; ba 04 03
-    call 01650h                               ; e8 23 9b
+    call 01650h                               ; e8 22 9b
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 07b36h                           ; 72 02
+    jc short 07b37h                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11585,7 +11593,7 @@ get_boot_drive_:                             ; 0xf7b17 LB 0x28
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf7b3f LB 0x226
+show_logo_:                                  ; 0xf7b40 LB 0x226
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11596,7 +11604,7 @@ show_logo_:                                  ; 0xf7b3f LB 0x226
     sub sp, strict byte 0000ch                ; 83 ec 0c
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 19 9b
+    call 0166ch                               ; e8 18 9b
     mov si, ax                                ; 89 c6
     xor cl, cl                                ; 30 c9
     xor dx, dx                                ; 31 d2
@@ -11608,9 +11616,9 @@ show_logo_:                                  ; 0xf7b3f LB 0x226
     out strict byte 040h, AL                  ; e6 40
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
-    call 079c9h                               ; e8 5d fe
+    call 079cah                               ; e8 5d fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne short 07b83h                          ; 75 12
+    jne short 07b84h                          ; 75 12
     push SS                                   ; 16
     pop ES                                    ; 07
     lea di, [bp-016h]                         ; 8d 7e ea
@@ -11618,123 +11626,123 @@ show_logo_:                                  ; 0xf7b3f LB 0x226
     int 010h                                  ; cd 10
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    je short 07b86h                           ; 74 03
-    jmp near 07c43h                           ; e9 bd 00
+    je short 07b87h                           ; 74 03
+    jmp near 07c44h                           ; e9 bd 00
     mov al, dl                                ; 88 d0
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 079b3h                               ; e8 24 fe
+    call 079b4h                               ; e8 24 fe
     mov ch, al                                ; 88 c5
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, dl                                ; 88 d0
     add AL, strict byte 005h                  ; 04 05
     xor ah, ah                                ; 30 e4
-    call 079b3h                               ; e8 16 fe
+    call 079b4h                               ; e8 16 fe
     mov dh, al                                ; 88 c6
     mov byte [bp-010h], al                    ; 88 46 f0
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 079c9h                               ; e8 1e fe
+    call 079cah                               ; e8 1e fe
     mov bx, ax                                ; 89 c3
     mov word [bp-014h], ax                    ; 89 46 ec
     mov al, dl                                ; 88 d0
     add AL, strict byte 006h                  ; 04 06
     xor ah, ah                                ; 30 e4
-    call 079b3h                               ; e8 fa fd
+    call 079b4h                               ; e8 fa fd
     mov byte [bp-00eh], al                    ; 88 46 f2
     test ch, ch                               ; 84 ed
-    jne short 07bc8h                          ; 75 08
+    jne short 07bc9h                          ; 75 08
     test dh, dh                               ; 84 f6
-    jne short 07bc8h                          ; 75 04
+    jne short 07bc9h                          ; 75 04
     test bx, bx                               ; 85 db
-    je short 07c20h                           ; 74 58
+    je short 07c21h                           ; 74 58
     mov bx, 00142h                            ; bb 42 01
     mov ax, 04f02h                            ; b8 02 4f
     int 010h                                  ; cd 10
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    je short 07bf9h                           ; 74 23
+    je short 07bfah                           ; 74 23
     xor bx, bx                                ; 31 db
-    jmp short 07be0h                          ; eb 06
+    jmp short 07be1h                          ; eb 06
     inc bx                                    ; 43
     cmp bx, strict byte 00010h                ; 83 fb 10
-    jnbe short 07c00h                         ; 77 20
+    jnbe short 07c01h                         ; 77 20
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 07904h                               ; e8 13 fd
+    call 07905h                               ; e8 13 fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bdah                          ; 75 e5
+    jne short 07bdbh                          ; 75 e5
     mov CL, strict byte 001h                  ; b1 01
-    jmp short 07c00h                          ; eb 07
+    jmp short 07c01h                          ; eb 07
     mov ax, 00210h                            ; b8 10 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     test cl, cl                               ; 84 c9
-    jne short 07c16h                          ; 75 12
+    jne short 07c17h                          ; 75 12
     mov ax, word [bp-014h]                    ; 8b 46 ec
     shr ax, 004h                              ; c1 e8 04
     mov dx, strict word 00001h                ; ba 01 00
-    call 07904h                               ; e8 f4 fc
+    call 07905h                               ; e8 f4 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c16h                          ; 75 02
+    jne short 07c17h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    je short 07c43h                           ; 74 27
+    je short 07c44h                           ; 74 27
     test cl, cl                               ; 84 c9
-    je short 07c22h                           ; 74 02
-    jmp short 07c43h                          ; eb 21
+    je short 07c23h                           ; 74 02
+    jmp short 07c44h                          ; eb 21
     mov bx, strict word 00010h                ; bb 10 00
-    jmp short 07c2ch                          ; eb 05
+    jmp short 07c2dh                          ; eb 05
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 07c43h                          ; 76 17
+    jbe short 07c44h                          ; 76 17
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 07904h                               ; e8 c7 fc
+    call 07905h                               ; e8 c7 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c27h                          ; 75 e6
+    jne short 07c28h                          ; 75 e6
     mov CL, strict byte 001h                  ; b1 01
     xor bx, bx                                ; 31 db
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 11 9a
+    call 0165eh                               ; e8 10 9a
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 07c6dh                           ; 74 14
+    je short 07c6eh                           ; 74 14
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jne short 07c94h                          ; 75 35
+    jne short 07c95h                          ; 75 35
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    jne short 07c94h                          ; 75 2f
+    jne short 07c95h                          ; 75 2f
     cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    je short 07c70h                           ; 74 05
-    jmp short 07c94h                          ; eb 27
-    jmp near 07d48h                           ; e9 d8 00
+    je short 07c71h                           ; 74 05
+    jmp short 07c95h                          ; eb 27
+    jmp near 07d49h                           ; e9 d8 00
     cmp byte [bp-00eh], 002h                  ; 80 7e f2 02
-    jne short 07c81h                          ; 75 0b
+    jne short 07c82h                          ; 75 0b
     push 00a4bh                               ; 68 4b 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 e8 9c
+    call 01966h                               ; e8 e7 9c
     add sp, strict byte 00004h                ; 83 c4 04
     test cl, cl                               ; 84 c9
-    jne short 07c94h                          ; 75 0f
+    jne short 07c95h                          ; 75 0f
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 07904h                               ; e8 76 fc
+    call 07905h                               ; e8 76 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c94h                          ; 75 02
+    jne short 07c95h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je short 07c6dh                           ; 74 d5
+    je short 07c6eh                           ; 74 d5
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     mov ax, 00100h                            ; b8 00 01
     mov cx, 01000h                            ; b9 00 10
@@ -11753,57 +11761,57 @@ show_logo_:                                  ; 0xf7b3f LB 0x226
     int 010h                                  ; cd 10
     push 00a6dh                               ; 68 6d 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 a5 9c
+    call 01966h                               ; e8 a4 9c
     add sp, strict byte 00004h                ; 83 c4 04
-    call 079ddh                               ; e8 16 fd
+    call 079deh                               ; e8 16 fd
     push 00ab1h                               ; 68 b1 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 97 9c
+    call 01966h                               ; e8 96 9c
     add sp, strict byte 00004h                ; 83 c4 04
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 07904h                               ; e8 29 fc
+    call 07905h                               ; e8 29 fc
     mov bl, al                                ; 88 c3
     test al, al                               ; 84 c0
-    je short 07cd2h                           ; 74 f1
+    je short 07cd3h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 07d35h                           ; 74 50
+    je short 07d36h                           ; 74 50
     cmp bl, 002h                              ; 80 fb 02
-    jc short 07d0eh                           ; 72 24
+    jc short 07d0fh                           ; 72 24
     cmp bl, 009h                              ; 80 fb 09
-    jnbe short 07d0eh                         ; 77 1f
+    jnbe short 07d0fh                         ; 77 1f
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
-    call 07b17h                               ; e8 21 fe
+    call 07b18h                               ; e8 21 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 07cfch                          ; 75 02
-    jmp short 07cd2h                          ; eb d6
+    jne short 07cfdh                          ; 75 02
+    jmp short 07cd3h                          ; eb d6
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 56 99
+    call 0165eh                               ; e8 55 99
     mov byte [bp-00ch], 002h                  ; c6 46 f4 02
-    jmp short 07d35h                          ; eb 27
+    jmp short 07d36h                          ; eb 27
     cmp bl, 02eh                              ; 80 fb 2e
-    je short 07d23h                           ; 74 10
+    je short 07d24h                           ; 74 10
     cmp bl, 026h                              ; 80 fb 26
-    je short 07d29h                           ; 74 11
+    je short 07d2ah                           ; 74 11
     cmp bl, 021h                              ; 80 fb 21
-    jne short 07d2fh                          ; 75 12
+    jne short 07d30h                          ; 75 12
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07d35h                          ; eb 12
+    jmp short 07d36h                          ; eb 12
     mov byte [bp-00ch], 003h                  ; c6 46 f4 03
-    jmp short 07d35h                          ; eb 0c
+    jmp short 07d36h                          ; eb 0c
     mov byte [bp-00ch], 004h                  ; c6 46 f4 04
-    jmp short 07d35h                          ; eb 06
+    jmp short 07d36h                          ; eb 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 07cd2h                           ; 74 9d
+    je short 07cd3h                           ; 74 9d
     mov bl, byte [bp-00ch]                    ; 8a 5e f4
     xor bh, bh                                ; 30 ff
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 0165eh                               ; e8 1c 99
+    call 0165eh                               ; e8 1b 99
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
@@ -11816,7 +11824,7 @@ show_logo_:                                  ; 0xf7b3f LB 0x226
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 66 70
+    call 0edbfh                               ; e8 65 70
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -11827,7 +11835,7 @@ show_logo_:                                  ; 0xf7b3f LB 0x226
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf7d65 LB 0x6b
+delay_boot_:                                 ; 0xf7d66 LB 0x6b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11837,7 +11845,7 @@ delay_boot_:                                 ; 0xf7d65 LB 0x6b
     push di                                   ; 57
     mov dx, ax                                ; 89 c2
     test ax, ax                               ; 85 c0
-    je short 07dc6h                           ; 74 53
+    je short 07dc7h                           ; 74 53
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
     mov AL, strict byte 0d3h                  ; b0 d3
@@ -11847,24 +11855,24 @@ delay_boot_:                                 ; 0xf7d65 LB 0x6b
     push dx                                   ; 52
     push 00afbh                               ; 68 fb 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 de 9b
+    call 01966h                               ; e8 dd 9b
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, dx                                ; 89 d3
     test bx, bx                               ; 85 db
-    jbe short 07da8h                          ; 76 17
+    jbe short 07da9h                          ; 76 17
     push bx                                   ; 53
     push 00b19h                               ; 68 19 0b
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 cc 9b
+    call 01966h                               ; e8 cb 9b
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 07904h                               ; e8 5f fb
+    call 07905h                               ; e8 5f fb
     dec bx                                    ; 4b
-    jmp short 07d8dh                          ; eb e5
+    jmp short 07d8eh                          ; eb e5
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 b6 9b
+    call 01966h                               ; e8 b5 9b
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -11875,7 +11883,7 @@ delay_boot_:                                 ; 0xf7d65 LB 0x6b
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 fb 6f
+    call 0edbfh                               ; e8 fa 6f
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -11886,7 +11894,7 @@ delay_boot_:                                 ; 0xf7d65 LB 0x6b
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
+scsi_cmd_data_in_:                           ; 0xf7dd1 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11902,12 +11910,12 @@ scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07de6h                          ; 75 f7
+    jne short 07de7h                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07dfah                          ; 75 04
+    jne short 07dfbh                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07dfch                          ; eb 02
+    jmp short 07dfdh                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
     mov ax, bx                                ; 89 d8
@@ -11915,7 +11923,7 @@ scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e06h                               ; e2 fa
+    loop 07e07h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, di                                 ; 09 f9
@@ -11933,29 +11941,29 @@ scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e2bh                               ; e2 fa
+    loop 07e2ch                               ; e2 fa
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     mov al, byte [bp+004h]                    ; 8a 46 04
     xor ah, ah                                ; 30 e4
     cmp cx, ax                                ; 39 c1
-    jnc short 07e4dh                          ; 73 0e
+    jnc short 07e4eh                          ; 73 0e
     les di, [bp-00ah]                         ; c4 7e f6
     add di, cx                                ; 01 cf
     mov al, byte [es:di]                      ; 26 8a 05
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07e36h                          ; eb e9
+    jmp short 07e37h                          ; eb e9
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07e4dh                          ; 75 f7
+    jne short 07e4eh                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07e68h                           ; 74 0e
+    je short 07e69h                           ; 74 0e
     lea dx, [si+003h]                         ; 8d 54 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -11963,12 +11971,12 @@ scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov di, strict word 00004h                ; bf 04 00
-    jmp short 07e9ah                          ; eb 32
+    jmp short 07e9bh                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07e77h                          ; 75 06
+    jne short 07e78h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07e91h                          ; 76 1a
+    jbe short 07e92h                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -11977,7 +11985,7 @@ scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07e68h                          ; eb d7
+    jmp short 07e69h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -11988,7 +11996,7 @@ scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
+scsi_cmd_data_out_:                          ; 0xf7ea6 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12004,12 +12012,12 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07ebbh                          ; 75 f7
+    jne short 07ebch                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07ecfh                          ; 75 04
+    jne short 07ed0h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07ed1h                          ; eb 02
+    jmp short 07ed2h                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     mov ax, bx                                ; 89 d8
@@ -12017,7 +12025,7 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07edbh                               ; e2 fa
+    loop 07edch                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, si                                 ; 09 f1
@@ -12035,26 +12043,26 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07f00h                               ; e2 fa
+    loop 07f01h                               ; e2 fa
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     mov al, byte [bp+004h]                    ; 8a 46 04
     xor ah, ah                                ; 30 e4
     cmp cx, ax                                ; 39 c1
-    jnc short 07f22h                          ; 73 0e
+    jnc short 07f23h                          ; 73 0e
     les si, [bp-00ah]                         ; c4 76 f6
     add si, cx                                ; 01 ce
     mov al, byte [es:si]                      ; 26 8a 04
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07f0bh                          ; eb e9
+    jmp short 07f0ch                          ; eb e9
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07f31h                          ; 75 06
+    jne short 07f32h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07f4ch                          ; 76 1b
+    jbe short 07f4dh                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12064,7 +12072,7 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07f22h                          ; eb d6
+    jmp short 07f23h                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12074,9 +12082,9 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07f54h                          ; 75 f7
+    jne short 07f55h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07f6fh                           ; 74 0e
+    je short 07f70h                           ; 74 0e
     lea dx, [di+003h]                         ; 8d 55 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12084,14 +12092,14 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 07f71h                          ; eb 02
+    jmp short 07f72h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
- at scsi_read_sectors:                          ; 0xf7f7a LB 0xe0
+ at scsi_read_sectors:                          ; 0xf7f7b LB 0xe0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12103,13 +12111,13 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     sub AL, strict byte 008h                  ; 2c 08
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 004h                  ; 3c 04
-    jbe short 07fa6h                          ; 76 11
+    jbe short 07fa7h                          ; 76 11
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 00b1eh                               ; 68 1e 0b
     push 00b30h                               ; 68 30 0b
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 c3 99
+    call 01966h                               ; e8 c2 99
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
@@ -12149,7 +12157,7 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     mov cx, strict word 00009h                ; b9 09 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 08010h                               ; e2 f8
+    loop 08011h                               ; e2 f8
     push word [bp-008h]                       ; ff 76 f8
     push word [bp-00ah]                       ; ff 76 f6
     push word [es:si+00ah]                    ; 26 ff 74 0a
@@ -12158,10 +12166,10 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07dd0h                               ; e8 9e fd
+    call 07dd1h                               ; e8 9e fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 0804dh                          ; 75 15
+    jne short 0804eh                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov dx, word [bp-00ah]                    ; 8b 56 f6
@@ -12175,7 +12183,7 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at scsi_write_sectors:                         ; 0xf805a LB 0xe0
+ at scsi_write_sectors:                         ; 0xf805b LB 0xe0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12187,13 +12195,13 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     sub AL, strict byte 008h                  ; 2c 08
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 004h                  ; 3c 04
-    jbe short 08086h                          ; 76 11
+    jbe short 08087h                          ; 76 11
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 00b4fh                               ; 68 4f 0b
     push 00b30h                               ; 68 30 0b
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 e3 98
+    call 01966h                               ; e8 e2 98
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
@@ -12233,7 +12241,7 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     mov cx, strict word 00009h                ; b9 09 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 080f0h                               ; e2 f8
+    loop 080f1h                               ; e2 f8
     push word [bp-008h]                       ; ff 76 f8
     push word [bp-00ah]                       ; ff 76 f6
     push word [es:si+00ah]                    ; 26 ff 74 0a
@@ -12242,10 +12250,10 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07ea5h                               ; e8 93 fd
+    call 07ea6h                               ; e8 93 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 0812dh                          ; 75 15
+    jne short 0812eh                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov dx, word [bp-00ah]                    ; 8b 56 f6
@@ -12259,7 +12267,7 @@ scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf813a LB 0x168
+scsi_cmd_packet_:                            ; 0xf813b LB 0x168
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12271,22 +12279,22 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     mov word [bp-00ch], cx                    ; 89 4e f4
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 16 95
+    call 0166ch                               ; e8 15 95
     mov si, 00122h                            ; be 22 01
     mov word [bp-00ah], ax                    ; 89 46 f6
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 08181h                          ; 75 1f
+    jne short 08182h                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 b6 97
+    call 01923h                               ; e8 b5 97
     push 00b62h                               ; 68 62 0b
     push 00b72h                               ; 68 72 0b
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 ee 97
+    call 01966h                               ; e8 ed 97
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 08297h                           ; e9 16 01
+    jmp near 08298h                           ; e9 16 01
     sub di, strict byte 00008h                ; 83 ef 08
     sal di, 002h                              ; c1 e7 02
     sub byte [bp-006h], 002h                  ; 80 6e fa 02
@@ -12300,7 +12308,7 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0819dh                          ; 75 f7
+    jne short 0819eh                          ; 75 f7
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, word [bp+004h]                    ; 03 56 04
@@ -12316,7 +12324,7 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 081c8h                               ; e2 fa
+    loop 081c9h                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     mov cl, byte [bp-006h]                    ; 8a 4e fa
     xor ch, ch                                ; 30 ed
@@ -12335,29 +12343,29 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 081f0h                               ; e2 fa
+    loop 081f1h                               ; e2 fa
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cmp cx, ax                                ; 39 c1
-    jnc short 08212h                          ; 73 0e
+    jnc short 08213h                          ; 73 0e
     les di, [bp-00eh]                         ; c4 7e f2
     add di, cx                                ; 01 cf
     mov al, byte [es:di]                      ; 26 8a 05
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 081fbh                          ; eb e9
+    jmp short 081fch                          ; eb e9
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 08212h                          ; 75 f7
+    jne short 08213h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 0822dh                           ; 74 0e
+    je short 0822eh                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12365,14 +12373,14 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 08297h                          ; eb 6a
+    jmp short 08298h                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 0823ch                           ; 74 08
+    je short 0823dh                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 08239h                               ; e2 fd
+    loop 0823ah                               ; e2 fd
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:si+01ah], ax                 ; 26 89 44 1a
@@ -12380,9 +12388,9 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     mov word [es:si+01ch], ax                 ; 26 89 44 1c
     lea ax, [bx+001h]                         ; 8d 47 01
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 0825dh                          ; 75 07
+    jne short 0825eh                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 0827ah                          ; 76 1d
+    jbe short 0827bh                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+00ch]                         ; c4 7e 0c
@@ -12392,17 +12400,17 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 0824dh                          ; eb d3
+    jmp short 0824eh                          ; eb d3
     mov dx, ax                                ; 89 c2
     mov cx, word [bp+006h]                    ; 8b 4e 06
     les di, [bp+00ch]                         ; c4 7e 0c
     rep insb                                  ; f3 6c
     mov es, [bp-00ah]                         ; 8e 46 f6
     cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00
-    je short 08295h                           ; 74 07
+    je short 08296h                           ; 74 07
     mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     in AL, DX                                 ; ec
-    loop 08292h                               ; e2 fd
+    loop 08293h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12410,7 +12418,7 @@ scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
+scsi_enumerate_attached_devices_:            ; 0xf82a3 LB 0x4a6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12422,19 +12430,19 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b4 93
+    call 0166ch                               ; e8 b3 93
     mov di, 00122h                            ; bf 22 01
     mov word [bp-020h], ax                    ; 89 46 e0
     mov word [bp-022h], strict word 00000h    ; c7 46 de 00 00
-    jmp near 086c6h                           ; e9 00 04
+    jmp near 086c7h                           ; e9 00 04
     cmp AL, strict byte 004h                  ; 3c 04
-    jc short 082cdh                           ; 72 03
-    jmp near 0873eh                           ; e9 71 04
+    jc short 082ceh                           ; 72 03
+    jmp near 0873fh                           ; e9 71 04
     mov cx, strict word 00010h                ; b9 10 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-046h]                         ; 8d 46 ba
-    call 09ff0h                               ; e8 16 1d
+    call 09ff0h                               ; e8 15 1d
     mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
     mov byte [bp-045h], 010h                  ; c6 46 bb 10
     mov byte [bp-039h], 020h                  ; c6 46 c7 20
@@ -12449,13 +12457,13 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07dd0h                               ; e8 cd fa
+    call 07dd1h                               ; e8 cd fa
     test al, al                               ; 84 c0
-    je short 08315h                           ; 74 0e
+    je short 08316h                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bcbh                               ; 68 cb 0b
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 54 96
+    call 01966h                               ; e8 53 96
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp-00240h]                  ; 8b 86 c0 fd
     mov bx, word [bp-00242h]                  ; 8b 9e be fd
@@ -12487,7 +12495,7 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08364h                               ; e2 fa
+    loop 08365h                               ; e2 fa
     or bx, ax                                 ; 09 c3
     or dx, si                                 ; 09 f2
     mov al, byte [bp-0023bh]                  ; 8a 86 c5 fd
@@ -12495,56 +12503,56 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     or bx, ax                                 ; 09 c3
     mov word [bp-028h], bx                    ; 89 5e d8
     test dx, dx                               ; 85 d2
-    jne short 08383h                          ; 75 06
+    jne short 08384h                          ; 75 06
     cmp bx, 00200h                            ; 81 fb 00 02
-    je short 083a3h                           ; 74 20
+    je short 083a4h                           ; 74 20
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 95 95
+    call 01923h                               ; e8 94 95
     push dx                                   ; 52
     push word [bp-028h]                       ; ff 76 d8
     push word [bp-022h]                       ; ff 76 de
     push 00beah                               ; 68 ea 0b
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 c9 95
+    call 01966h                               ; e8 c8 95
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 086bah                           ; e9 17 03
+    jmp near 086bbh                           ; e9 17 03
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 083b6h                           ; 72 0c
-    jbe short 083beh                          ; 76 12
+    jc short 083b7h                           ; 72 0c
+    jbe short 083bfh                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 083c6h                           ; 74 16
+    je short 083c7h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 083c2h                           ; 74 0e
-    jmp short 0840fh                          ; eb 59
+    je short 083c3h                           ; 74 0e
+    jmp short 08410h                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 0840fh                          ; 75 55
+    jne short 08410h                          ; 75 55
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 083c8h                          ; eb 0a
+    jmp short 083c9h                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 083c8h                          ; eb 06
+    jmp short 083c9h                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 083c8h                          ; eb 02
+    jmp short 083c9h                          ; eb 02
     mov BL, strict byte 0a8h                  ; b3 a8
     mov cl, bl                                ; 88 d9
     add cl, 007h                              ; 80 c1 07
     xor ch, ch                                ; 30 ed
     mov ax, cx                                ; 89 c8
-    call 016ach                               ; e8 d8 92
+    call 016ach                               ; e8 d7 92
     test al, al                               ; 84 c0
-    je short 0840fh                           ; 74 37
+    je short 08410h                           ; 74 37
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 cb 92
+    call 016ach                               ; e8 ca 92
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov al, bl                                ; 88 d8
-    call 016ach                               ; e8 bf 92
+    call 016ach                               ; e8 be 92
     xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
     cwd                                       ; 99
@@ -12552,42 +12560,42 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 af 92
+    call 016ach                               ; e8 ae 92
     xor ah, ah                                ; 30 e4
     mov word [bp-018h], ax                    ; 89 46 e8
     mov ax, cx                                ; 89 c8
-    call 016ach                               ; e8 a5 92
+    call 016ach                               ; e8 a4 92
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp near 084fdh                           ; e9 ee 00
+    jmp near 084feh                           ; e9 ee 00
     mov ax, word [bp-012h]                    ; 8b 46 ee
     mov bx, word [bp-010h]                    ; 8b 5e f0
     mov cx, word [bp-01ch]                    ; 8b 4e e4
     mov dx, word [bp-014h]                    ; 8b 56 ec
     mov si, strict word 0000ch                ; be 0c 00
-    call 09fd0h                               ; e8 af 1b
+    call 09fd0h                               ; e8 ae 1b
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov word [bp-016h], bx                    ; 89 5e ea
     mov word [bp-01ah], cx                    ; 89 4e e6
     mov word [bp-01eh], dx                    ; 89 56 e2
     mov ax, word [bp-012h]                    ; 8b 46 ee
     test ax, ax                               ; 85 c0
-    jnbe short 08449h                         ; 77 15
-    je short 08439h                           ; 74 03
-    jmp near 084beh                           ; e9 85 00
+    jnbe short 0844ah                         ; 77 15
+    je short 0843ah                           ; 74 03
+    jmp near 084bfh                           ; e9 85 00
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    jnbe short 08449h                         ; 77 0a
-    jne short 08436h                          ; 75 f5
+    jnbe short 0844ah                         ; 77 0a
+    jne short 08437h                          ; 75 f5
     cmp word [bp-01ch], strict byte 00040h    ; 83 7e e4 40
-    jnbe short 08449h                         ; 77 02
-    jne short 084beh                          ; 75 75
+    jnbe short 0844ah                         ; 77 02
+    jne short 084bfh                          ; 75 75
     mov word [bp-018h], 000ffh                ; c7 46 e8 ff 00
     mov word [bp-026h], strict word 0003fh    ; c7 46 da 3f 00
     mov bx, word [bp-010h]                    ; 8b 5e f0
     mov cx, word [bp-01ch]                    ; 8b 4e e4
     mov dx, word [bp-014h]                    ; 8b 56 ec
     mov si, strict word 00006h                ; be 06 00
-    call 09fd0h                               ; e8 6e 1b
+    call 09fd0h                               ; e8 6d 1b
     mov si, word [bp-01eh]                    ; 8b 76 e2
     add si, dx                                ; 01 d6
     mov word [bp-036h], si                    ; 89 76 ca
@@ -12605,7 +12613,7 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov cx, word [bp-024h]                    ; 8b 4e dc
     mov dx, si                                ; 89 f2
     mov si, strict word 00008h                ; be 08 00
-    call 09fd0h                               ; e8 3e 1b
+    call 09fd0h                               ; e8 3d 1b
     mov word [bp-02eh], bx                    ; 89 5e d2
     mov word [bp-030h], cx                    ; 89 4e d0
     mov word [bp-032h], dx                    ; 89 56 ce
@@ -12614,33 +12622,33 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov cx, word [bp-024h]                    ; 8b 4e dc
     mov dx, word [bp-036h]                    ; 8b 56 ca
     mov si, strict word 00010h                ; be 10 00
-    call 09fd0h                               ; e8 23 1b
+    call 09fd0h                               ; e8 22 1b
     mov si, word [bp-032h]                    ; 8b 76 ce
     add si, dx                                ; 01 d6
     mov dx, word [bp-030h]                    ; 8b 56 d0
     adc dx, cx                                ; 11 ca
     mov ax, word [bp-02eh]                    ; 8b 46 d2
     adc ax, bx                                ; 11 d8
-    jmp short 084fdh                          ; eb 3f
+    jmp short 084feh                          ; eb 3f
     test ax, ax                               ; 85 c0
-    jnbe short 084d4h                         ; 77 12
-    jne short 084e0h                          ; 75 1c
+    jnbe short 084d5h                         ; 77 12
+    jne short 084e1h                          ; 75 1c
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    jnbe short 084d4h                         ; 77 0a
-    jne short 084e0h                          ; 75 14
+    jnbe short 084d5h                         ; 77 0a
+    jne short 084e1h                          ; 75 14
     cmp word [bp-01ch], strict byte 00020h    ; 83 7e e4 20
-    jnbe short 084d4h                         ; 77 02
-    jne short 084e0h                          ; 75 0c
+    jnbe short 084d5h                         ; 77 02
+    jne short 084e1h                          ; 75 0c
     mov word [bp-018h], 00080h                ; c7 46 e8 80 00
     mov word [bp-026h], strict word 00020h    ; c7 46 da 20 00
-    jmp short 084f9h                          ; eb 19
+    jmp short 084fah                          ; eb 19
     mov word [bp-018h], strict word 00040h    ; c7 46 e8 40 00
     mov word [bp-026h], strict word 00020h    ; c7 46 da 20 00
     mov bx, word [bp-010h]                    ; 8b 5e f0
     mov cx, word [bp-01ch]                    ; 8b 4e e4
     mov dx, word [bp-014h]                    ; 8b 56 ec
     mov si, strict word 0000bh                ; be 0b 00
-    call 09fd0h                               ; e8 d7 1a
+    call 09fd0h                               ; e8 d6 1a
     mov si, dx                                ; 89 d6
     mov dx, cx                                ; 89 ca
     mov al, byte [bp-00ch]                    ; 8a 46 f4
@@ -12675,18 +12683,18 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov ax, word [bp-026h]                    ; 8b 46 da
     mov word [es:bx+034h], ax                 ; 26 89 47 34
     test dx, dx                               ; 85 d2
-    jne short 0856fh                          ; 75 06
+    jne short 08570h                          ; 75 06
     cmp si, 00400h                            ; 81 fe 00 04
-    jbe short 0857dh                          ; 76 0e
+    jbe short 0857eh                          ; 76 0e
     mov word [es:bx+02ch], 00400h             ; 26 c7 47 2c 00 04
     mov word [es:bx+032h], 00400h             ; 26 c7 47 32 00 04
-    jmp short 08585h                          ; eb 08
+    jmp short 08586h                          ; eb 08
     mov word [es:bx+02ch], si                 ; 26 89 77 2c
     mov word [es:bx+032h], si                 ; 26 89 77 32
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 93 93
+    call 01923h                               ; e8 92 93
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-010h]                       ; ff 76 f0
     push word [bp-01ch]                       ; ff 76 e4
@@ -12701,7 +12709,7 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     push ax                                   ; 50
     push 00c18h                               ; 68 18 0c
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 b1 93
+    call 01966h                               ; e8 b0 93
     add sp, strict byte 00018h                ; 83 c4 18
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
@@ -12729,35 +12737,35 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov byte [es:di+001e2h], al               ; 26 88 85 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 47 90
+    call 01650h                               ; e8 46 90
     mov bl, al                                ; 88 c3
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 46 90
+    call 0165eh                               ; e8 45 90
     inc byte [bp-00ch]                        ; fe 46 f4
-    jmp near 086afh                           ; e9 91 00
+    jmp near 086b0h                           ; e9 91 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 fa 92
+    call 01923h                               ; e8 f9 92
     push word [bp-022h]                       ; ff 76 de
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 00c46h                               ; 68 46 0c
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 2c 93
+    call 01966h                               ; e8 2b 93
     add sp, strict byte 00008h                ; 83 c4 08
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     add AL, strict byte 008h                  ; 04 08
     mov byte [bp-00eh], al                    ; 88 46 f2
     test byte [bp-00245h], 080h               ; f6 86 bb fd 80
-    je short 08651h                           ; 74 05
+    je short 08652h                           ; 74 05
     mov dx, strict word 00001h                ; ba 01 00
-    jmp short 08653h                          ; eb 02
+    jmp short 08654h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
@@ -12793,8 +12801,8 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov byte [es:di+0022ch], al               ; 26 88 85 2c 02
     inc word [bp-022h]                        ; ff 46 de
     cmp word [bp-022h], strict byte 00010h    ; 83 7e de 10
-    jl short 086c6h                           ; 7c 03
-    jmp near 0873eh                           ; e9 78 00
+    jl short 086c7h                           ; 7c 03
+    jmp near 0873fh                           ; e9 78 00
     mov byte [bp-046h], 012h                  ; c6 46 ba 12
     xor al, al                                ; 30 c0
     mov byte [bp-045h], al                    ; 88 46 bb
@@ -12813,30 +12821,30 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07dd0h                               ; e8 d7 f6
+    call 07dd1h                               ; e8 d7 f6
     test al, al                               ; 84 c0
-    je short 0870bh                           ; 74 0e
+    je short 0870ch                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bb2h                               ; 68 b2 0b
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 5e 92
+    call 01966h                               ; e8 5d 92
     add sp, strict byte 00006h                ; 83 c4 06
     mov es, [bp-020h]                         ; 8e 46 e0
     mov al, byte [es:di+0022ch]               ; 26 8a 85 2c 02
     mov byte [bp-00ch], al                    ; 88 46 f4
     test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
-    jne short 08727h                          ; 75 0a
+    jne short 08728h                          ; 75 0a
     test byte [bp-00246h], 01fh               ; f6 86 ba fd 1f
-    jne short 08727h                          ; 75 03
-    jmp near 082c6h                           ; e9 9f fb
+    jne short 08728h                          ; 75 03
+    jmp near 082c7h                           ; e9 9f fb
     test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
-    jne short 086afh                          ; 75 81
+    jne short 086b0h                          ; 75 81
     mov al, byte [bp-00246h]                  ; 8a 86 ba fd
     and AL, strict byte 01fh                  ; 24 1f
     cmp AL, strict byte 005h                  ; 3c 05
-    jne short 0873bh                          ; 75 03
-    jmp near 0861eh                           ; e9 e3 fe
-    jmp near 086afh                           ; e9 71 ff
+    jne short 0873ch                          ; 75 03
+    jmp near 0861fh                           ; e9 e3 fe
+    jmp near 086b0h                           ; e9 71 ff
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -12845,12 +12853,12 @@ scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf8748 LB 0x66
+_scsi_init:                                  ; 0xf8749 LB 0x66
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 18 8f
+    call 0166ch                               ; e8 17 8f
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
     mov byte [es:bx+0022ch], 000h             ; 26 c6 87 2c 02 00
@@ -12861,12 +12869,12 @@ _scsi_init:                                  ; 0xf8748 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08778h                          ; 75 0c
+    jne short 08779h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 082a2h                               ; e8 2a fb
+    call 082a3h                               ; e8 2a fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
     out DX, AL                                ; ee
@@ -12874,12 +12882,12 @@ _scsi_init:                                  ; 0xf8748 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08791h                          ; 75 0c
+    jne short 08792h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 082a2h                               ; e8 11 fb
+    call 082a3h                               ; e8 11 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
     out DX, AL                                ; ee
@@ -12887,16 +12895,16 @@ _scsi_init:                                  ; 0xf8748 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 087aah                          ; 75 0c
+    jne short 087abh                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 082a2h                               ; e8 f8 fa
+    call 082a3h                               ; e8 f8 fa
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf87ae LB 0x1c
+ahci_ctrl_extract_bits_:                     ; 0xf87af LB 0x1c
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12905,14 +12913,14 @@ ahci_ctrl_extract_bits_:                     ; 0xf87ae LB 0x1c
     and dx, cx                                ; 21 ca
     mov cl, byte [bp+006h]                    ; 8a 4e 06
     xor ch, ch                                ; 30 ed
-    jcxz 087c5h                               ; e3 06
+    jcxz 087c6h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 087bfh                               ; e2 fa
+    loop 087c0h                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf87ca LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf87cb LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -12923,7 +12931,7 @@ ahci_addr_to_phys_:                          ; 0xf87ca LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 087d8h                               ; e2 fa
+    loop 087d9h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -12931,7 +12939,7 @@ ahci_addr_to_phys_:                          ; 0xf87ca LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf87e8 LB 0x156
+ahci_port_cmd_sync_:                         ; 0xf87e9 LB 0x156
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -12946,8 +12954,8 @@ ahci_port_cmd_sync_:                         ; 0xf87e8 LB 0x156
     mov byte [bp-008h], al                    ; 88 46 f8
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 0880bh                          ; 75 03
-    jmp near 08936h                           ; e9 2b 01
+    jne short 0880ch                          ; 75 03
+    jmp near 08937h                           ; e9 2b 01
     mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
     xor ah, ah                                ; 30 e4
     xor di, di                                ; 31 ff
@@ -12960,7 +12968,7 @@ ahci_port_cmd_sync_:                         ; 0xf87e8 LB 0x156
     mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov dx, cx                                ; 89 ca
-    call 087cah                               ; e8 92 ff
+    call 087cbh                               ; e8 92 ff
     mov es, cx                                ; 8e c1
     mov word [es:si+008h], ax                 ; 26 89 44 08
     mov word [es:si+00ah], dx                 ; 26 89 54 0a
@@ -13026,14 +13034,14 @@ ahci_port_cmd_sync_:                         ; 0xf87e8 LB 0x156
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dh, 040h                             ; f6 c6 40
-    jne short 088c9h                          ; 75 04
+    jne short 088cah                          ; 75 04
     test AL, strict byte 001h                 ; a8 01
-    je short 088cdh                           ; 74 04
+    je short 088ceh                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 088cfh                          ; eb 02
+    jmp short 088d0h                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0889ch                           ; 74 c9
+    je short 0889dh                           ; 74 c9
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
@@ -13089,7 +13097,7 @@ ahci_port_cmd_sync_:                         ; 0xf87e8 LB 0x156
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf893e LB 0x267
+ahci_cmd_data_:                              ; 0xf893f LB 0x267
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13114,7 +13122,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     xor bx, bx                                ; 31 db
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09ff0h                               ; e8 74 16
+    call 09ff0h                               ; e8 73 16
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -13132,7 +13140,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00008h                ; be 08 00
-    call 09fd0h                               ; e8 10 16
+    call 09fd0h                               ; e8 0f 16
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13143,7 +13151,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00010h                ; be 10 00
-    call 09fd0h                               ; e8 ea 15
+    call 09fd0h                               ; e8 e9 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     mov byte [es:di+00087h], 040h             ; 26 c6 85 87 00 40
@@ -13155,7 +13163,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00018h                ; be 18 00
-    call 09fd0h                               ; e8 be 15
+    call 09fd0h                               ; e8 bd 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13166,7 +13174,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00020h                ; be 20 00
-    call 09fd0h                               ; e8 98 15
+    call 09fd0h                               ; e8 97 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13177,7 +13185,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00028h                ; be 28 00
-    call 09fd0h                               ; e8 72 15
+    call 09fd0h                               ; e8 71 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     mov byte [es:di+0008bh], 000h             ; 26 c6 85 8b 00 00
@@ -13191,7 +13199,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-010h]                    ; 8b 5e f0
     xor cx, cx                                ; 31 c9
-    call 09f80h                               ; e8 ed 14
+    call 09f80h                               ; e8 ec 14
     push dx                                   ; 52
     push ax                                   ; 50
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13201,7 +13209,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     mov ax, 0026ah                            ; b8 6a 02
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09edah                               ; e8 2b 14
+    call 09edbh                               ; e8 2b 14
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     add dx, strict byte 0ffffh                ; 83 c2 ff
@@ -13224,7 +13232,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     mov bx, si                                ; 89 f3
     mov ax, word [es:bx+020h]                 ; 26 8b 47 20
     test ax, ax                               ; 85 c0
-    je short 08b41h                           ; 74 3b
+    je short 08b42h                           ; 74 3b
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bl, byte [es:di+00263h]               ; 26 8a 9d 63 02
@@ -13242,35 +13250,35 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     inc byte [es:di+00263h]                   ; 26 fe 85 63 02
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 035h                  ; 3c 35
-    jne short 08b4eh                          ; 75 06
+    jne short 08b4fh                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 08b65h                          ; eb 17
+    jmp short 08b66h                          ; eb 17
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 08b61h                          ; 75 0f
+    jne short 08b62h                          ; 75 0f
     or byte [bp-008h], 020h                   ; 80 4e f8 20
     les bx, [bp-00eh]                         ; c4 5e f2
     or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
-    jmp short 08b65h                          ; eb 04
+    jmp short 08b66h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     or byte [bp-008h], 005h                   ; 80 4e f8 05
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 087e8h                               ; e8 71 fc
+    call 087e9h                               ; e8 71 fc
     mov cx, word [bp-00ch]                    ; 8b 4e f4
     mov bx, word [bp-00eh]                    ; 8b 5e f2
     add bx, 00240h                            ; 81 c3 40 02
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     add ax, 0026ah                            ; 05 6a 02
     mov dx, cx                                ; 89 ca
-    call 09f51h                               ; e8 c5 13
+    call 09f52h                               ; e8 c5 13
     mov es, cx                                ; 8e c1
     mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     test al, al                               ; 84 c0
-    je short 08b9bh                           ; 74 05
+    je short 08b9ch                           ; 74 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08b9dh                          ; eb 02
+    jmp short 08b9eh                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -13278,7 +13286,7 @@ ahci_cmd_data_:                              ; 0xf893e LB 0x267
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf8ba5 LB 0x180
+ahci_port_deinit_current_:                   ; 0xf8ba6 LB 0x180
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -13293,7 +13301,7 @@ ahci_port_deinit_current_:                   ; 0xf8ba5 LB 0x180
     mov al, byte [es:di+00262h]               ; 26 8a 85 62 02
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je short 08c26h                           ; 74 5f
+    je short 08c27h                           ; 74 5f
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
     add ax, 00118h                            ; 05 18 01
@@ -13337,28 +13345,28 @@ ahci_port_deinit_current_:                   ; 0xf8ba5 LB 0x180
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08c29h                           ; 74 07
+    je short 08c2ah                           ; 74 07
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08c2bh                          ; eb 05
-    jmp near 08d1ch                           ; e9 f3 00
+    jmp short 08c2ch                          ; eb 05
+    jmp near 08d1dh                           ; e9 f3 00
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08bf9h                           ; 74 ca
+    je short 08bfah                           ; 74 ca
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00eh]                    ; 8b 56 f2
-    call 09ff0h                               ; e8 b4 13
+    call 09ff0h                               ; e8 b3 13
     lea ax, [di+00080h]                       ; 8d 85 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00eh]                    ; 8b 56 f2
-    call 09ff0h                               ; e8 a5 13
+    call 09ff0h                               ; e8 a4 13
     lea ax, [di+00200h]                       ; 8d 85 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00eh]                    ; 8b 56 f2
-    call 09ff0h                               ; e8 96 13
+    call 09ff0h                               ; e8 95 13
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
@@ -13463,7 +13471,7 @@ ahci_port_deinit_current_:                   ; 0xf8ba5 LB 0x180
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8d25 LB 0x24d
+ahci_port_init_:                             ; 0xf8d26 LB 0x24d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13473,7 +13481,7 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     mov si, ax                                ; 89 c6
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 08ba5h                               ; e8 6c fe
+    call 08ba6h                               ; e8 6c fe
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
@@ -13522,28 +13530,28 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08daah                           ; 74 04
+    je short 08dabh                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08dach                          ; eb 02
+    jmp short 08dadh                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08d75h                           ; 74 c5
+    je short 08d76h                           ; 74 c5
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09ff0h                               ; e8 33 12
+    call 09ff0h                               ; e8 32 12
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09ff0h                               ; e8 24 12
+    call 09ff0h                               ; e8 23 12
     lea di, [si+00200h]                       ; 8d bc 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09ff0h                               ; e8 13 12
+    call 09ff0h                               ; e8 12 12
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     sal bx, 007h                              ; c1 e3 07
@@ -13561,7 +13569,7 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     out DX, eax                               ; 66 ef
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 087cah                               ; e8 bf f9
+    call 087cbh                               ; e8 bf f9
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     add di, strict byte 00004h                ; 83 c7 04
@@ -13606,7 +13614,7 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     out DX, eax                               ; 66 ef
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 087cah                               ; e8 53 f9
+    call 087cbh                               ; e8 53 f9
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     add di, strict byte 00004h                ; 83 c7 04
@@ -13711,7 +13719,7 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
- at ahci_read_sectors:                          ; 0xf8f72 LB 0xa8
+ at ahci_read_sectors:                          ; 0xf8f73 LB 0xa8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13722,12 +13730,12 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 0000ch                ; 83 eb 0c
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 08f98h                          ; 76 0f
+    jbe short 08f99h                          ; 76 0f
     push bx                                   ; 53
     push 00c62h                               ; 68 62 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 d1 89
+    call 01966h                               ; e8 d0 89
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
     les si, [bp+004h]                         ; c4 76 04
@@ -13742,11 +13750,11 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     mov di, si                                ; 89 f7
     mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
     xor ax, ax                                ; 31 c0
-    call 08d25h                               ; e8 60 fd
+    call 08d26h                               ; e8 60 fd
     mov bx, strict word 00025h                ; bb 25 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp+006h]                    ; 8b 56 06
-    call 0893eh                               ; e8 6e f9
+    call 0893fh                               ; e8 6e f9
     mov word [bp-006h], ax                    ; 89 46 fa
     mov es, [bp+006h]                         ; 8e 46 06
     mov bx, si                                ; 89 f3
@@ -13775,7 +13783,7 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at ahci_write_sectors:                         ; 0xf901a LB 0x86
+ at ahci_write_sectors:                         ; 0xf901b LB 0x86
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13787,12 +13795,12 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     xor dh, dh                                ; 30 f6
     sub dx, strict byte 0000ch                ; 83 ea 0c
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jbe short 09044h                          ; 76 0f
+    jbe short 09045h                          ; 76 0f
     push dx                                   ; 52
     push 00c93h                               ; 68 93 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 25 89
+    call 01966h                               ; e8 24 89
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     mov es, cx                                ; 8e c1
@@ -13807,11 +13815,11 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08d25h                               ; e8 b6 fc
+    call 08d26h                               ; e8 b6 fc
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 0893eh                               ; e8 c5 f8
+    call 0893fh                               ; e8 c5 f8
     mov dx, ax                                ; 89 c2
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
@@ -13826,7 +13834,7 @@ ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
+ahci_cmd_packet_:                            ; 0xf90a1 LB 0x18a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13838,30 +13846,30 @@ ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
     mov word [bp-010h], cx                    ; 89 4e f0
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b1 85
+    call 0166ch                               ; e8 b0 85
     mov si, 00122h                            ; be 22 01
     mov word [bp-008h], ax                    ; 89 46 f8
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 090e6h                          ; 75 1f
+    jne short 090e7h                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 51 88
+    call 01923h                               ; e8 50 88
     push 00ca6h                               ; 68 a6 0c
     push 00cb6h                               ; 68 b6 0c
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 89 88
+    call 01966h                               ; e8 88 88
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 09221h                           ; e9 3b 01
+    jmp near 09222h                           ; e9 3b 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 090e0h                          ; 75 f4
+    jne short 090e1h                          ; 75 f4
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 090f5h                               ; e2 fa
+    loop 090f6h                               ; e2 fa
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si], ax                      ; 26 89 04
     mov word [es:si+002h], dx                 ; 26 89 54 02
@@ -13875,7 +13883,7 @@ ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 09fa0h                               ; e8 72 0e
+    call 09fa0h                               ; e8 71 0e
     mov word [es:si+00eh], ax                 ; 26 89 44 0e
     xor di, di                                ; 31 ff
     mov ax, word [es:si+00232h]               ; 26 8b 84 32 02
@@ -13894,7 +13902,7 @@ ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     mov bx, ax                                ; 89 c3
     xor al, al                                ; 30 c0
-    call 08d25h                               ; e8 b8 fb
+    call 08d26h                               ; e8 b8 fb
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -13902,14 +13910,14 @@ ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0a000h                               ; e8 7e 0e
+    call 0a000h                               ; e8 7d 0e
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov word [es:si+01ah], di                 ; 26 89 7c 1a
     mov word [es:si+01ch], di                 ; 26 89 7c 1c
     mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
     test ax, ax                               ; 85 c0
-    je short 091c0h                           ; 74 27
+    je short 091c1h                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+0010ch], ax               ; 26 89 85 0c 01
@@ -13922,7 +13930,7 @@ ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
     mov bx, 000a0h                            ; bb a0 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 0893eh                               ; e8 73 f7
+    call 0893fh                               ; e8 73 f7
     les bx, [bp-00eh]                         ; c4 5e f2
     mov dx, word [es:bx+004h]                 ; 26 8b 57 04
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
@@ -13949,16 +13957,16 @@ ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 0921fh                          ; 75 05
+    jne short 09220h                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 09221h                          ; eb 02
+    jmp short 09222h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
+ahci_port_detect_device_:                    ; 0xf922b LB 0x4e3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13971,10 +13979,10 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov cl, bl                                ; 88 d9
     xor ch, ch                                ; 30 ed
     mov bx, cx                                ; 89 cb
-    call 08d25h                               ; e8 e0 fa
+    call 08d26h                               ; e8 e0 fa
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 1e 84
+    call 0166ch                               ; e8 1d 84
     mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
     mov word [bp-016h], ax                    ; 89 46 ea
     sal cx, 007h                              ; c1 e1 07
@@ -14044,10 +14052,10 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 087aeh                               ; e8 b5 f4
+    call 087afh                               ; e8 b5 f4
     test ax, ax                               ; 85 c0
-    jne short 09300h                          ; 75 03
-    jmp near 09705h                           ; e9 05 04
+    jne short 09301h                          ; 75 03
+    jmp near 09706h                           ; e9 05 04
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
@@ -14076,17 +14084,17 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 087aeh                               ; e8 67 f4
+    call 087afh                               ; e8 67 f4
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 09300h                           ; 74 b4
+    je short 09301h                           ; 74 b4
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov dx, di                                ; 89 fa
-    call 087aeh                               ; e8 53 f4
+    call 087afh                               ; e8 53 f4
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne short 092fdh                          ; 75 9d
+    jne short 092feh                          ; 75 9d
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     add ax, 00130h                            ; 05 30 01
     cwd                                       ; 99
@@ -14114,8 +14122,8 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov al, byte [es:bx+00231h]               ; 26 8a 87 31 02
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 004h                  ; 3c 04
-    jc short 093aah                           ; 72 03
-    jmp near 09705h                           ; e9 5b 03
+    jc short 093abh                           ; 72 03
+    jmp near 09706h                           ; e9 5b 03
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     add ax, 00118h                            ; 05 18 01
     mov es, [bp-010h]                         ; 8e 46 f0
@@ -14165,9 +14173,9 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov cl, byte [bp-008h]                    ; 8a 4e f8
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne short 09470h                          ; 75 54
+    jne short 09471h                          ; 75 54
     cmp ax, 00101h                            ; 3d 01 01
-    jne short 09470h                          ; 75 4f
+    jne short 09471h                          ; 75 4f
     mov es, [bp-016h]                         ; 8e 46 ea
     mov bx, word [bp-00eh]                    ; 8b 5e f2
     mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
@@ -14182,13 +14190,13 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov bx, 000ech                            ; bb ec 00
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, es                                ; 8c c2
-    call 0893eh                               ; e8 dd f4
+    call 0893fh                               ; e8 dd f4
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 09473h                           ; 74 08
+    je short 09474h                           ; 74 08
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 09475h                          ; eb 05
-    jmp near 09643h                           ; e9 d0 01
+    jmp short 09476h                          ; eb 05
+    jmp near 09644h                           ; e9 d0 01
     xor ax, ax                                ; 31 c0
     mov dl, al                                ; 88 c2
     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
@@ -14204,9 +14212,9 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov word [bp-012h], ax                    ; 89 46 ee
     mov word [bp-01eh], ax                    ; 89 46 e2
     cmp word [bp-014h], 00fffh                ; 81 7e ec ff 0f
-    jne short 094c4h                          ; 75 1e
+    jne short 094c5h                          ; 75 1e
     cmp di, strict byte 0ffffh                ; 83 ff ff
-    jne short 094c4h                          ; 75 19
+    jne short 094c5h                          ; 75 19
     mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
     mov word [bp-01eh], ax                    ; 89 46 e2
     mov ax, word [bp-0015eh]                  ; 8b 86 a2 fe
@@ -14245,64 +14253,64 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov word [es:si+034h], ax                 ; 26 89 44 34
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 0953fh                           ; 72 0c
-    jbe short 09547h                          ; 76 12
+    jc short 09540h                           ; 72 0c
+    jbe short 09548h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 0954fh                           ; 74 16
+    je short 09550h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0954bh                           ; 74 0e
-    jmp short 09597h                          ; eb 58
+    je short 0954ch                           ; 74 0e
+    jmp short 09598h                          ; eb 58
     test al, al                               ; 84 c0
-    jne short 09597h                          ; 75 54
+    jne short 09598h                          ; 75 54
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 09551h                          ; eb 0a
+    jmp short 09552h                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 09551h                          ; eb 06
+    jmp short 09552h                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 09551h                          ; eb 02
+    jmp short 09552h                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov bl, dl                                ; 88 d3
     add bl, 007h                              ; 80 c3 07
     xor bh, bh                                ; 30 ff
     mov ax, bx                                ; 89 d8
-    call 016ach                               ; e8 4f 81
+    call 016ach                               ; e8 4e 81
     test al, al                               ; 84 c0
-    je short 09597h                           ; 74 36
+    je short 09598h                           ; 74 36
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 42 81
+    call 016ach                               ; e8 41 81
     xor ah, ah                                ; 30 e4
     mov cx, ax                                ; 89 c1
     sal cx, 008h                              ; c1 e1 08
     mov al, dl                                ; 88 d0
-    call 016ach                               ; e8 36 81
+    call 016ach                               ; e8 35 81
     xor ah, ah                                ; 30 e4
     add ax, cx                                ; 01 c8
     mov word [bp-028h], ax                    ; 89 46 d8
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 26 81
+    call 016ach                               ; e8 25 81
     xor ah, ah                                ; 30 e4
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov ax, bx                                ; 89 d8
-    call 016ach                               ; e8 1c 81
+    call 016ach                               ; e8 1b 81
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp short 095a9h                          ; eb 12
+    jmp short 095aah                          ; eb 12
     push word [bp-01eh]                       ; ff 76 e2
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-014h]                       ; ff 76 ec
     push di                                   ; 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ah]                         ; 8d 46 d6
-    call 059cbh                               ; e8 22 c4
+    call 059cch                               ; e8 22 c4
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 6f 83
+    call 01923h                               ; e8 6e 83
     push word [bp-01eh]                       ; ff 76 e2
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-014h]                       ; ff 76 ec
@@ -14323,7 +14331,7 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     push ax                                   ; 50
     push 00cd6h                               ; 68 d6 0c
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 81 83
+    call 01966h                               ; e8 80 83
     add sp, strict byte 0001ch                ; 83 c4 1c
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
@@ -14354,19 +14362,19 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov byte [es:bx+001e2h], dl               ; 26 88 97 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 1f 80
+    call 01650h                               ; e8 1e 80
     mov bl, al                                ; 88 c3
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 1e 80
-    jmp near 096f4h                           ; e9 b1 00
+    call 0165eh                               ; e8 1d 80
+    jmp near 096f5h                           ; e9 b1 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne short 0969dh                          ; 75 54
+    jne short 0969eh                          ; 75 54
     cmp ax, 00101h                            ; 3d 01 01
-    jne short 0969dh                          ; 75 4f
+    jne short 0969eh                          ; 75 4f
     mov es, [bp-016h]                         ; 8e 46 ea
     mov bx, word [bp-00eh]                    ; 8b 5e f2
     mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
@@ -14381,13 +14389,13 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     mov bx, 000a1h                            ; bb a1 00
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, es                                ; 8c c2
-    call 0893eh                               ; e8 b0 f2
+    call 0893fh                               ; e8 b0 f2
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 0969fh                           ; 74 07
+    je short 096a0h                           ; 74 07
     mov dx, strict word 00001h                ; ba 01 00
-    jmp short 096a1h                          ; eb 04
-    jmp short 096f4h                          ; eb 55
+    jmp short 096a2h                          ; eb 04
+    jmp short 096f5h                          ; eb 55
     xor dx, dx                                ; 31 d2
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
@@ -14426,7 +14434,7 @@ ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf970d LB 0x43
+ahci_mem_alloc_:                             ; 0xf970e LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14436,25 +14444,25 @@ ahci_mem_alloc_:                             ; 0xf970d LB 0x43
     push di                                   ; 57
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0166ch                               ; e8 4f 7f
+    call 0166ch                               ; e8 4e 7f
     test ax, ax                               ; 85 c0
-    je short 09746h                           ; 74 25
+    je short 09747h                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
     xor dx, dx                                ; 31 d2
     mov cx, strict word 0000ah                ; b9 0a 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09729h                               ; e2 fa
+    loop 0972ah                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
     mov cx, strict word 00004h                ; b9 04 00
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 09736h                               ; e2 fa
+    loop 09737h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0167ah                               ; e8 36 7f
+    call 0167ah                               ; e8 35 7f
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14464,7 +14472,7 @@ ahci_mem_alloc_:                             ; 0xf970d LB 0x43
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf9750 LB 0x16d
+ahci_hba_init_:                              ; 0xf9751 LB 0x16d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14476,7 +14484,7 @@ ahci_hba_init_:                              ; 0xf9750 LB 0x16d
     mov si, ax                                ; 89 c6
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 06 7f
+    call 0166ch                               ; e8 05 7f
     mov bx, 00122h                            ; bb 22 01
     mov di, ax                                ; 89 c7
     mov ax, strict word 00010h                ; b8 10 00
@@ -14493,11 +14501,11 @@ ahci_hba_init_:                              ; 0xf9750 LB 0x16d
     ; mov dx, ax                                ; 8b d0
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 0970dh                               ; e8 83 ff
+    call 0970eh                               ; e8 83 ff
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    jne short 09794h                          ; 75 03
-    jmp near 0989ch                           ; e9 08 01
+    jne short 09795h                          ; 75 03
+    jmp near 0989dh                           ; e9 08 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov es, di                                ; 8e c7
     mov word [es:bx+00232h], ax               ; 26 89 87 32 02
@@ -14547,7 +14555,7 @@ ahci_hba_init_:                              ; 0xf9750 LB 0x16d
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 097eeh                          ; 75 de
+    jne short 097efh                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14565,33 +14573,33 @@ ahci_hba_init_:                              ; 0xf9750 LB 0x16d
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 087aeh                               ; e8 7a ef
+    call 087afh                               ; e8 7a ef
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov byte [bp-00ch], al                    ; 88 46 f4
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
-    jmp short 09860h                          ; eb 21
+    jmp short 09861h                          ; eb 21
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 09857h                           ; 74 12
+    je short 09858h                           ; 74 12
     mov bl, byte [bp-00eh]                    ; 8a 5e f2
     xor bh, bh                                ; 30 ff
     xor ax, ax                                ; 31 c0
     mov dx, word [bp-010h]                    ; 8b 56 f0
-    call 0922ah                               ; e8 d8 f9
+    call 0922bh                               ; e8 d8 f9
     dec byte [bp-00ch]                        ; fe 4e f4
-    je short 0989ah                           ; 74 43
+    je short 0989bh                           ; 74 43
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 020h                  ; 80 7e f2 20
-    jnc short 0989ah                          ; 73 3a
+    jnc short 0989bh                          ; 73 3a
     mov cl, byte [bp-00eh]                    ; 8a 4e f2
     xor ch, ch                                ; 30 ed
     mov bx, strict word 00001h                ; bb 01 00
     xor di, di                                ; 31 ff
-    jcxz 09872h                               ; e3 06
+    jcxz 09873h                               ; e3 06
     sal bx, 1                                 ; d1 e3
     rcl di, 1                                 ; d1 d7
-    loop 0986ch                               ; e2 fa
+    loop 0986dh                               ; e2 fa
     mov ax, strict word 0000ch                ; b8 0c 00
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14607,11 +14615,11 @@ ahci_hba_init_:                              ; 0xf9750 LB 0x16d
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 09896h                          ; 75 04
+    jne short 09897h                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 0983fh                           ; 74 a9
+    je short 09840h                           ; 74 a9
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 09841h                          ; eb a7
+    jmp short 09842h                          ; eb a7
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14621,19 +14629,19 @@ ahci_hba_init_:                              ; 0xf9750 LB 0x16d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0a5h, 099h, 083h, 099h, 089h, 099h, 08fh, 099h, 095h
-    db  099h, 09bh, 099h, 0a1h, 099h, 0a5h, 099h
-_ahci_init:                                  ; 0xf98bd LB 0x119
+    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0a6h, 099h, 084h, 099h, 08ah, 099h, 090h, 099h, 096h
+    db  099h, 09ch, 099h, 0a2h, 099h, 0a6h, 099h
+_ahci_init:                                  ; 0xf98be LB 0x119
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
     sub sp, strict byte 0000eh                ; 83 ec 0e
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 09df1h                               ; e8 24 05
+    call 09df2h                               ; e8 24 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je short 09920h                           ; 74 4c
+    je short 09921h                           ; 74 4c
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -14641,10 +14649,10 @@ _ahci_init:                                  ; 0xf98bd LB 0x119
     xor dh, dh                                ; 30 f6
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 09df9h                               ; e8 10 05
+    call 09dfah                               ; e8 10 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 09923h                           ; 74 34
+    je short 09924h                           ; 74 34
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
@@ -14655,19 +14663,19 @@ _ahci_init:                                  ; 0xf98bd LB 0x119
     mov byte [bp-00bh], bh                    ; 88 7e f5
     mov dx, word [bp-010h]                    ; 8b 56 f0
     mov ax, word [bp-00ch]                    ; 8b 46 f4
-    call 09df9h                               ; e8 eb 04
+    call 09dfah                               ; e8 eb 04
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 09923h                           ; 74 11
+    je short 09924h                           ; 74 11
     mov bl, cl                                ; 88 cb
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, word [bp-010h]                    ; 8b 56 f0
     mov ax, word [bp-00ch]                    ; 8b 46 f4
-    jmp short 098e6h                          ; eb c6
-    jmp near 099d0h                           ; e9 ad 00
+    jmp short 098e7h                          ; eb c6
+    jmp near 099d1h                           ; e9 ad 00
     test cl, cl                               ; 84 c9
-    je short 09920h                           ; 74 f9
+    je short 09921h                           ; 74 f9
     add cl, 002h                              ; 80 c1 02
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
@@ -14679,92 +14687,92 @@ _ahci_init:                                  ; 0xf98bd LB 0x119
     mov byte [bp-009h], bh                    ; 88 7e f7
     mov dx, word [bp-00eh]                    ; 8b 56 f2
     mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 09df9h                               ; e8 b0 04
+    call 09dfah                               ; e8 b0 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 09920h                          ; 75 d3
+    jne short 09921h                          ; 75 d3
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     mov bl, cl                                ; 88 cb
     add bl, 002h                              ; 80 c3 02
     xor bh, bh                                ; 30 ff
     mov dx, word [bp-00eh]                    ; 8b 56 f2
     mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 09e27h                               ; e8 c6 04
+    call 09e28h                               ; e8 c6 04
     mov dx, ax                                ; 89 c2
     and ax, strict word 0000fh                ; 25 0f 00
     sub ax, strict word 00004h                ; 2d 04 00
     cmp ax, strict word 0000bh                ; 3d 0b 00
-    jnbe short 099a5h                         ; 77 37
+    jnbe short 099a6h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 098a6h                            ; bf a6 98
+    mov di, 098a7h                            ; bf a7 98
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-06753h]               ; 2e 8b 85 ad 98
+    mov ax, word [cs:di-06752h]               ; 2e 8b 85 ae 98
     jmp ax                                    ; ff e0
     mov byte [bp-004h], 010h                  ; c6 46 fc 10
-    jmp short 099a5h                          ; eb 1c
+    jmp short 099a6h                          ; eb 1c
     mov byte [bp-004h], 014h                  ; c6 46 fc 14
-    jmp short 099a5h                          ; eb 16
+    jmp short 099a6h                          ; eb 16
     mov byte [bp-004h], 018h                  ; c6 46 fc 18
-    jmp short 099a5h                          ; eb 10
+    jmp short 099a6h                          ; eb 10
     mov byte [bp-004h], 01ch                  ; c6 46 fc 1c
-    jmp short 099a5h                          ; eb 0a
+    jmp short 099a6h                          ; eb 0a
     mov byte [bp-004h], 020h                  ; c6 46 fc 20
-    jmp short 099a5h                          ; eb 04
+    jmp short 099a6h                          ; eb 04
     mov byte [bp-004h], 024h                  ; c6 46 fc 24
     mov cx, dx                                ; 89 d1
     shr cx, 004h                              ; c1 e9 04
     sal cx, 002h                              ; c1 e1 02
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test al, al                               ; 84 c0
-    je short 099d0h                           ; 74 1c
+    je short 099d1h                           ; 74 1c
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-006h]                    ; 8a 56 fa
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 09e51h                               ; e8 8c 04
+    call 09e52h                               ; e8 8c 04
     test AL, strict byte 001h                 ; a8 01
-    je short 099d0h                           ; 74 07
+    je short 099d1h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, cx                                ; 01 c8
-    call 09750h                               ; e8 80 fd
+    call 09751h                               ; e8 80 fd
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf99d6 LB 0x39
+apm_out_str_:                                ; 0xf99d7 LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     mov bx, ax                                ; 89 c3
     cmp byte [bx], 000h                       ; 80 3f 00
-    je short 099ebh                           ; 74 0a
+    je short 099ech                           ; 74 0a
     mov al, byte [bx]                         ; 8a 07
     out DX, AL                                ; ee
     inc bx                                    ; 43
     mov al, byte [bx]                         ; 8a 07
     db  00ah, 0c0h
     ; or al, al                                 ; 0a c0
-    jne short 099e3h                          ; 75 f8
+    jne short 099e4h                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    xor byte [bp+si-06548h], bl               ; 30 9a b8 9a
-    inc dx                                    ; 42
-    call far 09ab8h:09a5dh                    ; 9a 5d 9a b8 9a
-    mov byte [bp+si-06548h], bl               ; 88 9a b8 9a
-    mov si, 08d9ah                            ; be 9a 8d
-    call far 09a8dh:09a8dh                    ; 9a 8d 9a 8d 9a
-    std                                       ; fd
-    call far 09a8dh:09a8dh                    ; 9a 8d 9a 8d 9a
-    db  0f6h
+    xor word [bp+si-06547h], bx               ; 31 9a b9 9a
+    inc bx                                    ; 43
+    call far 09ab9h:09a5eh                    ; 9a 5e 9a b9 9a
+    mov word [bp+si-06547h], bx               ; 89 9a b9 9a
+    mov di, 08e9ah                            ; bf 9a 8e
+    call far 09a8eh:09a8eh                    ; 9a 8e 9a 8e 9a
+    db  0feh
+    call far 09a8eh:09a8eh                    ; 9a 8e 9a 8e 9a
+    db  0f7h
     db  09ah
-_apm_function:                               ; 0xf9a0f LB 0xf3
+_apm_function:                               ; 0xf9a10 LB 0xf3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14772,23 +14780,23 @@ _apm_function:                               ; 0xf9a0f LB 0xf3
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    jnbe short 09a8dh                         ; 77 6c
+    jnbe short 09a8eh                         ; 77 6c
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     mov dx, word [bp+018h]                    ; 8b 56 18
     or dl, 001h                               ; 80 ca 01
-    jmp word [cs:bx-0660fh]                   ; 2e ff a7 f1 99
+    jmp word [cs:bx-0660eh]                   ; 2e ff a7 f2 99
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
     mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
     mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
-    jmp near 09ab8h                           ; e9 76 00
+    jmp near 09ab9h                           ; e9 76 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0a074h                ; c7 46 0c 74 a0
     mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
     mov ax, strict word 0fff0h                ; b8 f0 ff
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+004h], ax                    ; 89 46 04
-    jmp near 09ab8h                           ; e9 5b 00
+    jmp near 09ab9h                           ; e9 5b 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     mov ax, 0f000h                            ; b8 00 f0
@@ -14801,19 +14809,19 @@ _apm_function:                               ; 0xf9a0f LB 0xf3
     sal ebx, 010h                             ; 66 c1 e3 10
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 09ab8h                           ; e9 30 00
+    jmp near 09ab9h                           ; e9 30 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 09ab8h                           ; e9 2b 00
+    jmp near 09ab9h                           ; e9 2b 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 8b 7e
+    call 01923h                               ; e8 8a 7e
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     push 00d29h                               ; 68 29 0d
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 c0 7e
+    call 01966h                               ; e8 bf 7e
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -14825,30 +14833,30 @@ _apm_function:                               ; 0xf9a0f LB 0xf3
     pop bp                                    ; 5d
     retn                                      ; c3
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 09ae3h                           ; 74 1f
+    je short 09ae4h                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 09adbh                           ; 74 11
+    je short 09adch                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 09aebh                          ; 75 1b
+    jne short 09aech                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d10h                            ; b8 10 0d
-    call 099d6h                               ; e8 fd fe
-    jmp short 09ab8h                          ; eb dd
+    call 099d7h                               ; e8 fd fe
+    jmp short 09ab9h                          ; eb dd
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d18h                            ; b8 18 0d
-    jmp short 09ad6h                          ; eb f3
+    jmp short 09ad7h                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d20h                            ; b8 20 0d
-    jmp short 09ad6h                          ; eb eb
+    jmp short 09ad7h                          ; eb eb
     or ah, 00ah                               ; 80 cc 0a
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 09ab8h                          ; eb c2
+    jmp short 09ab9h                          ; eb c2
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 09ab8h                          ; eb bb
+    jmp short 09ab9h                          ; eb bb
     or ah, 080h                               ; 80 cc 80
-    jmp short 09aeeh                          ; eb ec
-pci16_select_reg_:                           ; 0xf9b02 LB 0x24
+    jmp short 09aefh                          ; eb ec
+pci16_select_reg_:                           ; 0xf9b03 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14865,7 +14873,7 @@ pci16_select_reg_:                           ; 0xf9b02 LB 0x24
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf9b26 LB 0xf9
+pci16_find_device_:                          ; 0xf9b27 LB 0xf9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14879,49 +14887,49 @@ pci16_find_device_:                          ; 0xf9b26 LB 0xf9
     xor bx, bx                                ; 31 db
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     test bl, 007h                             ; f6 c3 07
-    jne short 09b6eh                          ; 75 2d
+    jne short 09b6fh                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 09b02h                               ; e8 b9 ff
+    call 09b03h                               ; e8 b9 ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 09b5ch                          ; 75 06
+    jne short 09b5dh                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 09befh                           ; e9 93 00
+    jmp near 09bf0h                           ; e9 93 00
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 09b69h                           ; 74 07
+    je short 09b6ah                           ; 74 07
     mov word [bp-010h], strict word 00001h    ; c7 46 f0 01 00
-    jmp short 09b6eh                          ; eb 05
+    jmp short 09b6fh                          ; eb 05
     mov word [bp-010h], strict word 00008h    ; c7 46 f0 08 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 09b96h                          ; 75 1f
+    jne short 09b97h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 09b96h                          ; 75 16
+    jne short 09b97h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 09b02h                               ; e8 7a ff
+    call 09b03h                               ; e8 7a ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-008h]                    ; 3a 46 f8
-    jbe short 09b96h                          ; 76 03
+    jbe short 09b97h                          ; 76 03
     mov byte [bp-008h], al                    ; 88 46 f8
     test di, di                               ; 85 ff
-    je short 09b9fh                           ; 74 05
+    je short 09ba0h                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 09ba1h                          ; eb 02
+    jmp short 09ba2h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 09b02h                               ; e8 5c ff
+    call 09b03h                               ; e8 5c ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -14932,49 +14940,51 @@ pci16_find_device_:                          ; 0xf9b26 LB 0xf9
     mov word [bp-00ch], dx                    ; 89 56 f4
     mov word [bp-00eh], strict word 00000h    ; c7 46 f2 00 00
     test di, di                               ; 85 ff
-    je short 09bd0h                           ; 74 0f
+    je short 09bd1h                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 09bc4h                               ; e2 fa
+    loop 09bc5h                               ; e2 fa
     mov word [bp-00ah], ax                    ; 89 46 f6
     mov word [bp-00ch], dx                    ; 89 56 f4
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, word [bp-014h]                    ; 3b 46 ec
-    jne short 09be0h                          ; 75 08
+    jne short 09be1h                          ; 75 08
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 09be6h                           ; 74 06
+    je short 09be7h                           ; 74 06
     cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
-    je short 09bech                           ; 74 06
+    je short 09bedh                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 09c00h                           ; 74 14
+    je short 09c01h                           ; 74 14
     add bx, word [bp-010h]                    ; 03 5e f0
     mov dx, bx                                ; 89 da
     shr dx, 008h                              ; c1 ea 08
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     cmp dx, ax                                ; 39 c2
-    jnbe short 09c00h                         ; 77 03
-    jmp near 09b3ch                           ; e9 3c ff
+    jnbe short 09c01h                         ; 77 03
+    jmp near 09b3dh                           ; e9 3c ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 09c09h                          ; 75 04
+    jne short 09c0ah                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 09c0ch                          ; eb 03
+    jmp short 09c0dh                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    add byte [di-062e7h], bl                  ; 00 9d 19 9d
-    sub bx, word [di-062c1h]                  ; 2b 9d 3f 9d
-    push cx                                   ; 51
+    add word [di-062e6h], bx                  ; 01 9d 1a 9d
+    sub AL, strict byte 09dh                  ; 2c 9d
+    inc ax                                    ; 40
     popfw                                     ; 9d
-    db  064h, 09dh
-    ; fs popfw                                  ; 64 9d
-_pci16_function:                             ; 0xf9c1f LB 0x1d2
+    push dx                                   ; 52
+    popfw                                     ; 9d
+    db  065h, 09dh
+    ; gs popfw                                  ; 65 9d
+_pci16_function:                             ; 0xf9c20 LB 0x1d2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14988,73 +14998,73 @@ _pci16_function:                             ; 0xf9c1f LB 0x1d2
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 09c51h                           ; 72 13
-    jbe short 09ca4h                          ; 76 64
+    jc short 09c52h                           ; 72 13
+    jbe short 09ca5h                          ; 76 64
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je short 09cach                           ; 74 67
+    je short 09cadh                           ; 74 67
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc short 09c5bh                           ; 72 11
+    jc short 09c5ch                           ; 72 11
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe short 09cafh                          ; 76 60
-    jmp short 09c5bh                          ; eb 0a
+    jbe short 09cb0h                          ; 76 60
+    jmp short 09c5ch                          ; eb 0a
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 09c7ah                           ; 74 24
+    je short 09c7bh                           ; 74 24
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 09c5eh                           ; 74 03
-    jmp near 09dbdh                           ; e9 5f 01
+    je short 09c5fh                           ; 74 03
+    jmp near 09dbeh                           ; e9 5f 01
     mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
     mov word [bp+014h], 00210h                ; c7 46 14 10 02
     mov word [bp+01ch], strict word 00000h    ; c7 46 1c 00 00
     mov word [bp+018h], 04350h                ; c7 46 18 50 43
     mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
-    jmp near 09deah                           ; e9 70 01
+    jmp near 09debh                           ; e9 70 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 09c86h                          ; 75 06
+    jne short 09c87h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 09de3h                           ; e9 5d 01
+    jmp near 09de4h                           ; e9 5d 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor cx, cx                                ; 31 c9
-    call 09b26h                               ; e8 92 fe
+    call 09b27h                               ; e8 92 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09ca6h                          ; 75 0d
+    jne short 09ca7h                          ; 75 0d
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09de3h                           ; e9 3f 01
-    jmp short 09cb1h                          ; eb 0b
+    jmp near 09de4h                           ; e9 3f 01
+    jmp short 09cb2h                          ; eb 0b
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09deah                           ; e9 3e 01
-    jmp near 09d78h                           ; e9 c9 00
-    jmp short 09cd6h                          ; eb 25
+    jmp near 09debh                           ; e9 3e 01
+    jmp near 09d79h                           ; e9 c9 00
+    jmp short 09cd7h                          ; eb 25
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+01eh]                    ; 8b 56 1e
     mov cx, strict word 00001h                ; b9 01 00
-    call 09b26h                               ; e8 66 fe
+    call 09b27h                               ; e8 66 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09cd0h                          ; 75 0b
+    jne short 09cd1h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09de3h                           ; e9 13 01
+    jmp near 09de4h                           ; e9 13 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09deah                           ; e9 14 01
+    jmp near 09debh                           ; e9 14 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 09ce3h                           ; 72 06
+    jc short 09ce4h                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 09de3h                           ; e9 00 01
+    jmp near 09de4h                           ; e9 00 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 09b02h                               ; e8 16 fe
+    call 09b03h                               ; e8 16 fe
     mov bx, word [bp+020h]                    ; 8b 5e 20
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00008h                ; 83 eb 08
     cmp bx, strict byte 00005h                ; 83 fb 05
-    jnbe short 09d61h                         ; 77 68
+    jnbe short 09d62h                         ; 77 68
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-063edh]                   ; 2e ff a7 13 9c
+    jmp word [cs:bx-063ech]                   ; 2e ff a7 14 9c
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -15065,14 +15075,14 @@ _pci16_function:                             ; 0xf9c1f LB 0x1d2
     ; sub ah, ah                                ; 2a e4
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp short 09d61h                          ; eb 48
+    jmp short 09d62h                          ; eb 48
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 002h                              ; 80 e2 02
     add dx, 00cfch                            ; 81 c2 fc 0c
     in ax, DX                                 ; ed
     mov word [bp+01ch], ax                    ; 89 46 1c
-    jmp short 09d61h                          ; eb 36
+    jmp short 09d62h                          ; eb 36
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -15081,21 +15091,21 @@ _pci16_function:                             ; 0xf9c1f LB 0x1d2
     xchg dx, ax                               ; 92
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp short 09d61h                          ; eb 22
+    jmp short 09d62h                          ; eb 22
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 003h                              ; 80 e2 03
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp short 09d61h                          ; eb 10
+    jmp short 09d62h                          ; eb 10
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 002h                              ; 80 e2 02
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp near 09deah                           ; e9 86 00
+    jmp near 09debh                           ; e9 86 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov cx, word [bp+01eh]                    ; 8b 4e 1e
     mov dx, 00cfch                            ; ba fc 0c
@@ -15104,20 +15114,20 @@ _pci16_function:                             ; 0xf9c1f LB 0x1d2
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09deah                          ; eb 72
+    jmp short 09debh                          ; eb 72
     mov bx, word [bp+004h]                    ; 8b 5e 04
     mov es, [bp+026h]                         ; 8e 46 26
     mov word [bp-008h], bx                    ; 89 5e f8
     mov [bp-006h], es                         ; 8c 46 fa
     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 09d9eh                          ; 76 11
+    jbe short 09d9fh                          ; 76 11
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 089h                               ; 80 cc 89
     mov word [bp+020h], ax                    ; 89 46 20
     or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
-    jmp short 09db2h                          ; eb 14
+    jmp short 09db3h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
     mov dx, ds                                ; 8c da
@@ -15129,18 +15139,18 @@ _pci16_function:                             ; 0xf9c1f LB 0x1d2
     mov ax, word [0f4a0h]                     ; a1 a0 f4
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 09deah                          ; eb 2d
+    jmp short 09debh                          ; eb 2d
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 5b 7b
+    call 01923h                               ; e8 5a 7b
     mov ax, word [bp+014h]                    ; 8b 46 14
     push ax                                   ; 50
     mov ax, word [bp+020h]                    ; 8b 46 20
     push ax                                   ; 50
     push 00d5ch                               ; 68 5c 0d
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 8e 7b
+    call 01966h                               ; e8 8d 7b
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -15152,13 +15162,13 @@ _pci16_function:                             ; 0xf9c1f LB 0x1d2
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf9df1 LB 0x8
+pci_find_classcode_:                         ; 0xf9df2 LB 0x8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov ax, strict word 0ffffh                ; b8 ff ff
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf9df9 LB 0x2e
+pci_read_config_byte_:                       ; 0xf9dfa LB 0x2e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15184,7 +15194,7 @@ pci_read_config_byte_:                       ; 0xf9df9 LB 0x2e
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf9e27 LB 0x2a
+pci_read_config_word_:                       ; 0xf9e28 LB 0x2a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15208,7 +15218,7 @@ pci_read_config_word_:                       ; 0xf9e27 LB 0x2a
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf9e51 LB 0x4e
+pci_read_config_dword_:                      ; 0xf9e52 LB 0x4e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15230,7 +15240,7 @@ pci_read_config_dword_:                      ; 0xf9e51 LB 0x4e
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    jne short 09e90h                          ; 75 14
+    jne short 09e91h                          ; 75 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
@@ -15240,9 +15250,9 @@ pci_read_config_dword_:                      ; 0xf9e51 LB 0x4e
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    je short 09e95h                           ; 74 05
+    je short 09e96h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 09e97h                          ; eb 02
+    jmp short 09e98h                          ; eb 02
     xor ax, ax                                ; 31 c0
     cwd                                       ; 99
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -15250,7 +15260,7 @@ pci_read_config_dword_:                      ; 0xf9e51 LB 0x4e
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf9e9f LB 0x1d
+vds_is_present_:                             ; 0xf9ea0 LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -15258,7 +15268,7 @@ vds_is_present_:                             ; 0xf9e9f LB 0x1d
     mov ax, strict word 00040h                ; b8 40 00
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 09eb7h                           ; 74 06
+    je short 09eb8h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
     pop bx                                    ; 5b
@@ -15267,7 +15277,7 @@ vds_is_present_:                             ; 0xf9e9f LB 0x1d
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf9ebc LB 0x1e
+vds_real_to_lin_:                            ; 0xf9ebd LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -15278,7 +15288,7 @@ vds_real_to_lin_:                            ; 0xf9ebc LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09ecah                               ; e2 fa
+    loop 09ecbh                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -15286,7 +15296,7 @@ vds_real_to_lin_:                            ; 0xf9ebc LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9eda LB 0x77
+vds_build_sg_list_:                          ; 0xf9edb LB 0x77
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15300,23 +15310,23 @@ vds_build_sg_list_:                          ; 0xf9eda LB 0x77
     mov word [es:di], bx                      ; 26 89 1d
     mov bx, word [bp+006h]                    ; 8b 5e 06
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 09ebch                               ; e8 c3 ff
+    call 09ebdh                               ; e8 c3 ff
     mov es, si                                ; 8e c6
     mov word [es:di+004h], ax                 ; 26 89 45 04
     mov word [es:di+006h], dx                 ; 26 89 55 06
     mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
-    call 09e9fh                               ; e8 93 ff
+    call 09ea0h                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 09f21h                           ; 74 11
+    je short 09f22h                           ; 74 11
     mov es, si                                ; 8e c6
     mov ax, 08105h                            ; b8 05 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc short 09f1eh                           ; 72 02
+    jc short 09f1fh                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 09f48h                          ; eb 27
+    jmp short 09f49h                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     mov dx, word [es:di+004h]                 ; 26 8b 55 04
@@ -15333,21 +15343,21 @@ vds_build_sg_list_:                          ; 0xf9eda LB 0x77
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf9f51 LB 0x2f
+vds_free_sg_list_:                           ; 0xf9f52 LB 0x2e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 09e9fh                               ; e8 44 ff
+    call 09ea0h                               ; e8 44 ff
     test ax, ax                               ; 85 c0
-    je short 09f70h                           ; 74 11
+    je short 09f71h                           ; 74 11
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
     mov ax, 08106h                            ; b8 06 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc short 09f6fh                           ; 72 02
+    jc short 09f70h                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
@@ -15358,7 +15368,6 @@ vds_free_sg_list_:                           ; 0xf9f51 LB 0x2f
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0x1 db 0
 __U4M:                                       ; 0xf9f80 LB 0x20
     pushfw                                    ; 9c
     push si                                   ; 56
@@ -16447,7 +16456,7 @@ normal_post:                                 ; 0xfe0c6 LB 0x1ed
     mov ax, 0c000h                            ; b8 00 c0
     mov dx, 0c800h                            ; ba 00 c8
     call 01600h                               ; e8 ea 33
-    call 04eabh                               ; e8 92 6c
+    call 04each                               ; e8 93 6c
     pop DS                                    ; 1f
     mov ax, 0ff53h                            ; b8 53 ff
     mov word [0003ch], ax                     ; a3 3c 00
@@ -16564,8 +16573,8 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     cld                                       ; fc
     call 01c9fh                               ; e8 63 39
     call 02118h                               ; e8 d9 3d
-    call 098bdh                               ; e8 7b b5
-    call 08748h                               ; e8 03 a4
+    call 098beh                               ; e8 7c b5
+    call 08749h                               ; e8 04 a4
     call 0ed2fh                               ; e8 e7 09
     call 0e2d2h                               ; e8 87 ff
     push CS                                   ; 0e
@@ -16677,7 +16686,7 @@ biosorg_check_at_0E739h:                     ; 0xfe739 LB 0x1a
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06410h                               ; e8 ce 7c
+    call 06411h                               ; e8 cf 7c
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -16753,7 +16762,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 056dbh                               ; e8 99 6e
+    call 056dch                               ; e8 9a 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16770,7 +16779,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 056dbh                               ; e8 7b 6e
+    call 056dch                               ; e8 7c 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16815,7 +16824,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 051b3h                               ; e8 ea 67
+    call 051b4h                               ; e8 eb 67
     pop ES                                    ; 07
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -16831,7 +16840,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06eb7h                               ; e8 d8 84
+    call 06eb8h                               ; e8 d9 84
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -16880,7 +16889,7 @@ int13_relocated:                             ; 0xfec5b LB 0x55
     pop DS                                    ; 1f
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 04160h                           ; e9 c9 54
+    jmp near 04161h                           ; e9 ca 54
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
     ; cmp al, dl                                ; 3a c2
@@ -16926,16 +16935,16 @@ int13_notfloppy:                             ; 0xfecc8 LB 0x14
     jc short 0ecdch                           ; 72 0f
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 045a2h                               ; e8 cd 58
+    call 045a3h                               ; e8 ce 58
     pop bx                                    ; 5b
     sal ebx, 010h                             ; 66 c1 e3 10
     jmp short 0ece9h                          ; eb 0d
 int13_disk:                                  ; 0xfecdc LB 0xd
     cmp ah, 040h                              ; 80 fc 40
     jnbe short 0ece6h                         ; 77 05
-    call 05ab2h                               ; e8 ce 6d
+    call 05ab3h                               ; e8 cf 6d
     jmp short 0ece9h                          ; eb 03
-    call 05f01h                               ; e8 18 72
+    call 05f02h                               ; e8 19 72
 int13_out:                                   ; 0xfece9 LB 0x4
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17149,7 +17158,7 @@ int17_handler:                               ; 0xfefd4 LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07855h                               ; e8 78 88
+    call 07856h                               ; e8 79 88
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -17200,28 +17209,28 @@ int19_relocated:                             ; 0xff0ac LB 0x90
     ; mov bp, sp                                ; 8b ec
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 04c27h                               ; e8 57 5b
+    call 04c28h                               ; e8 58 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 27
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 04c27h                               ; e8 4a 5b
+    call 04c28h                               ; e8 4b 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 1a
     mov ax, strict word 00003h                ; b8 03 00
     push ax                                   ; 50
-    call 04c27h                               ; e8 3d 5b
+    call 04c28h                               ; e8 3e 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 0d
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 04c27h                               ; e8 30 5b
+    call 04c28h                               ; e8 31 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
@@ -17505,7 +17514,7 @@ int15_handler:                               ; 0xff859 LB 0x40
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06d2dh                               ; e8 c6 74
+    call 06d2eh                               ; e8 c7 74
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -17527,20 +17536,20 @@ int15_handler:                               ; 0xff859 LB 0x40
     je short 0f894h                           ; 74 0e
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f899h                           ; 74 0e
-    call 06667h                               ; e8 d9 6d
+    call 06668h                               ; e8 da 6d
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
     popfw                                     ; 9d
     jmp short 0f8a5h                          ; eb 11
-    call 09a0fh                               ; e8 78 a1
+    call 09a10h                               ; e8 79 a1
     jmp short 0f88eh                          ; eb f5
 int15_handler_mouse:                         ; 0xff899 LB 0x5
-    call 074c8h                               ; e8 2c 7c
+    call 074c9h                               ; e8 2d 7c
     jmp short 0f88eh                          ; eb f0
 int15_handler32:                             ; 0xff89e LB 0x7
     pushaw                                    ; 60
-    call 069a3h                               ; e8 01 71
+    call 069a4h                               ; e8 02 71
     popaw                                     ; 61
     jmp short 0f88fh                          ; eb ea
 iret_modify_cf:                              ; 0xff8a5 LB 0x14
@@ -17572,7 +17581,7 @@ int74_handler:                               ; 0xff8b9 LB 0x2b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 073f6h                               ; e8 2c 7b
+    call 073f7h                               ; e8 2d 7b
     pop cx                                    ; 59
     jcxz 0f8d9h                               ; e3 0c
     push strict byte 00000h                   ; 6a 00
@@ -17604,7 +17613,7 @@ int70_handler:                               ; 0xff8f6 LB 0x1f
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0709bh                               ; e8 9c 77
+    call 0709ch                               ; e8 9d 77
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17693,7 +17702,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0715ah                               ; e8 e3 72
+    call 0715bh                               ; e8 e4 72
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17798,4 +17807,4 @@ biosorg_check_before_or_at_0FFEEh:           ; 0xfff80 LB 0x70
     db  'XM'
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 052h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 00ah
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
index fb7a88c..d258d6e 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
@@ -1 +1 @@
-17a97e90f25f11a082402a88853ab611 *VBoxPcBios286.rom
+8b2d1b43924d849f5dcb014fe3e3d3cf *VBoxPcBios286.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
index b6ecebe..b23684e 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
@@ -950,12 +950,12 @@ _fd_parm:                                    ; 0xf0000 LB 0x5b
 _fd_map:                                     ; 0xf005b LB 0xf
     db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
 _pktacc:                                     ; 0xf006a LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 0cch, 02bh, 00fh, 081h, 036h, 090h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 0cch, 02bh, 010h, 081h, 037h, 090h
 _softrst:                                    ; 0xf0076 LB 0xc
     db  000h, 000h, 000h, 000h, 000h, 000h, 0b4h, 02eh, 0c1h, 03bh, 0c1h, 03bh
 _dskacc:                                     ; 0xf0082 LB 0x2e
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0bch, 02ah, 071h, 02bh, 000h, 000h, 000h, 000h
-    db  059h, 07fh, 034h, 080h, 00ch, 08fh, 0b2h, 08fh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  05ah, 07fh, 035h, 080h, 00dh, 08fh, 0b3h, 08fh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
 section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
@@ -1078,7 +1078,7 @@ section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
 
 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
-    db  'VirtualBox 5.1.18', 000h
+    db  'VirtualBox 5.1.20', 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -1457,7 +1457,7 @@ _print_bios_banner:                          ; 0xf17ff LB 0x2e
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     jmp short 01829h                          ; eb 03
-    call 07b24h                               ; e8 fb 62
+    call 07b25h                               ; e8 fc 62
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
@@ -2714,7 +2714,7 @@ _ata_detect:                                 ; 0xf21a4 LB 0x65c
     push si                                   ; 56
     mov dx, ss                                ; 8c d2
     lea ax, [bp-03ah]                         ; 8d 46 c6
-    call 059d6h                               ; e8 96 35
+    call 059d7h                               ; e8 97 35
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5370,7 +5370,7 @@ device_is_cdrom_:                            ; 0xf3d95 LB 0x35
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf3dca LB 0x416
+cdrom_boot_:                                 ; 0xf3dca LB 0x417
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5399,7 +5399,7 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
     jc short 03e16h                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 0417dh                           ; e9 67 03
+    jmp near 0417eh                           ; e9 68 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
@@ -5423,11 +5423,11 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     jmp short 03e5bh                          ; eb 09
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 004h                  ; 80 7e f2 04
-    jnbe short 03e92h                         ; 77 37
-    movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
-    imul di, di, strict byte 0001ch           ; 6b ff 1c
-    mov es, [bp-012h]                         ; 8e 46 ee
-    add di, word [bp-014h]                    ; 03 7e ec
+    jnbe short 03e91h                         ; 77 36
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    les di, [bp-014h]                         ; c4 7e ec
+    add di, ax                                ; 01 c7
     movzx di, byte [es:di+022h]               ; 26 0f b6 7d 22
     add di, di                                ; 01 ff
     lea dx, [bp-00826h]                       ; 8d 96 da f7
@@ -5443,35 +5443,35 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     mov dx, strict word 0000ch                ; ba 0c 00
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    jne short 03e52h                          ; 75 c0
+    jne short 03e52h                          ; 75 c1
     test ax, ax                               ; 85 c0
-    je short 03e9ch                           ; 74 06
+    je short 03e9bh                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 0417dh                           ; e9 e1 02
+    jmp near 0417eh                           ; e9 e3 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
-    je short 03ea9h                           ; 74 06
+    je short 03ea8h                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 0417dh                           ; e9 d4 02
+    jmp near 0417eh                           ; e9 d6 02
     xor di, di                                ; 31 ff
-    jmp short 03eb3h                          ; eb 06
+    jmp short 03eb2h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00005h                ; 83 ff 05
-    jnc short 03ec3h                          ; 73 10
+    jnc short 03ec2h                          ; 73 10
     mov al, byte [bp+di-00825h]               ; 8a 83 db f7
     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
-    je short 03eadh                           ; 74 f0
+    je short 03each                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 0417dh                           ; e9 ba 02
+    jmp near 0417eh                           ; e9 bc 02
     xor di, di                                ; 31 ff
-    jmp short 03ecdh                          ; eb 06
+    jmp short 03ecch                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00017h                ; 83 ff 17
-    jnc short 03eddh                          ; 73 10
+    jnc short 03edch                          ; 73 10
     mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
-    je short 03ec7h                           ; 74 f0
+    je short 03ec6h                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 0417dh                           ; e9 a0 02
+    jmp near 0417eh                           ; e9 a2 02
     mov ax, word [bp-007dfh]                  ; 8b 86 21 f8
     mov dx, word [bp-007ddh]                  ; 8b 96 23 f8
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
@@ -5483,10 +5483,10 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     mov ax, strict word 00001h                ; b8 01 00
     xchg ah, al                               ; 86 c4
     mov word [bp-01fh], ax                    ; 89 46 e1
-    movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
-    imul di, di, strict byte 0001ch           ; 6b ff 1c
-    mov es, [bp-012h]                         ; 8e 46 ee
-    add di, word [bp-014h]                    ; 03 7e ec
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    imul ax, ax, strict byte 0001ch           ; 6b c0 1c
+    les di, [bp-014h]                         ; c4 7e ec
+    add di, ax                                ; 01 c7
     movzx di, byte [es:di+022h]               ; 26 0f b6 7d 22
     add di, di                                ; 01 ff
     lea dx, [bp-00826h]                       ; 8d 96 da f7
@@ -5502,38 +5502,38 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     mov dx, strict word 0000ch                ; ba 0c 00
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    je short 03f3ah                           ; 74 06
+    je short 03f38h                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 0417dh                           ; e9 43 02
+    jmp near 0417eh                           ; e9 46 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
-    je short 03f47h                           ; 74 06
+    je short 03f45h                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 0417dh                           ; e9 36 02
+    jmp near 0417eh                           ; e9 39 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
-    je short 03f54h                           ; 74 06
+    je short 03f52h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 0417dh                           ; e9 29 02
+    jmp near 0417eh                           ; e9 2c 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
-    je short 03f61h                           ; 74 06
+    je short 03f5fh                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 0417dh                           ; e9 1c 02
+    jmp near 0417eh                           ; e9 1f 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
-    jne short 03f5bh                          ; 75 f3
+    jne short 03f59h                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
-    je short 03f75h                           ; 74 06
+    je short 03f73h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 0417dh                           ; e9 08 02
+    jmp near 0417eh                           ; e9 0b 02
     mov al, byte [bp-00805h]                  ; 8a 86 fb f7
     mov es, [bp-010h]                         ; 8e 46 f0
     mov byte [es:si+001h], al                 ; 26 88 44 01
     cmp byte [bp-00805h], 000h                ; 80 be fb f7 00
-    jne short 03f8eh                          ; 75 07
+    jne short 03f8ch                          ; 75 07
     mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
-    jmp short 03fa1h                          ; eb 13
+    jmp short 03f9fh                          ; eb 13
     cmp byte [bp-00805h], 004h                ; 80 be fb f7 04
-    jnc short 03f9ch                          ; 73 07
+    jnc short 03f9ah                          ; 73 07
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
-    jmp short 03fa1h                          ; eb 05
+    jmp short 03f9fh                          ; eb 05
     mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
     movzx di, byte [bp-00ch]                  ; 0f b6 7e f4
     mov ax, di                                ; 89 f8
@@ -5551,7 +5551,7 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     mov ax, word [bp-00804h]                  ; 8b 86 fc f7
     mov word [bp-016h], ax                    ; 89 46 ea
     test ax, ax                               ; 85 c0
-    jne short 03fcfh                          ; 75 05
+    jne short 03fcdh                          ; 75 05
     mov word [bp-016h], 007c0h                ; c7 46 ea c0 07
     mov ax, word [bp-016h]                    ; 8b 46 ea
     mov es, [bp-010h]                         ; 8e 46 f0
@@ -5560,11 +5560,11 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     mov di, word [bp-00800h]                  ; 8b be 00 f8
     mov word [es:si+00eh], di                 ; 26 89 7c 0e
     test di, di                               ; 85 ff
-    je short 03ff1h                           ; 74 06
+    je short 03fefh                           ; 74 06
     cmp di, 00400h                            ; 81 ff 00 04
-    jbe short 03ff7h                          ; 76 06
+    jbe short 03ff5h                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 0417dh                           ; e9 86 01
+    jmp near 0417eh                           ; e9 89 01
     mov ax, word [bp-007feh]                  ; 8b 86 02 f8
     mov dx, word [bp-007fch]                  ; 8b 96 04 f8
     mov word [es:si+008h], ax                 ; 26 89 44 08
@@ -5575,14 +5575,14 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     xchg dx, ax                               ; 92
     mov word [bp-024h], ax                    ; 89 46 dc
     mov word [bp-022h], dx                    ; 89 56 de
-    lea dx, [di-001h]                         ; 8d 55 ff
-    shr dx, 002h                              ; c1 ea 02
-    inc dx                                    ; 42
-    mov ax, dx                                ; 89 d0
+    lea cx, [di-001h]                         ; 8d 4d ff
+    shr cx, 002h                              ; c1 e9 02
+    inc cx                                    ; 41
+    mov ax, cx                                ; 89 c8
     xchg ah, al                               ; 86 c4
     mov word [bp-01fh], ax                    ; 89 46 e1
     les bx, [bp-014h]                         ; c4 5e ec
-    mov word [es:bx+00eh], dx                 ; 26 89 57 0e
+    mov word [es:bx+00eh], cx                 ; 26 89 4f 0e
     mov word [es:bx+010h], 00200h             ; 26 c7 47 10 00 02
     mov ax, di                                ; 89 f8
     sal ax, 009h                              ; c1 e0 09
@@ -5604,7 +5604,7 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     mov cx, strict word 00009h                ; b9 09 00
     sal ax, 1                                 ; d1 e0
     rcl di, 1                                 ; d1 d7
-    loop 04065h                               ; e2 fa
+    loop 04063h                               ; e2 fa
     push di                                   ; 57
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
@@ -5617,47 +5617,48 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     les bx, [bp-014h]                         ; c4 5e ec
     mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00
     test ax, ax                               ; 85 c0
-    je short 04095h                           ; 74 06
+    je short 04093h                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 0417dh                           ; e9 e8 00
+    jmp near 0417eh                           ; e9 eb 00
     mov es, [bp-010h]                         ; 8e 46 f0
     mov al, byte [es:si+001h]                 ; 26 8a 44 01
     cmp AL, strict byte 002h                  ; 3c 02
-    jc short 040adh                           ; 72 0d
-    jbe short 040c5h                          ; 76 23
+    jc short 040abh                           ; 72 0d
+    jbe short 040c3h                          ; 76 23
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 040dbh                           ; 74 35
+    je short 040d9h                           ; 74 35
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 040d0h                           ; 74 26
-    jmp near 04126h                           ; e9 79 00
+    je short 040ceh                           ; 74 26
+    jmp near 04127h                           ; e9 7c 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 04126h                          ; 75 75
+    jne short 04127h                          ; 75 78
     mov es, [bp-010h]                         ; 8e 46 f0
     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
     mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00
-    jmp short 04126h                          ; eb 61
+    jmp short 04127h                          ; eb 64
     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
-    jmp short 040bdh                          ; eb ed
+    jmp short 040bbh                          ; eb ed
     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
-    jmp short 040bdh                          ; eb e2
+    jmp short 040bbh                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 016b8h                               ; e8 d4 d5
+    call 016b8h                               ; e8 d6 d5
     and AL, strict byte 03fh                  ; 24 3f
     xor ah, ah                                ; 30 e4
     mov es, [bp-010h]                         ; 8e 46 f0
     mov word [es:si+014h], ax                 ; 26 89 44 14
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 016b8h                               ; e8 c0 d5
+    call 016b8h                               ; e8 c2 d5
     movzx bx, al                              ; 0f b6 d8
+    and bl, 0c0h                              ; 80 e3 c0
     sal bx, 002h                              ; c1 e3 02
     mov dx, 001c5h                            ; ba c5 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 016b8h                               ; e8 b1 d5
+    call 016b8h                               ; e8 b0 d5
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
     inc ax                                    ; 40
@@ -5665,36 +5666,36 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     mov word [es:si+012h], ax                 ; 26 89 44 12
     mov dx, 001c3h                            ; ba c3 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 016b8h                               ; e8 9c d5
+    call 016b8h                               ; e8 9b d5
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
     mov es, [bp-010h]                         ; 8e 46 f0
     mov word [es:si+010h], ax                 ; 26 89 44 10
     mov es, [bp-010h]                         ; 8e 46 f0
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 04164h                           ; 74 34
+    je short 04165h                           ; 74 34
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 0414dh                          ; 75 16
+    jne short 0414eh                          ; 75 16
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 78 d5
+    call 016b8h                               ; e8 77 d5
     or AL, strict byte 041h                   ; 0c 41
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    jmp short 04161h                          ; eb 14
+    jmp short 04162h                          ; eb 14
     mov dx, 00304h                            ; ba 04 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 016b8h                               ; e8 62 d5
+    call 016b8h                               ; e8 61 d5
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00304h                            ; ba 04 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 016c6h                               ; e8 62 d5
+    call 016c6h                               ; e8 61 d5
     mov es, [bp-010h]                         ; 8e 46 f0
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 04172h                           ; 74 04
+    je short 04173h                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
     mov es, [bp-010h]                         ; 8e 46 f0
     movzx ax, byte [es:si+002h]               ; 26 0f b6 44 02
@@ -5708,12 +5709,12 @@ cdrom_boot_:                                 ; 0xf3dca LB 0x416
     pop bp                                    ; 5d
     retn                                      ; c3
     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, 045h, 086h
-    db  042h, 0d0h, 042h, 0f8h, 042h, 0c5h, 042h, 0f8h, 042h, 0c5h, 042h, 0ceh, 044h, 0abh, 042h, 078h
-    db  045h, 078h, 045h, 0abh, 042h, 0abh, 042h, 0abh, 042h, 0abh, 042h, 0abh, 042h, 06fh, 045h, 0abh
-    db  042h, 078h, 045h, 078h, 045h, 078h, 045h, 078h, 045h, 078h, 045h, 078h, 045h, 078h, 045h, 078h
-    db  045h, 078h, 045h, 078h, 045h, 078h, 045h, 078h, 045h
-_int13_cdemu:                                ; 0xf41e0 LB 0x434
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 079h, 045h, 087h
+    db  042h, 0d1h, 042h, 0f9h, 042h, 0c6h, 042h, 0f9h, 042h, 0c6h, 042h, 0cfh, 044h, 0ach, 042h, 079h
+    db  045h, 079h, 045h, 0ach, 042h, 0ach, 042h, 0ach, 042h, 0ach, 042h, 0ach, 042h, 070h, 045h, 0ach
+    db  042h, 079h, 045h, 079h, 045h, 079h, 045h, 079h, 045h, 079h, 045h, 079h, 045h, 079h, 045h, 079h
+    db  045h, 079h, 045h, 079h, 045h, 079h, 045h, 079h, 045h
+_int13_cdemu:                                ; 0xf41e1 LB 0x434
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -5721,7 +5722,7 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     sub sp, strict byte 0002ah                ; 83 ec 2a
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 e3 d4
+    call 016d4h                               ; e8 e2 d4
     mov di, 00366h                            ; bf 66 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
@@ -5737,19 +5738,19 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 a6 d4
+    call 016c6h                               ; e8 a5 d4
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 04236h                           ; 74 0e
+    je short 04237h                           ; 74 0e
     movzx dx, byte [es:di+002h]               ; 26 0f b6 55 02
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp dx, ax                                ; 39 c2
-    je short 0425fh                           ; 74 29
+    je short 04260h                           ; 74 29
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 58 d7
+    call 01999h                               ; e8 57 d7
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -5759,21 +5760,21 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     push 0034ch                               ; 68 4c 03
     push 00358h                               ; 68 58 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 81 d7
+    call 019dah                               ; e8 80 d7
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04598h                           ; e9 39 03
+    jmp near 04599h                           ; e9 39 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe near 04578h                          ; 0f 87 0c 03
+    jnbe near 04579h                          ; 0f 87 0c 03
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 04187h                            ; bf 87 41
+    mov di, 04188h                            ; bf 88 41
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+041a4h]               ; 2e 8b 85 a4 41
+    mov ax, word [cs:di+041a5h]               ; 2e 8b 85 a5 41
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
@@ -5784,14 +5785,14 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     movzx bx, byte [es:bx+022h]               ; 26 0f b6 5f 22
     add bx, bx                                ; 01 db
     cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00
-    je near 042abh                            ; 0f 84 08 00
+    je near 042ach                            ; 0f 84 08 00
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     call word [word bx+00076h]                ; ff 97 76 00
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 0c d4
+    call 016c6h                               ; e8 0b d4
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -5801,10 +5802,10 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 045a0h                           ; e9 d0 02
+    jmp near 045a1h                           ; e9 d0 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 df d3
+    call 016b8h                               ; e8 de d3
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
     sal ax, 008h                              ; c1 e0 08
@@ -5813,10 +5814,10 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 d5 d3
+    call 016c6h                               ; e8 d4 d3
     test cl, cl                               ; 84 c9
-    je short 042afh                           ; 74 ba
-    jmp near 045b4h                           ; e9 bc 02
+    je short 042b0h                           ; 74 ba
+    jmp near 045b5h                           ; e9 bc 02
     mov es, [bp-008h]                         ; 8e 46 f8
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
     mov dx, word [es:si+012h]                 ; 26 8b 54 12
@@ -5840,19 +5841,19 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     xor ch, ch                                ; 30 ed
     mov word [bp-00ah], cx                    ; 89 4e f6
     test cx, cx                               ; 85 c9
-    jne short 04345h                          ; 75 03
-    jmp near 042abh                           ; e9 66 ff
+    jne short 04346h                          ; 75 03
+    jmp near 042ach                           ; e9 66 ff
     cmp di, word [bp-010h]                    ; 3b 7e f0
-    jc near 04598h                            ; 0f 82 4c 02
+    jc near 04599h                            ; 0f 82 4c 02
     cmp ax, dx                                ; 39 d0
-    jnc near 04598h                           ; 0f 83 46 02
+    jnc near 04599h                           ; 0f 83 46 02
     cmp si, bx                                ; 39 de
-    jnc near 04598h                           ; 0f 83 40 02
+    jnc near 04599h                           ; 0f 83 40 02
     mov dx, word [bp+016h]                    ; 8b 56 16
     shr dx, 008h                              ; c1 ea 08
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jne short 04366h                          ; 75 03
-    jmp near 042abh                           ; e9 45 ff
+    jne short 04367h                          ; 75 03
+    jmp near 042ach                           ; e9 45 ff
     mov dx, word [bp+010h]                    ; 8b 56 10
     shr dx, 004h                              ; c1 ea 04
     mov cx, word [bp+006h]                    ; 8b 4e 06
@@ -5863,13 +5864,13 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     mov word [bp-01ch], dx                    ; 89 56 e4
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 2c 5b
+    call 09eb0h                               ; e8 2b 5b
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
     adc dx, bx                                ; 11 da
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 1f 5b
+    call 09eb0h                               ; e8 1e 5b
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-010h]                    ; 8b 46 f0
     dec ax                                    ; 48
@@ -5904,7 +5905,7 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     mov cx, strict word 0000ch                ; b9 0c 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 09f50h                               ; e8 68 5b
+    call 09f50h                               ; e8 67 5b
     mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
     add ax, si                                ; 01 f0
@@ -5952,7 +5953,7 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 04468h                               ; e2 fa
+    loop 04469h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
     push ax                                   ; 50
@@ -5967,11 +5968,11 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     db  066h, 026h, 0c7h, 047h, 01eh, 000h, 000h, 000h, 000h
     ; mov dword [es:bx+01eh], strict dword 000000000h ; 66 26 c7 47 1e 00 00 00 00
     test al, al                               ; 84 c0
-    je near 042abh                            ; 0f 84 13 fe
+    je near 042ach                            ; 0f 84 13 fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 f6 d4
+    call 01999h                               ; e8 f5 d4
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -5980,14 +5981,14 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     push 0034ch                               ; 68 4c 03
     push 0038eh                               ; 68 8e 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 21 d5
+    call 019dah                               ; e8 20 d5
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 002h                               ; 80 cc 02
     mov word [bp+016h], ax                    ; 89 46 16
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 045a3h                           ; e9 d5 00
+    jmp near 045a4h                           ; e9 d5 00
     mov es, [bp-008h]                         ; 8e 46 f8
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
     mov dx, word [es:si+012h]                 ; 26 8b 54 12
@@ -6026,40 +6027,40 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     mov dl, byte [es:si+001h]                 ; 26 8a 54 01
     mov word [bp+010h], ax                    ; 89 46 10
     cmp dl, 003h                              ; 80 fa 03
-    je short 04552h                           ; 74 1a
+    je short 04553h                           ; 74 1a
     cmp dl, 002h                              ; 80 fa 02
-    je short 0454eh                           ; 74 11
+    je short 0454fh                           ; 74 11
     cmp dl, 001h                              ; 80 fa 01
-    jne short 04556h                          ; 75 14
+    jne short 04557h                          ; 75 14
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor al, al                                ; 30 c0
     or AL, strict byte 002h                   ; 0c 02
     mov word [bp+010h], ax                    ; 89 46 10
-    jmp short 04556h                          ; eb 08
+    jmp short 04557h                          ; eb 08
     or AL, strict byte 004h                   ; 0c 04
-    jmp short 04549h                          ; eb f7
+    jmp short 0454ah                          ; eb f7
     or AL, strict byte 005h                   ; 0c 05
-    jmp short 04549h                          ; eb f3
+    jmp short 0454ah                          ; eb f3
     mov es, [bp-008h]                         ; 8e 46 f8
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jnc near 042abh                           ; 0f 83 49 fd
+    jnc near 042ach                           ; 0f 83 49 fd
     mov word [bp+008h], 0efc7h                ; c7 46 08 c7 ef
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
-    jmp near 042abh                           ; e9 3c fd
+    jmp near 042ach                           ; e9 3c fd
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 042afh                           ; e9 37 fd
+    jmp near 042b0h                           ; e9 37 fd
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 16 d4
+    call 01999h                               ; e8 15 d4
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0034ch                               ; 68 4c 03
     push 003afh                               ; 68 af 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 45 d4
+    call 019dah                               ; e8 44 d4
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -6070,16 +6071,16 @@ _int13_cdemu:                                ; 0xf41e0 LB 0x434
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 12 d1
+    call 016c6h                               ; e8 11 d1
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 042beh                           ; e9 03 fd
+    jmp near 042bfh                           ; e9 03 fd
     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, 059h, 04bh, 0d5h
-    db  048h, 0c1h, 046h, 059h, 04bh, 0b6h, 046h, 059h, 04bh, 0b6h, 046h, 059h, 04bh, 0d5h, 048h, 059h
-    db  04bh, 059h, 04bh, 0d5h, 048h, 0d5h, 048h, 0d5h, 048h, 0d5h, 048h, 0d5h, 048h, 0ebh, 046h, 0d5h
-    db  048h, 059h, 04bh, 0f4h, 046h, 007h, 047h, 0b6h, 046h, 007h, 047h, 035h, 048h, 0efh, 048h, 007h
-    db  047h, 016h, 049h, 012h, 04bh, 01ah, 04bh, 059h, 04bh
-_int13_cdrom:                                ; 0xf4614 LB 0x562
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 05ah, 04bh, 0d6h
+    db  048h, 0c2h, 046h, 05ah, 04bh, 0b7h, 046h, 05ah, 04bh, 0b7h, 046h, 05ah, 04bh, 0d6h, 048h, 05ah
+    db  04bh, 05ah, 04bh, 0d6h, 048h, 0d6h, 048h, 0d6h, 048h, 0d6h, 048h, 0d6h, 048h, 0ech, 046h, 0d6h
+    db  048h, 05ah, 04bh, 0f5h, 046h, 008h, 047h, 0b7h, 046h, 008h, 047h, 036h, 048h, 0f0h, 048h, 008h
+    db  047h, 017h, 049h, 013h, 04bh, 01bh, 04bh, 05ah, 04bh
+_int13_cdrom:                                ; 0xf4615 LB 0x562
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6087,20 +6088,20 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     sub sp, strict byte 00028h                ; 83 ec 28
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 af d0
+    call 016d4h                               ; e8 ae d0
     mov word [bp-01ah], ax                    ; 89 46 e6
     mov si, 00122h                            ; be 22 01
     mov word [bp-00ch], ax                    ; 89 46 f4
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 8d d0
+    call 016c6h                               ; e8 8c d0
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 04648h                           ; 72 05
+    jc short 04649h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 04666h                           ; 72 1e
+    jc short 04667h                           ; 72 1e
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6110,9 +6111,9 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     push 003dfh                               ; 68 df 03
     push 003ebh                               ; 68 eb 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 7a d3
+    call 019dah                               ; e8 79 d3
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04b36h                           ; e9 d0 04
+    jmp near 04b37h                           ; e9 d0 04
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     mov es, [bp-00ch]                         ; 8e 46 f4
@@ -6121,36 +6122,36 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov dl, byte [es:bx+00114h]               ; 26 8a 97 14 01
     mov byte [bp-008h], dl                    ; 88 56 f8
     cmp dl, 010h                              ; 80 fa 10
-    jc short 0468fh                           ; 72 10
+    jc short 04690h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 003dfh                               ; 68 df 03
     push 00416h                               ; 68 16 04
-    jmp short 0465bh                          ; eb cc
+    jmp short 0465ch                          ; eb cc
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe near 04b59h                          ; 0f 87 bd 04
+    jnbe near 04b5ah                          ; 0f 87 bd 04
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 045bbh                            ; bf bb 45
+    mov di, 045bch                            ; bf bc 45
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+045d8h]               ; 2e 8b 85 d8 45
+    mov ax, word [cs:di+045d9h]               ; 2e 8b 85 d9 45
     mov bx, word [bp+018h]                    ; 8b 5e 18
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 04b3eh                           ; e9 7d 04
+    jmp near 04b3fh                           ; e9 7d 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 ee cf
+    call 016b8h                               ; e8 ed cf
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
     sal ax, 008h                              ; c1 e0 08
@@ -6159,18 +6160,18 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 e4 cf
+    call 016c6h                               ; e8 e3 cf
     test cl, cl                               ; 84 c9
-    je near 048d9h                            ; 0f 84 f1 01
-    jmp near 04b52h                           ; e9 67 04
+    je near 048dah                            ; 0f 84 f1 01
+    jmp near 04b53h                           ; e9 67 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 04b41h                           ; e9 4d 04
+    jmp near 04b42h                           ; e9 4d 04
     mov word [bp+012h], 0aa55h                ; c7 46 12 55 aa
     or bh, 030h                               ; 80 cf 30
     mov word [bp+018h], bx                    ; 89 5e 18
     mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
-    jmp near 048d9h                           ; e9 d2 01
+    jmp near 048dah                           ; e9 d2 01
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [bp-014h], bx                    ; 89 5e ec
@@ -6185,16 +6186,16 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov word [bp-018h], ax                    ; 89 46 e8
     mov di, word [es:bx+00eh]                 ; 26 8b 7f 0e
     or di, ax                                 ; 09 c7
-    je short 0474fh                           ; 74 18
+    je short 04750h                           ; 74 18
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 003dfh                               ; 68 df 03
     push 00448h                               ; 68 48 04
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 91 d2
+    call 019dah                               ; e8 90 d2
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 04b36h                           ; e9 e7 03
+    jmp near 04b37h                           ; e9 e7 03
     les bx, [bp-014h]                         ; c4 5e ec
     mov ax, word [es:bx+008h]                 ; 26 8b 47 08
     mov word [bp-018h], ax                    ; 89 46 e8
@@ -6204,14 +6205,14 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     shr ax, 008h                              ; c1 e8 08
     mov word [bp-016h], ax                    ; 89 46 ea
     cmp ax, strict word 00044h                ; 3d 44 00
-    je near 048d5h                            ; 0f 84 66 01
+    je near 048d6h                            ; 0f 84 66 01
     cmp ax, strict word 00047h                ; 3d 47 00
-    je near 048d5h                            ; 0f 84 5f 01
+    je near 048d6h                            ; 0f 84 5f 01
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ch]                         ; 8d 46 d4
-    call 09f50h                               ; e8 cd 57
+    call 09f50h                               ; e8 cc 57
     mov word [bp-02ch], strict word 00028h    ; c7 46 d4 28 00
     mov ax, word [bp-018h]                    ; 8b 46 e8
     mov dx, di                                ; 89 fa
@@ -6239,7 +6240,7 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov cx, strict word 0000bh                ; b9 0b 00
     sal ax, 1                                 ; d1 e0
     rcl bx, 1                                 ; d1 d3
-    loop 047cdh                               ; e2 fa
+    loop 047ceh                               ; e2 fa
     push bx                                   ; 53
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
@@ -6255,29 +6256,29 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov cx, strict word 0000bh                ; b9 0b 00
     shr di, 1                                 ; d1 ef
     rcr ax, 1                                 ; d1 d8
-    loop 047f7h                               ; e2 fa
+    loop 047f8h                               ; e2 fa
     les bx, [bp-014h]                         ; c4 5e ec
     mov word [es:bx+002h], ax                 ; 26 89 47 02
     test dl, dl                               ; 84 d2
-    je near 048d5h                            ; 0f 84 cb 00
+    je near 048d6h                            ; 0f 84 cb 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 84 d1
+    call 01999h                               ; e8 83 d1
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
     push word [bp-016h]                       ; ff 76 ea
     push 003dfh                               ; 68 df 03
     push 00471h                               ; 68 71 04
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 b3 d1
+    call 019dah                               ; e8 b2 d1
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 04b3eh                           ; e9 09 03
+    jmp near 04b3fh                           ; e9 09 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe near 04b36h                          ; 0f 87 fa 02
+    jnbe near 04b37h                          ; 0f 87 fa 02
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-00ch]                         ; 8e 46 f4
@@ -6285,20 +6286,20 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     add di, ax                                ; 01 c7
     mov al, byte [es:di+025h]                 ; 26 8a 45 25
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 048c6h                           ; 74 73
+    je short 048c7h                           ; 74 73
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 04893h                           ; 74 3b
+    je short 04894h                           ; 74 3b
     test bx, bx                               ; 85 db
-    jne near 048d5h                           ; 0f 85 77 00
+    jne near 048d6h                           ; 0f 85 77 00
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 04874h                          ; 75 12
+    jne short 04875h                          ; 75 12
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b4h                               ; 80 cc b4
     mov word [bp+018h], ax                    ; 89 46 18
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 04b3eh                           ; e9 ca 02
+    jmp near 04b3fh                           ; e9 ca 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     db  0feh, 0c0h
@@ -6310,13 +6311,13 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 048d5h                           ; e9 42 00
+    jmp near 048d6h                           ; e9 42 00
     test al, al                               ; 84 c0
-    jne short 048a3h                          ; 75 0c
+    jne short 048a4h                          ; 75 0c
     or bh, 0b0h                               ; 80 cf b0
     mov word [bp+018h], bx                    ; 89 5e 18
     mov byte [bp+018h], al                    ; 88 46 18
-    jmp near 04b41h                           ; e9 9e 02
+    jmp near 04b42h                           ; e9 9e 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     db  0feh, 0c8h
@@ -6331,7 +6332,7 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor al, al                                ; 30 c0
     or ax, dx                                 ; 09 d0
-    jmp short 0488dh                          ; eb c7
+    jmp short 0488eh                          ; eb c7
     test al, al                               ; 84 c0
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
@@ -6343,7 +6344,7 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 e2 cd
+    call 016c6h                               ; e8 e1 cd
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6356,14 +6357,14 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     add si, ax                                ; 01 c6
     mov al, byte [es:si+025h]                 ; 26 8a 44 25
     test al, al                               ; 84 c0
-    je short 04909h                           ; 74 06
+    je short 0490ah                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 046eeh                           ; e9 e5 fd
-    je short 048d5h                           ; 74 ca
+    jmp near 046efh                           ; e9 e5 fd
+    je short 048d6h                           ; 74 ca
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 04b3eh                           ; e9 28 02
+    jmp near 04b3fh                           ; e9 28 02
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
     mov bx, dx                                ; 89 d3
@@ -6373,8 +6374,8 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov ax, word [es:di]                      ; 26 8b 05
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 04b36h                            ; 0f 82 04 02
-    jc short 04983h                           ; 72 4f
+    jc near 04b37h                            ; 0f 82 04 02
+    jc short 04984h                           ; 72 4f
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-00ch]                         ; 8e 46 f4
@@ -6397,7 +6398,7 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     db  066h, 026h, 0c7h, 045h, 014h, 0ffh, 0ffh, 0ffh, 0ffh
     ; mov dword [es:di+014h], strict dword 0ffffffffh ; 66 26 c7 45 14 ff ff ff ff
     cmp word [bp-00eh], strict byte 0001eh    ; 83 7e f2 1e
-    jc near 04a5ah                            ; 0f 82 cf 00
+    jc near 04a5bh                            ; 0f 82 cf 00
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:bx], strict word 0001eh      ; 26 c7 07 1e 00
     mov ax, word [bp-01ah]                    ; 8b 46 e6
@@ -6449,22 +6450,22 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov byte [es:si+00242h], 011h             ; 26 c6 84 42 02 11
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
-    jmp short 04a3dh                          ; eb 05
+    jmp short 04a3eh                          ; eb 05
     cmp ch, 00fh                              ; 80 fd 0f
-    jnc short 04a50h                          ; 73 13
+    jnc short 04a51h                          ; 73 13
     movzx dx, ch                              ; 0f b6 d5
     add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 016b8h                               ; e8 6e cc
+    call 016b8h                               ; e8 6d cc
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 04a38h                          ; eb e8
+    jmp short 04a39h                          ; eb e8
     neg cl                                    ; f6 d9
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov byte [es:si+00243h], cl               ; 26 88 8c 43 02
     cmp word [bp-00eh], strict byte 00042h    ; 83 7e f2 42
-    jc near 048d5h                            ; 0f 82 73 fe
+    jc near 048d6h                            ; 0f 82 73 fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -6482,7 +6483,7 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     ; mov dword [es:bx+01eh], strict dword 00024beddh ; 66 26 c7 47 1e dd be 24 00
     mov word [es:bx+022h], strict word 00000h ; 26 c7 47 22 00 00
     test al, al                               ; 84 c0
-    jne short 04aa3h                          ; 75 09
+    jne short 04aa4h                          ; 75 09
     db  066h, 026h, 0c7h, 047h, 024h, 049h, 053h, 041h, 020h
     ; mov dword [es:bx+024h], strict dword 020415349h ; 66 26 c7 47 24 49 53 41 20
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6491,7 +6492,7 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     db  066h, 026h, 0c7h, 047h, 02ch, 020h, 020h, 020h, 020h
     ; mov dword [es:bx+02ch], strict dword 020202020h ; 66 26 c7 47 2c 20 20 20 20
     test al, al                               ; 84 c0
-    jne short 04acfh                          ; 75 13
+    jne short 04ad0h                          ; 75 13
     mov word [es:bx+030h], dx                 ; 26 89 57 30
     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
@@ -6506,32 +6507,32 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     mov word [es:bx+03eh], strict word 00000h ; 26 c7 47 3e 00 00
     xor al, al                                ; 30 c0
     mov AH, strict byte 01eh                  ; b4 1e
-    jmp short 04af7h                          ; eb 05
+    jmp short 04af8h                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04b06h                          ; 73 0f
+    jnc short 04b07h                          ; 73 0f
     movzx si, ah                              ; 0f b6 f4
     mov es, [bp-00ah]                         ; 8e 46 f6
     add si, bx                                ; 01 de
     add al, byte [es:si]                      ; 26 02 04
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 04af2h                          ; eb ec
+    jmp short 04af3h                          ; eb ec
     neg al                                    ; f6 d8
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:bx+041h], al                 ; 26 88 47 41
-    jmp near 048d5h                           ; e9 c3 fd
+    jmp near 048d6h                           ; e9 c3 fd
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 04b52h                          ; eb 38
+    jmp short 04b53h                          ; eb 38
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je near 048d5h                            ; 0f 84 b4 fd
+    je near 048d6h                            ; 0f 84 b4 fd
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 04b36h                           ; 72 10
-    jbe near 048d5h                           ; 0f 86 ab fd
+    jc short 04b37h                           ; 72 10
+    jbe near 048d6h                           ; 0f 86 ab fd
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 04b36h                           ; 72 07
+    jc short 04b37h                           ; 72 07
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe near 048d5h                           ; 0f 86 9f fd
+    jbe near 048d6h                           ; 0f 86 9f fd
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -6541,55 +6542,55 @@ _int13_cdrom:                                ; 0xf4614 LB 0x562
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 74 cb
+    call 016c6h                               ; e8 73 cb
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp near 048e8h                           ; e9 8f fd
+    jmp near 048e9h                           ; e9 8f fd
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 35 ce
+    call 01999h                               ; e8 34 ce
     mov ax, word [bp+018h]                    ; 8b 46 18
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 003dfh                               ; 68 df 03
     push 00333h                               ; 68 33 03
     push strict byte 00004h                   ; 6a 04
-    jmp near 04746h                           ; e9 d0 fb
-print_boot_device_:                          ; 0xf4b76 LB 0x4b
+    jmp near 04747h                           ; e9 d0 fb
+print_boot_device_:                          ; 0xf4b77 LB 0x4b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 04b83h                           ; 74 05
+    je short 04b84h                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 04b9dh                          ; eb 1a
+    jmp short 04b9eh                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 04b8ch                           ; 74 05
+    je short 04b8dh                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 04b9dh                          ; eb 11
+    jmp short 04b9eh                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04b95h                          ; 75 04
+    jne short 04b96h                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 04b9dh                          ; eb 08
+    jmp short 04b9eh                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 04bbbh                           ; 74 21
+    je short 04bbch                           ; 74 21
     mov dx, strict word 00001h                ; ba 01 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 f1 cd
+    call 01999h                               ; e8 f0 cd
     imul dx, dx, strict byte 0000ah           ; 6b d2 0a
     add dx, 00dc6h                            ; 81 c2 c6 0d
     push dx                                   ; 52
     push 00494h                               ; 68 94 04
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 22 ce
+    call 019dah                               ; e8 21 ce
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-print_boot_failure_:                         ; 0xf4bc1 LB 0x93
+print_boot_failure_:                         ; 0xf4bc2 LB 0x93
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6598,59 +6599,59 @@ print_boot_failure_:                         ; 0xf4bc1 LB 0x93
     and ah, 07fh                              ; 80 e4 7f
     movzx si, ah                              ; 0f b6 f4
     test al, al                               ; 84 c0
-    je short 04beeh                           ; 74 1b
+    je short 04befh                           ; 74 1b
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 bb cd
+    call 01999h                               ; e8 ba cd
     push 00ddah                               ; 68 da 0d
     push 004a8h                               ; 68 a8 04
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 f1 cd
+    call 019dah                               ; e8 f0 cd
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 04c32h                          ; eb 44
+    jmp short 04c33h                          ; eb 44
     test dl, dl                               ; 84 d2
-    je short 04c02h                           ; 74 10
+    je short 04c03h                           ; 74 10
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 9c cd
+    call 01999h                               ; e8 9b cd
     push 00de4h                               ; 68 e4 0d
-    jmp short 04be1h                          ; eb df
+    jmp short 04be2h                          ; eb df
     test bl, 080h                             ; f6 c3 80
-    je short 04c18h                           ; 74 11
+    je short 04c19h                           ; 74 11
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 87 cd
+    call 01999h                               ; e8 86 cd
     push si                                   ; 56
     push 00dd0h                               ; 68 d0 0d
-    jmp short 04c27h                          ; eb 0f
+    jmp short 04c28h                          ; eb 0f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 76 cd
+    call 01999h                               ; e8 75 cd
     push si                                   ; 56
     push 00dc6h                               ; 68 c6 0d
     push 004bdh                               ; 68 bd 04
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 ab cd
+    call 019dah                               ; e8 aa cd
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04c4ch                          ; 75 14
+    jne short 04c4dh                          ; 75 14
     test dh, dh                               ; 84 f6
-    jne short 04c41h                          ; 75 05
+    jne short 04c42h                          ; 75 05
     push 004d5h                               ; 68 d5 04
-    jmp short 04c44h                          ; eb 03
+    jmp short 04c45h                          ; eb 03
     push 004ffh                               ; 68 ff 04
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 91 cd
+    call 019dah                               ; e8 90 cd
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-print_cdromboot_failure_:                    ; 0xf4c54 LB 0x27
+print_cdromboot_failure_:                    ; 0xf4c55 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -6660,11 +6661,11 @@ print_cdromboot_failure_:                    ; 0xf4c54 LB 0x27
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 32 cd
+    call 01999h                               ; e8 31 cd
     push dx                                   ; 52
     push 00534h                               ; 68 34 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 6a cd
+    call 019dah                               ; e8 69 cd
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -6672,7 +6673,7 @@ print_cdromboot_failure_:                    ; 0xf4c54 LB 0x27
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf4c7b LB 0x256
+_int19_function:                             ; 0xf4c7c LB 0x256
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6680,53 +6681,53 @@ _int19_function:                             ; 0xf4c7b LB 0x256
     sub sp, strict byte 0000eh                ; 83 ec 0e
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 48 ca
+    call 016d4h                               ; e8 47 ca
     mov bx, ax                                ; 89 c3
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov ax, strict word 0003dh                ; b8 3d 00
-    call 01714h                               ; e8 79 ca
+    call 01714h                               ; e8 78 ca
     movzx si, al                              ; 0f b6 f0
     mov ax, strict word 00038h                ; b8 38 00
-    call 01714h                               ; e8 70 ca
+    call 01714h                               ; e8 6f ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sal ax, 004h                              ; c1 e0 04
     or si, ax                                 ; 09 c6
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 01714h                               ; e8 61 ca
+    call 01714h                               ; e8 60 ca
     and AL, strict byte 00fh                  ; 24 0f
     xor ah, ah                                ; 30 e4
     sal ax, 00ch                              ; c1 e0 0c
     or si, ax                                 ; 09 c6
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 016b8h                               ; e8 f4 c9
+    call 016b8h                               ; e8 f3 c9
     test al, al                               ; 84 c0
-    je short 04cd3h                           ; 74 0b
+    je short 04cd4h                           ; 74 0b
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 016b8h                               ; e8 e8 c9
+    call 016b8h                               ; e8 e7 c9
     movzx si, al                              ; 0f b6 f0
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04ce9h                          ; 75 10
+    jne short 04ceah                          ; 75 10
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 01714h                               ; e8 35 ca
+    call 01714h                               ; e8 34 ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
-    call 07d48h                               ; e8 5f 30
+    call 07d49h                               ; e8 5f 30
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04cf2h                          ; 75 03
+    jne short 04cf3h                          ; 75 03
     shr si, 004h                              ; c1 ee 04
     cmp byte [bp+004h], 003h                  ; 80 7e 04 03
-    jne short 04cfbh                          ; 75 03
+    jne short 04cfch                          ; 75 03
     shr si, 008h                              ; c1 ee 08
     cmp byte [bp+004h], 004h                  ; 80 7e 04 04
-    jne short 04d04h                          ; 75 03
+    jne short 04d05h                          ; 75 03
     shr si, 00ch                              ; c1 ee 0c
     cmp si, strict byte 00010h                ; 83 fe 10
-    jnc short 04d0dh                          ; 73 04
+    jnc short 04d0eh                          ; 73 04
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -6735,105 +6736,105 @@ _int19_function:                             ; 0xf4c7b LB 0x256
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 76 cc
+    call 01999h                               ; e8 75 cc
     push si                                   ; 56
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     push ax                                   ; 50
     push 00554h                               ; 68 54 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 a9 cc
+    call 019dah                               ; e8 a8 cc
     add sp, strict byte 00008h                ; 83 c4 08
     and si, strict byte 0000fh                ; 83 e6 0f
     cmp si, strict byte 00002h                ; 83 fe 02
-    jc short 04d4ah                           ; 72 0e
-    jbe short 04d59h                          ; 76 1b
+    jc short 04d4bh                           ; 72 0e
+    jbe short 04d5ah                          ; 76 1b
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 04d77h                           ; 74 34
+    je short 04d78h                           ; 74 34
     cmp si, strict byte 00003h                ; 83 fe 03
-    je short 04d6dh                           ; 74 25
-    jmp short 04da4h                          ; eb 5a
+    je short 04d6eh                           ; 74 25
+    jmp short 04da5h                          ; eb 5a
     cmp si, strict byte 00001h                ; 83 fe 01
-    jne short 04da4h                          ; 75 55
+    jne short 04da5h                          ; 75 55
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00ah], al                    ; 88 46 f6
-    jmp short 04dbch                          ; eb 63
+    jmp short 04dbdh                          ; eb 63
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 016b8h                               ; e8 56 c9
+    call 016b8h                               ; e8 55 c9
     add AL, strict byte 080h                  ; 04 80
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00ah], 000h                  ; c6 46 f6 00
-    jmp short 04dbch                          ; eb 4f
+    jmp short 04dbdh                          ; eb 4f
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
-    jmp short 04d81h                          ; eb 0a
+    jmp short 04d82h                          ; eb 0a
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 04dbch                           ; 74 3b
-    call 03dcah                               ; e8 46 f0
+    je short 04dbdh                           ; 74 3b
+    call 03dcah                               ; e8 45 f0
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 04dabh                           ; 74 21
-    call 04c54h                               ; e8 c7 fe
+    je short 04dach                           ; 74 21
+    call 04c55h                               ; e8 c7 fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     mov cx, strict word 00001h                ; b9 01 00
-    call 04bc1h                               ; e8 1d fe
+    call 04bc2h                               ; e8 1d fe
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 04ecah                           ; e9 1f 01
+    jmp near 04ecbh                           ; e9 1f 01
     mov dx, 00372h                            ; ba 72 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 016d4h                               ; e8 20 c9
+    call 016d4h                               ; e8 1f c9
     mov di, ax                                ; 89 c7
     shr bx, 008h                              ; c1 eb 08
     mov byte [bp-006h], bl                    ; 88 5e fa
     cmp byte [bp-00ch], 001h                  ; 80 7e f4 01
-    jne near 04e38h                           ; 0f 85 74 00
+    jne near 04e39h                           ; 0f 85 74 00
     xor si, si                                ; 31 f6
     mov ax, 0e200h                            ; b8 00 e2
     mov es, ax                                ; 8e c0
     cmp word [es:si], 0aa55h                  ; 26 81 3c 55 aa
-    jne short 04d8dh                          ; 75 bb
+    jne short 04d8eh                          ; 75 bb
     mov cx, ax                                ; 89 c1
     mov si, word [es:si+01ah]                 ; 26 8b 74 1a
     cmp word [es:si+002h], 0506eh             ; 26 81 7c 02 6e 50
-    jne short 04d8dh                          ; 75 ad
+    jne short 04d8eh                          ; 75 ad
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04d8dh                          ; 75 a6
+    jne short 04d8eh                          ; 75 a6
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
     mov dx, word [es:di]                      ; 26 8b 15
     mov ax, word [es:di+002h]                 ; 26 8b 45 02
     cmp ax, 06568h                            ; 3d 68 65
-    jne short 04e16h                          ; 75 1f
+    jne short 04e17h                          ; 75 1f
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04e16h                          ; 75 19
+    jne short 04e17h                          ; 75 19
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 04b76h                               ; e8 6a fd
+    call 04b77h                               ; e8 6a fd
     mov word [bp-012h], strict word 00006h    ; c7 46 ee 06 00
     mov word [bp-010h], cx                    ; 89 4e f0
-    jmp short 04e32h                          ; eb 1c
+    jmp short 04e33h                          ; eb 1c
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 04b76h                               ; e8 51 fd
+    call 04b77h                               ; e8 51 fd
     sti                                       ; fb
     mov word [bp-010h], cx                    ; 89 4e f0
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
     mov word [bp-012h], ax                    ; 89 46 ee
     call far [bp-012h]                        ; ff 5e ee
-    jmp near 04d8dh                           ; e9 55 ff
+    jmp near 04d8eh                           ; e9 55 ff
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04e64h                          ; 75 26
+    jne short 04e65h                          ; 75 26
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 04e64h                          ; 75 20
+    jne short 04e65h                          ; 75 20
     mov di, 007c0h                            ; bf c0 07
     mov es, di                                ; 8e c7
     mov dl, byte [bp-006h]                    ; 8a 56 fa
@@ -6846,40 +6847,40 @@ _int19_function:                             ; 0xf4c7b LB 0x256
     mov ax, strict word 00000h                ; b8 00 00
     sbb ax, strict byte 00000h                ; 83 d8 00
     test ax, ax                               ; 85 c0
-    jne near 04d8dh                           ; 0f 85 29 ff
+    jne near 04d8eh                           ; 0f 85 29 ff
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
     db  00fh, 094h, 0c1h
     ; sete cl                                   ; 0f 94 c1
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 04e73h                           ; 74 02
+    je short 04e74h                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     xor dx, dx                                ; 31 d2
     mov ax, di                                ; 89 f8
-    call 016d4h                               ; e8 5a c8
+    call 016d4h                               ; e8 59 c8
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, di                                ; 89 f8
-    call 016d4h                               ; e8 50 c8
+    call 016d4h                               ; e8 4f c8
     cmp bx, ax                                ; 39 c3
-    je short 04e99h                           ; 74 11
+    je short 04e9ah                           ; 74 11
     test cl, cl                               ; 84 c9
-    jne short 04eafh                          ; 75 23
+    jne short 04eb0h                          ; 75 23
     mov dx, 001feh                            ; ba fe 01
     mov ax, di                                ; 89 f8
-    call 016d4h                               ; e8 40 c8
+    call 016d4h                               ; e8 3f c8
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04eafh                           ; 74 16
+    je short 04eb0h                           ; 74 16
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     xor cx, cx                                ; 31 c9
-    jmp near 04da1h                           ; e9 f2 fe
+    jmp near 04da2h                           ; e9 f2 fe
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 04b76h                               ; e8 b8 fc
+    call 04b77h                               ; e8 b8 fc
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
@@ -6890,18 +6891,18 @@ _int19_function:                             ; 0xf4c7b LB 0x256
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4ed1 LB 0x13
+keyboard_panic_:                             ; 0xf4ed2 LB 0x13
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push ax                                   ; 50
     push 00574h                               ; 68 74 05
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 fd ca
+    call 019dah                               ; e8 fc ca
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4ee4 LB 0x26a
+_keyboard_init:                              ; 0xf4ee5 LB 0x26a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov AL, strict byte 0aah                  ; b0 aa
@@ -6913,44 +6914,44 @@ _keyboard_init:                              ; 0xf4ee4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04f07h                           ; 74 0d
+    je short 04f08h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f07h                          ; 76 08
+    jbe short 04f08h                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ef0h                          ; eb e9
+    jmp short 04ef1h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f10h                          ; 75 05
+    jne short 04f11h                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04ed1h                               ; e8 c1 ff
+    call 04ed2h                               ; e8 c1 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04f2ah                          ; 75 0d
+    jne short 04f2bh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f2ah                          ; 76 08
+    jbe short 04f2bh                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f13h                          ; eb e9
+    jmp short 04f14h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f34h                          ; 75 06
+    jne short 04f35h                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04ed1h                               ; e8 9d ff
+    call 04ed2h                               ; e8 9d ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, strict word 00055h                ; 3d 55 00
-    je short 04f45h                           ; 74 06
+    je short 04f46h                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04ed1h                               ; e8 8c ff
+    call 04ed2h                               ; e8 8c ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -6960,44 +6961,44 @@ _keyboard_init:                              ; 0xf4ee4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04f65h                           ; 74 0d
+    je short 04f66h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f65h                          ; 76 08
+    jbe short 04f66h                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f4eh                          ; eb e9
+    jmp short 04f4fh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f6fh                          ; 75 06
+    jne short 04f70h                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04ed1h                               ; e8 62 ff
+    call 04ed2h                               ; e8 62 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04f89h                          ; 75 0d
+    jne short 04f8ah                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f89h                          ; 76 08
+    jbe short 04f8ah                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f72h                          ; eb e9
+    jmp short 04f73h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f93h                          ; 75 06
+    jne short 04f94h                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04ed1h                               ; e8 3e ff
+    call 04ed2h                               ; e8 3e ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test ax, ax                               ; 85 c0
-    je short 04fa3h                           ; 74 06
+    je short 04fa4h                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04ed1h                               ; e8 2e ff
+    call 04ed2h                               ; e8 2e ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7007,67 +7008,67 @@ _keyboard_init:                              ; 0xf4ee4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04fc3h                           ; 74 0d
+    je short 04fc4h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04fc3h                          ; 76 08
+    jbe short 04fc4h                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fach                          ; eb e9
+    jmp short 04fadh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04fcdh                          ; 75 06
+    jne short 04fceh                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04ed1h                               ; e8 04 ff
+    call 04ed2h                               ; e8 04 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 04fe7h                          ; 75 0d
+    jne short 04fe8h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04fe7h                          ; 76 08
+    jbe short 04fe8h                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fd0h                          ; eb e9
+    jmp short 04fd1h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ff1h                          ; 75 06
+    jne short 04ff2h                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04ed1h                               ; e8 e0 fe
+    call 04ed2h                               ; e8 e0 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 05002h                           ; 74 06
+    je short 05003h                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04ed1h                               ; e8 cf fe
+    call 04ed2h                               ; e8 cf fe
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05014h                          ; 75 08
+    jne short 05015h                          ; 75 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05002h                          ; eb ee
+    jmp short 05003h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 0502dh                           ; 74 0e
+    je short 0502eh                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 0502dh                           ; 74 06
+    je short 0502eh                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04ed1h                               ; e8 a4 fe
+    call 04ed2h                               ; e8 a4 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7077,44 +7078,44 @@ _keyboard_init:                              ; 0xf4ee4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0504dh                           ; 74 0d
+    je short 0504eh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0504dh                          ; 76 08
+    jbe short 0504eh                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05036h                          ; eb e9
+    jmp short 05037h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05057h                          ; 75 06
+    jne short 05058h                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04ed1h                               ; e8 7a fe
+    call 04ed2h                               ; e8 7a fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05071h                          ; 75 0d
+    jne short 05072h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05071h                          ; 76 08
+    jbe short 05072h                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0505ah                          ; eb e9
+    jmp short 0505bh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0507bh                          ; 75 06
+    jne short 0507ch                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04ed1h                               ; e8 56 fe
+    call 04ed2h                               ; e8 56 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 0508ch                           ; 74 06
+    je short 0508dh                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04ed1h                               ; e8 45 fe
+    call 04ed2h                               ; e8 45 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7124,18 +7125,18 @@ _keyboard_init:                              ; 0xf4ee4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 050ach                           ; 74 0d
+    je short 050adh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050ach                          ; 76 08
+    jbe short 050adh                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05095h                          ; eb e9
+    jmp short 05096h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050b6h                          ; 75 06
+    jne short 050b7h                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04ed1h                               ; e8 1b fe
+    call 04ed2h                               ; e8 1b fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7145,18 +7146,18 @@ _keyboard_init:                              ; 0xf4ee4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 050d6h                           ; 74 0d
+    je short 050d7h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050d6h                          ; 76 08
+    jbe short 050d7h                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050bfh                          ; eb e9
+    jmp short 050c0h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050e0h                          ; 75 06
+    jne short 050e1h                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04ed1h                               ; e8 f1 fd
+    call 04ed2h                               ; e8 f1 fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7166,53 +7167,53 @@ _keyboard_init:                              ; 0xf4ee4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05100h                           ; 74 0d
+    je short 05101h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05100h                          ; 76 08
+    jbe short 05101h                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050e9h                          ; eb e9
+    jmp short 050eah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0510ah                          ; 75 06
+    jne short 0510bh                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04ed1h                               ; e8 c7 fd
+    call 04ed2h                               ; e8 c7 fd
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05124h                          ; 75 0d
+    jne short 05125h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05124h                          ; 76 08
+    jbe short 05125h                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0510dh                          ; eb e9
+    jmp short 0510eh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0512eh                          ; 75 06
+    jne short 0512fh                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04ed1h                               ; e8 a3 fd
+    call 04ed2h                               ; e8 a3 fd
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 0513fh                           ; 74 06
+    je short 05140h                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04ed1h                               ; e8 92 fd
+    call 04ed2h                               ; e8 92 fd
     mov AL, strict byte 0a8h                  ; b0 a8
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
     xor ax, ax                                ; 31 c0
-    call 06596h                               ; e8 4c 14
+    call 06597h                               ; e8 4c 14
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf514e LB 0x99
+enqueue_key_:                                ; 0xf514f LB 0x99
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -7224,32 +7225,32 @@ enqueue_key_:                                ; 0xf514e LB 0x99
     mov bl, dl                                ; 88 d3
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 70 c5
+    call 016d4h                               ; e8 6f c5
     mov di, ax                                ; 89 c7
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 65 c5
+    call 016d4h                               ; e8 64 c5
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 0517ch                           ; 72 03
+    jc short 0517dh                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 05184h                          ; 75 04
+    jne short 05185h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 051a9h                          ; eb 25
+    jmp short 051aah                          ; eb 25
     xor bh, bh                                ; 30 ff
     mov dx, si                                ; 89 f2
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 38 c5
+    call 016c6h                               ; e8 37 c5
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     lea dx, [si+001h]                         ; 8d 54 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 2b c5
+    call 016c6h                               ; e8 2a c5
     mov bx, cx                                ; 89 cb
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 3c c5
+    call 016e2h                               ; e8 3b c5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop di                                    ; 5f
@@ -7259,10 +7260,10 @@ enqueue_key_:                                ; 0xf514e LB 0x99
     pop bp                                    ; 5d
     retn                                      ; c3
     db  0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
-    db  01dh, 00fh, 055h, 0d8h, 052h, 080h, 052h, 080h, 052h, 061h, 053h, 056h, 052h, 0dfh, 053h, 04dh
-    db  054h, 0f5h, 054h, 0d1h, 054h, 01ch, 053h, 080h, 052h, 080h, 052h, 0a0h, 053h, 072h, 052h, 02eh
-    db  054h, 0b2h, 054h, 0eeh, 054h
-_int09_function:                             ; 0xf51e7 LB 0x474
+    db  01dh, 010h, 055h, 0d9h, 052h, 081h, 052h, 081h, 052h, 062h, 053h, 057h, 052h, 0e0h, 053h, 04eh
+    db  054h, 0f6h, 054h, 0d2h, 054h, 01dh, 053h, 081h, 052h, 081h, 052h, 0a1h, 053h, 073h, 052h, 02fh
+    db  054h, 0b3h, 054h, 0efh, 054h
+_int09_function:                             ; 0xf51e8 LB 0x474
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
@@ -7270,56 +7271,56 @@ _int09_function:                             ; 0xf51e7 LB 0x474
     mov al, byte [bp+014h]                    ; 8a 46 14
     mov byte [bp-00ch], al                    ; 88 46 f4
     test al, al                               ; 84 c0
-    jne short 05211h                          ; 75 19
+    jne short 05212h                          ; 75 19
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 96 c7
+    call 01999h                               ; e8 95 c7
     push 00587h                               ; 68 87 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 cf c7
+    call 019dah                               ; e8 ce c7
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 052d2h                           ; e9 c1 00
+    jmp near 052d3h                           ; e9 c1 00
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 9e c4
+    call 016b8h                               ; e8 9d c4
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-00ah], al                    ; 88 46 f6
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 8f c4
+    call 016b8h                               ; e8 8e c4
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov byte [bp-004h], al                    ; 88 46 fc
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 80 c4
+    call 016b8h                               ; e8 7f c4
     mov byte [bp-010h], al                    ; 88 46 f0
     mov byte [bp-008h], al                    ; 88 46 f8
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00012h                ; b9 12 00
-    mov di, 051b2h                            ; bf b2 51
+    mov di, 051b3h                            ; bf b3 51
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+051c3h]               ; 2e 8b 85 c3 51
+    mov ax, word [cs:di+051c4h]               ; 2e 8b 85 c4 51
     jmp ax                                    ; ff e0
     xor byte [bp-008h], 040h                  ; 80 76 f8 40
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 5f c4
+    call 016c6h                               ; e8 5e c4
     or byte [bp-00ah], 040h                   ; 80 4e f6 40
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
-    jmp near 054e2h                           ; e9 70 02
+    jmp near 054e3h                           ; e9 70 02
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0bfh                  ; 24 bf
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
-    jmp near 054e2h                           ; e9 62 02
+    jmp near 054e3h                           ; e9 62 02
     test byte [bp-004h], 002h                 ; f6 46 fc 02
-    jne near 052b4h                           ; 0f 85 2c 00
+    jne near 052b5h                           ; 0f 85 2c 00
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 02ah                  ; 3c 2a
@@ -7329,177 +7330,177 @@ _int09_function:                             ; 0xf51e7 LB 0x474
     inc ax                                    ; 40
     mov dl, al                                ; 88 c2
     test byte [bp-00ch], 080h                 ; f6 46 f4 80
-    je short 052a4h                           ; 74 07
+    je short 052a5h                           ; 74 07
     not al                                    ; f6 d0
     and byte [bp-008h], al                    ; 20 46 f8
-    jmp short 052a7h                          ; eb 03
+    jmp short 052a8h                          ; eb 03
     or byte [bp-008h], al                     ; 08 46 f8
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 12 c4
+    call 016c6h                               ; e8 11 c4
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 01dh                  ; 3c 1d
-    je short 052c1h                           ; 74 04
+    je short 052c2h                           ; 74 04
     and byte [bp-004h], 0feh                  ; 80 66 fc fe
     and byte [bp-004h], 0fdh                  ; 80 66 fc fd
     movzx bx, byte [bp-004h]                  ; 0f b6 5e fc
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 f4 c3
+    call 016c6h                               ; e8 f3 c3
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
     test byte [bp-00eh], 001h                 ; f6 46 f2 01
-    jne short 052b4h                          ; 75 d6
+    jne short 052b5h                          ; 75 d6
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-008h], al                    ; 88 46 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 d4 c3
+    call 016c6h                               ; e8 d3 c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 05306h                           ; 74 0d
+    je short 05307h                           ; 74 0d
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-004h], al                    ; 88 46 fc
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05314h                          ; eb 0e
+    jmp short 05315h                          ; eb 0e
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 001h                   ; 0c 01
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 ac c3
-    jmp short 052b4h                          ; eb 98
+    call 016c6h                               ; e8 ab c3
+    jmp short 052b5h                          ; eb 98
     test byte [bp-00eh], 001h                 ; f6 46 f2 01
-    jne short 052b4h                          ; 75 92
+    jne short 052b5h                          ; 75 92
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-008h], al                    ; 88 46 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 90 c3
+    call 016c6h                               ; e8 8f c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 0534ah                           ; 74 0d
+    je short 0534bh                           ; 74 0d
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-004h], al                    ; 88 46 fc
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05358h                          ; eb 0e
+    jmp short 05359h                          ; eb 0e
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0feh                  ; 24 fe
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 68 c3
-    jmp near 052b4h                           ; e9 53 ff
+    call 016c6h                               ; e8 67 c3
+    jmp near 052b5h                           ; e9 53 ff
     mov al, byte [bp-010h]                    ; 8a 46 f0
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-008h], al                    ; 88 46 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 51 c3
+    call 016c6h                               ; e8 50 c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 05389h                           ; 74 0d
+    je short 0538ah                           ; 74 0d
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-004h], al                    ; 88 46 fc
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05397h                          ; eb 0e
+    jmp short 05398h                          ; eb 0e
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 002h                   ; 0c 02
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 29 c3
-    jmp near 052b4h                           ; e9 14 ff
+    call 016c6h                               ; e8 28 c3
+    jmp near 052b5h                           ; e9 14 ff
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-008h], al                    ; 88 46 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 12 c3
+    call 016c6h                               ; e8 11 c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 053c8h                           ; 74 0d
+    je short 053c9h                           ; 74 0d
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-004h], al                    ; 88 46 fc
     movzx bx, al                              ; 0f b6 d8
     mov dx, 00096h                            ; ba 96 00
-    jmp short 053d6h                          ; eb 0e
+    jmp short 053d7h                          ; eb 0e
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0fdh                  ; 24 fd
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 ea c2
-    jmp near 052b4h                           ; e9 d5 fe
+    call 016c6h                               ; e8 e9 c2
+    jmp near 052b5h                           ; e9 d5 fe
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    jne short 05401h                          ; 75 1c
+    jne short 05402h                          ; 75 1c
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 020h                   ; 0c 20
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 cd c2
+    call 016c6h                               ; e8 cc c2
     mov al, byte [bp-010h]                    ; 8a 46 f0
     xor AL, strict byte 020h                  ; 34 20
-    jmp near 054a0h                           ; e9 9f 00
+    jmp near 054a1h                           ; e9 9f 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 b1 c2
+    call 016c6h                               ; e8 b0 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
-    call 0e034h                               ; e8 16 8c
+    call 0e034h                               ; e8 15 8c
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 91 c2
+    call 016b8h                               ; e8 90 c2
     test AL, strict byte 008h                 ; a8 08
-    jne short 0541eh                          ; 75 f3
-    jmp near 052b4h                           ; e9 86 fe
+    jne short 0541fh                          ; 75 f3
+    jmp near 052b5h                           ; e9 86 fe
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    jne near 052b4h                           ; 0f 85 7e fe
+    jne near 052b5h                           ; 0f 85 7e fe
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0dfh                  ; 24 df
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 7c c2
-    jmp near 052b4h                           ; e9 67 fe
+    call 016c6h                               ; e8 7b c2
+    jmp near 052b5h                           ; e9 67 fe
     test byte [bp-00eh], 002h                 ; f6 46 f2 02
-    je short 05487h                           ; 74 34
+    je short 05488h                           ; 74 34
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 78 c2
+    call 016d4h                               ; e8 77 c2
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 7b c2
+    call 016e2h                               ; e8 7a c2
     mov bx, 00080h                            ; bb 80 00
     mov dx, strict word 00071h                ; ba 71 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 53 c2
+    call 016c6h                               ; e8 52 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7508,170 +7509,170 @@ _int09_function:                             ; 0xf51e7 LB 0x474
     pop bp                                    ; 5d
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
-    call 0514eh                               ; e8 ca fc
-    jmp near 052b4h                           ; e9 2d fe
+    call 0514fh                               ; e8 ca fc
+    jmp near 052b5h                           ; e9 2d fe
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 010h                   ; 0c 10
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 2b c2
+    call 016c6h                               ; e8 2a c2
     mov al, byte [bp-010h]                    ; 8a 46 f0
     xor AL, strict byte 010h                  ; 34 10
     mov byte [bp-008h], al                    ; 88 46 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 17 c2
-    jmp near 052b4h                           ; e9 02 fe
+    call 016c6h                               ; e8 16 c2
+    jmp near 052b5h                           ; e9 02 fe
     test byte [bp-00eh], 002h                 ; f6 46 f2 02
-    jne near 052b4h                           ; 0f 85 fa fd
+    jne near 052b5h                           ; 0f 85 fa fd
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0efh                  ; 24 ef
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 f8 c1
-    jmp near 052b4h                           ; e9 e3 fd
+    call 016c6h                               ; e8 f7 c1
+    jmp near 052b5h                           ; e9 e3 fd
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 004h                 ; a8 04
-    jne near 052b4h                           ; 0f 85 da fd
+    jne near 052b5h                           ; 0f 85 da fd
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-00ah], al                    ; 88 46 f6
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 db c1
-    jmp near 052b4h                           ; e9 c6 fd
+    call 016c6h                               ; e8 da c1
+    jmp near 052b5h                           ; e9 c6 fd
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0fbh                  ; 24 fb
-    jmp short 054dch                          ; eb e7
+    jmp short 054ddh                          ; eb e7
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 00ch                  ; 24 0c
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jne short 0550fh                          ; 75 11
+    jne short 05510h                          ; 75 11
     mov bx, 01234h                            ; bb 34 12
     mov dx, strict word 00072h                ; ba 72 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 d8 c1
+    call 016e2h                               ; e8 d7 c1
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-00ah], 008h                 ; f6 46 f6 08
-    je short 05523h                           ; 74 0e
+    je short 05524h                           ; 74 0e
     and byte [bp-00ah], 0f7h                  ; 80 66 f6 f7
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
     mov dx, strict word 00018h                ; ba 18 00
-    jmp near 052cch                           ; e9 a9 fd
+    jmp near 052cdh                           ; e9 a9 fd
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     test AL, strict byte 080h                 ; a8 80
-    je short 05561h                           ; 74 37
+    je short 05562h                           ; 74 37
     cmp AL, strict byte 0fah                  ; 3c fa
-    jne short 0553eh                          ; 75 10
+    jne short 0553fh                          ; 75 10
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 81 c1
+    call 016b8h                               ; e8 80 c1
     mov dl, al                                ; 88 c2
     or dl, 010h                               ; 80 ca 10
-    jmp short 05552h                          ; eb 14
+    jmp short 05553h                          ; eb 14
     cmp AL, strict byte 0feh                  ; 3c fe
-    jne near 052b4h                           ; 0f 85 70 fd
+    jne near 052b5h                           ; 0f 85 70 fd
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 6b c1
+    call 016b8h                               ; e8 6a c1
     mov dl, al                                ; 88 c2
     or dl, 020h                               ; 80 ca 20
     movzx bx, dl                              ; 0f b6 da
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 68 c1
-    jmp near 052b4h                           ; e9 53 fd
+    call 016c6h                               ; e8 67 c1
+    jmp near 052b5h                           ; e9 53 fd
     cmp byte [bp-00ch], 058h                  ; 80 7e f4 58
-    jbe short 05585h                          ; 76 1e
+    jbe short 05586h                          ; 76 1e
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 27 c4
+    call 01999h                               ; e8 26 c4
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
     push 005a1h                               ; 68 a1 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 5b c4
+    call 019dah                               ; e8 5a c4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 052d2h                           ; e9 4d fd
+    jmp near 052d3h                           ; e9 4d fd
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test AL, strict byte 008h                 ; a8 08
-    je short 0559eh                           ; 74 12
+    je short 0559fh                           ; 74 12
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
     mov dl, byte [bx+00df4h]                  ; 8a 97 f4 0d
     mov ax, word [bx+00df4h]                  ; 8b 87 f4 0d
-    jmp near 0562ch                           ; e9 8e 00
+    jmp near 0562dh                           ; e9 8e 00
     test AL, strict byte 004h                 ; a8 04
-    je short 055b4h                           ; 74 12
+    je short 055b5h                           ; 74 12
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
     mov dl, byte [bx+00df2h]                  ; 8a 97 f2 0d
     mov ax, word [bx+00df2h]                  ; 8b 87 f2 0d
-    jmp near 0562ch                           ; e9 78 00
+    jmp near 0562dh                           ; e9 78 00
     mov al, byte [bp-004h]                    ; 8a 46 fc
     and AL, strict byte 002h                  ; 24 02
     test al, al                               ; 84 c0
-    jbe short 055d2h                          ; 76 15
+    jbe short 055d3h                          ; 76 15
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 055d2h                           ; 72 0e
+    jc short 055d3h                           ; 72 0e
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 055d2h                         ; 77 0a
+    jnbe short 055d3h                         ; 77 0a
     mov DL, strict byte 0e0h                  ; b2 e0
     movzx bx, al                              ; 0f b6 d8
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
-    jmp short 05628h                          ; eb 56
+    jmp short 05629h                          ; eb 56
     test byte [bp-008h], 003h                 ; f6 46 f8 03
-    je short 05606h                           ; 74 2e
+    je short 05607h                           ; 74 2e
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
     movzx ax, byte [bx+00df6h]                ; 0f b6 87 f6 0d
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     test dx, ax                               ; 85 c2
-    je short 055f6h                           ; 74 0a
+    je short 055f7h                           ; 74 0a
     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
-    jmp short 055feh                          ; eb 08
+    jmp short 055ffh                          ; eb 08
     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ch], al                    ; 88 46 f4
-    jmp short 05632h                          ; eb 2c
+    jmp short 05633h                          ; eb 2c
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     imul bx, bx, strict byte 0000ah           ; 6b db 0a
     movzx ax, byte [bx+00df6h]                ; 0f b6 87 f6 0d
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     test dx, ax                               ; 85 c2
-    je short 05624h                           ; 74 0a
+    je short 05625h                           ; 74 0a
     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
-    jmp short 0562ch                          ; eb 08
+    jmp short 0562dh                          ; eb 08
     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ch], al                    ; 88 46 f4
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 05652h                          ; 75 1a
+    jne short 05653h                          ; 75 1a
     test dl, dl                               ; 84 d2
-    jne short 05652h                          ; 75 16
+    jne short 05653h                          ; 75 16
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 52 c3
+    call 01999h                               ; e8 51 c3
     push 005d8h                               ; 68 d8 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 8b c3
+    call 019dah                               ; e8 8a c3
     add sp, strict byte 00004h                ; 83 c4 04
     xor dh, dh                                ; 30 f6
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    jmp near 05481h                           ; e9 26 fe
-dequeue_key_:                                ; 0xf565b LB 0x94
+    jmp near 05482h                           ; e9 26 fe
+dequeue_key_:                                ; 0xf565c LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -7684,36 +7685,36 @@ dequeue_key_:                                ; 0xf565b LB 0x94
     mov word [bp-008h], cx                    ; 89 4e f8
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 5f c0
+    call 016d4h                               ; e8 5e c0
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 54 c0
+    call 016d4h                               ; e8 53 c0
     cmp bx, ax                                ; 39 c3
-    je short 056c1h                           ; 74 3d
+    je short 056c2h                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 2c c0
+    call 016b8h                               ; e8 2b c0
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 21 c0
+    call 016b8h                               ; e8 20 c0
     mov es, [bp-008h]                         ; 8e 46 f8
     mov byte [es:si], cl                      ; 26 88 0c
     mov es, [bp-006h]                         ; 8e 46 fa
     mov byte [es:di], al                      ; 26 88 05
     cmp word [bp+004h], strict byte 00000h    ; 83 7e 04 00
-    je short 056bch                           ; 74 13
+    je short 056bdh                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 056b3h                           ; 72 03
+    jc short 056b4h                           ; 72 03
     mov bx, strict word 0001eh                ; bb 1e 00
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 26 c0
+    call 016e2h                               ; e8 25 c0
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 056c3h                          ; eb 02
+    jmp short 056c4h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -7724,29 +7725,33 @@ dequeue_key_:                                ; 0xf565b LB 0x94
     adc word [bx+si], dx                      ; 11 10
     or cl, byte [bx+di]                       ; 0a 09
     add ax, 00102h                            ; 05 02 01
-    add byte [di-05ca7h], cl                  ; 00 8d 59 a3
+    add byte [bp-05ba7h], cl                  ; 00 8e 59 a4
     push di                                   ; 57
-    jmp far 04658h:03657h                     ; ea 57 36 58 46
+    jmp short 05735h                          ; eb 57
+    aaa                                       ; 37
     pop ax                                    ; 58
-    jo short 0573bh                           ; 70 58
-    jns short 0573dh                          ; 79 58
-    jmp far 04859h:01b58h                     ; ea 58 1b 59 48
+    inc di                                    ; 47
+    pop ax                                    ; 58
+    jno short 0573ch                          ; 71 58
+    jp short 0573eh                           ; 7a 58
+    jmp short 05740h                          ; eb 58
+    sbb AL, strict byte 059h                  ; 1c 59
+    dec cx                                    ; 49
     pop cx                                    ; 59
-    db  082h, 059h, 0d0h, 059h
-    ; sbb byte [bx+di-030h], 059h               ; 82 59 d0 59
-_int16_function:                             ; 0xf56ef LB 0x2e7
+    sbb word [bx+di-02fh], strict byte 00059h ; 83 59 d1 59
+_int16_function:                             ; 0xf56f0 LB 0x2e7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
     sub sp, strict byte 00006h                ; 83 ec 06
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 b9 bf
+    call 016b8h                               ; e8 b8 bf
     mov cl, al                                ; 88 c1
     mov bh, al                                ; 88 c7
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 ac bf
+    call 016b8h                               ; e8 ab bf
     mov bl, al                                ; 88 c3
     movzx dx, cl                              ; 0f b6 d1
     sar dx, 004h                              ; c1 fa 04
@@ -7755,7 +7760,7 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     xor ah, ah                                ; 30 e4
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 05781h                           ; 74 60
+    je short 05782h                           ; 74 60
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
     mov dx, strict word 00060h                ; ba 60 00
@@ -7765,17 +7770,17 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0573ah                          ; 75 08
+    jne short 0573bh                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05728h                          ; eb ee
+    jmp short 05729h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 05780h                          ; 75 3b
+    jne short 05781h                          ; 75 3b
     and bl, 0c8h                              ; 80 e3 c8
     movzx ax, bh                              ; 0f b6 c7
     sar ax, 004h                              ; c1 f8 04
@@ -7791,11 +7796,11 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0576fh                          ; 75 08
+    jne short 05770h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0575dh                          ; eb ee
+    jmp short 0575eh                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -7803,63 +7808,63 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     xor bh, bh                                ; 30 ff
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 46 bf
+    call 016c6h                               ; e8 45 bf
     sti                                       ; fb
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000a2h                            ; 3d a2 00
-    jnbe near 0598dh                          ; 0f 87 ff 01
+    jnbe near 0598eh                          ; 0f 87 ff 01
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 056cch                            ; bf cc 56
+    mov di, 056cdh                            ; bf cd 56
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+056d7h]               ; 2e 8b 85 d7 56
+    mov ax, word [cs:di+056d8h]               ; 2e 8b 85 d8 56
     jmp ax                                    ; ff e0
     push strict byte 00001h                   ; 6a 01
     mov cx, ss                                ; 8c d1
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0565bh                               ; e8 a9 fe
+    call 0565ch                               ; e8 a9 fe
     test ax, ax                               ; 85 c0
-    jne short 057c1h                          ; 75 0b
+    jne short 057c2h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 1c c2
+    call 019dah                               ; e8 1b c2
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 057cdh                           ; 74 06
+    je short 057ceh                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 057d3h                           ; 74 06
+    je short 057d4h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 057d7h                          ; 75 04
+    jne short 057d8h                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     sal dx, 008h                              ; c1 e2 08
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 059d0h                           ; e9 e6 01
+    jmp near 059d1h                           ; e9 e6 01
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     push strict byte 00000h                   ; 6a 00
     mov cx, ss                                ; 8c d1
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0565bh                               ; e8 5d fe
+    call 0565ch                               ; e8 5d fe
     test ax, ax                               ; 85 c0
-    jne short 05809h                          ; 75 07
+    jne short 0580ah                          ; 75 07
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp near 059d0h                           ; e9 c7 01
+    jmp near 059d1h                           ; e9 c7 01
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 05815h                           ; 74 06
+    je short 05816h                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 0581bh                           ; 74 06
+    je short 0581ch                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 0581fh                          ; 75 04
+    jne short 05820h                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     sal dx, 008h                              ; c1 e2 08
@@ -7867,32 +7872,32 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
     and word [bp+01ch], strict byte 0ffbfh    ; 83 66 1c bf
-    jmp near 059d0h                           ; e9 9a 01
+    jmp near 059d1h                           ; e9 9a 01
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 79 be
+    call 016b8h                               ; e8 78 be
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
-    jmp short 057e4h                          ; eb 9e
+    jmp short 057e5h                          ; eb 9e
     mov al, byte [bp+010h]                    ; 8a 46 10
     movzx dx, al                              ; 0f b6 d0
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, 008h                              ; c1 e8 08
     xor ah, ah                                ; 30 e4
-    call 0514eh                               ; e8 f7 f8
+    call 0514fh                               ; e8 f7 f8
     test ax, ax                               ; 85 c0
-    jne short 05868h                          ; 75 0d
+    jne short 05869h                          ; 75 0d
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 059d0h                           ; e9 68 01
+    jmp near 059d1h                           ; e9 68 01
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 059d0h                           ; e9 60 01
+    jmp near 059d1h                           ; e9 60 01
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 030h                   ; 0c 30
-    jmp short 05862h                          ; eb e9
+    jmp short 05863h                          ; eb e9
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
     cli                                       ; fa
@@ -7905,40 +7910,40 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 058a0h                          ; 75 0d
+    jne short 058a1h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 058a0h                          ; 76 08
+    jbe short 058a1h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05889h                          ; eb e9
+    jmp short 0588ah                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 058e4h                          ; 76 40
+    jbe short 058e5h                          ; 76 40
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 058e4h                          ; 75 35
+    jne short 058e5h                          ; 75 35
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 058c9h                          ; 75 0d
+    jne short 058cah                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 058c9h                          ; 76 08
+    jbe short 058cah                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 058b2h                          ; eb e9
+    jmp short 058b3h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 058dbh                          ; 76 0e
+    jbe short 058dch                          ; 76 0e
     shr cx, 008h                              ; c1 e9 08
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7948,80 +7953,80 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     or cx, ax                                 ; 09 c1
     dec byte [bp-004h]                        ; fe 4e fc
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jnbe short 058afh                         ; 77 cb
+    jnbe short 058b0h                         ; 77 cb
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 059d0h                           ; e9 e6 00
+    jmp near 059d1h                           ; e9 e6 00
     push strict byte 00001h                   ; 6a 01
     mov cx, ss                                ; 8c d1
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0565bh                               ; e8 62 fd
+    call 0565ch                               ; e8 62 fd
     test ax, ax                               ; 85 c0
-    jne short 05908h                          ; 75 0b
+    jne short 05909h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 d5 c0
+    call 019dah                               ; e8 d4 c0
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 057d7h                            ; 0f 84 c7 fe
+    je near 057d8h                            ; 0f 84 c7 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 057d3h                            ; 0f 84 bb fe
-    jmp near 057d7h                           ; e9 bc fe
+    je near 057d4h                            ; 0f 84 bb fe
+    jmp near 057d8h                           ; e9 bc fe
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     push strict byte 00000h                   ; 6a 00
     mov cx, ss                                ; 8c d1
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0565bh                               ; e8 2c fd
+    call 0565ch                               ; e8 2c fd
     test ax, ax                               ; 85 c0
-    je near 05802h                            ; 0f 84 cd fe
+    je near 05803h                            ; 0f 84 cd fe
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 0581fh                            ; 0f 84 e2 fe
+    je near 05820h                            ; 0f 84 e2 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 0581bh                            ; 0f 84 d6 fe
-    jmp near 0581fh                           ; e9 d7 fe
+    je near 0581ch                            ; 0f 84 d6 fe
+    jmp near 05820h                           ; e9 d7 fe
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 67 bd
+    call 016b8h                               ; e8 66 bd
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 56 bd
+    call 016b8h                               ; e8 55 bd
     mov bh, al                                ; 88 c7
     and bh, 073h                              ; 80 e7 73
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 48 bd
+    call 016b8h                               ; e8 47 bd
     and AL, strict byte 00ch                  ; 24 0c
     or bh, al                                 ; 08 c7
     mov dx, word [bp+012h]                    ; 8b 56 12
     xor dh, dh                                ; 30 f6
     movzx ax, bh                              ; 0f b6 c7
     sal ax, 008h                              ; c1 e0 08
-    jmp near 057e2h                           ; e9 60 fe
+    jmp near 057e3h                           ; e9 60 fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 05862h                           ; e9 d5 fe
+    jmp near 05863h                           ; e9 d5 fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 01 c0
+    call 01999h                               ; e8 00 c0
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 00633h                               ; 68 33 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 33 c0
+    call 019dah                               ; e8 32 c0
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 e4 bf
+    call 01999h                               ; e8 e3 bf
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -8032,13 +8037,13 @@ _int16_function:                             ; 0xf56ef LB 0x2e7
     push ax                                   ; 50
     push 0065bh                               ; 68 5b 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 0d c0
+    call 019dah                               ; e8 0c c0
     add sp, strict byte 0000ch                ; 83 c4 0c
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
-set_geom_lba_:                               ; 0xf59d6 LB 0xe5
+set_geom_lba_:                               ; 0xf59d7 LB 0xe5
     push bx                                   ; 53
     push cx                                   ; 51
     push si                                   ; 56
@@ -8053,32 +8058,32 @@ set_geom_lba_:                               ; 0xf59d6 LB 0xe5
     mov cx, word [bp+00eh]                    ; 8b 4e 0e
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov si, strict word 00020h                ; be 20 00
-    call 09f30h                               ; e8 2f 45
+    call 09f30h                               ; e8 2e 45
     test ax, ax                               ; 85 c0
-    jne short 05a11h                          ; 75 0c
+    jne short 05a12h                          ; 75 0c
     test bx, bx                               ; 85 db
-    jne short 05a11h                          ; 75 08
+    jne short 05a12h                          ; 75 08
     test cx, cx                               ; 85 c9
-    jne short 05a11h                          ; 75 04
+    jne short 05a12h                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 05a18h                           ; 74 07
+    je short 05a19h                           ; 74 07
     mov bx, strict word 0ffffh                ; bb ff ff
     mov si, bx                                ; 89 de
-    jmp short 05a1eh                          ; eb 06
+    jmp short 05a1fh                          ; eb 06
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov si, word [bp+00eh]                    ; 8b 76 0e
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 05a2ah                          ; eb 05
+    jmp short 05a2bh                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 05a4dh                          ; 7d 23
+    jnl short 05a4eh                          ; 7d 23
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp si, ax                                ; 39 c6
-    jc short 05a3bh                           ; 72 0a
-    jne short 05a44h                          ; 75 11
+    jc short 05a3ch                           ; 72 0a
+    jne short 05a45h                          ; 75 11
     mov ax, word [bp-004h]                    ; 8b 46 fc
     cmp ax, word [bp-008h]                    ; 3b 46 f8
-    jnbe short 05a44h                         ; 77 09
+    jnbe short 05a45h                         ; 77 09
     mov ax, word [bp-002h]                    ; 8b 46 fe
     inc ax                                    ; 40
     shr ax, 1                                 ; d1 e8
@@ -8086,20 +8091,20 @@ set_geom_lba_:                               ; 0xf59d6 LB 0xe5
     shr word [bp-006h], 1                     ; d1 6e fa
     rcr word [bp-008h], 1                     ; d1 5e f8
     inc bx                                    ; 43
-    jmp short 05a25h                          ; eb d8
+    jmp short 05a26h                          ; eb d8
     mov ax, word [bp-002h]                    ; 8b 46 fe
     xor dx, dx                                ; 31 d2
     mov bx, strict word 0003fh                ; bb 3f 00
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 56 44
+    call 09eb0h                               ; e8 55 44
     mov bx, ax                                ; 89 c3
     mov cx, dx                                ; 89 d1
     mov ax, word [bp-004h]                    ; 8b 46 fc
     mov dx, si                                ; 89 f2
-    call 09ef0h                               ; e8 8a 44
+    call 09ef0h                               ; e8 89 44
     mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 05a75h                          ; 76 06
+    jbe short 05a76h                          ; 76 06
     mov word [es:di+002h], 00400h             ; 26 c7 45 02 00 04
     mov ax, word [bp-002h]                    ; 8b 46 fe
     mov word [es:di], ax                      ; 26 89 05
@@ -8110,63 +8115,56 @@ set_geom_lba_:                               ; 0xf59d6 LB 0xe5
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn 00008h                               ; c2 08 00
-    inc bp                                    ; 45
+    inc si                                    ; 46
     pop bx                                    ; 5b
-    imul bx, word [bp+di-068h], strict byte 0005bh ; 6b 5b 98 5b
-    cbw                                       ; 98
+    insb                                      ; 6c
     pop bx                                    ; 5b
-    cbw                                       ; 98
+    cwd                                       ; 99
     pop bx                                    ; 5b
-    jns short 05af2h                          ; 79 5d
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-    xchg dx, ax                               ; 92
+    cwd                                       ; 99
+    pop bx                                    ; 5b
+    cwd                                       ; 99
+    pop bx                                    ; 5b
+    jp short 05af3h                           ; 7a 5d
+    test AL, strict byte 05eh                 ; a8 5e
+    test AL, strict byte 05eh                 ; a8 5e
+    xchg bx, ax                               ; 93
     pop bp                                    ; 5d
-    test byte [bp-059h], bl                   ; 84 5e a7
-    pop si                                    ; 5e
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-    test byte [bp-07ch], bl                   ; 84 5e 84
+    test word [bp-058h], bx                   ; 85 5e a8
     pop si                                    ; 5e
-    cmpsw                                     ; a7
+    test AL, strict byte 05eh                 ; a8 5e
+    test word [bp-07bh], bx                   ; 85 5e 85
     pop si                                    ; 5e
-    cmpsw                                     ; a7
+    test AL, strict byte 05eh                 ; a8 5e
+    test AL, strict byte 05eh                 ; a8 5e
+    or word [bp-07bh], bx                     ; 09 5e 85
     pop si                                    ; 5e
-    or byte [bp-07ch], bl                     ; 08 5e 84
+    test AL, strict byte 05eh                 ; a8 5e
+    test AL, strict byte 05eh                 ; a8 5e
+    test word [bp+039h], bx                   ; 85 5e 39
     pop si                                    ; 5e
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-    test byte [bp+038h], bl                   ; 84 5e 38
-    pop si                                    ; 5e
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-    cmpsw                                     ; a7
-    pop si                                    ; 5e
-_int13_harddisk:                             ; 0xf5abb LB 0x44a
+    test AL, strict byte 05eh                 ; a8 5e
+    test AL, strict byte 05eh                 ; a8 5e
+    test AL, strict byte 05eh                 ; a8 5e
+_int13_harddisk:                             ; 0xf5abc LB 0x44a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00010h                ; 83 ec 10
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 0a bc
+    call 016d4h                               ; e8 09 bc
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
     xor bx, bx                                ; 31 db
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 eb bb
+    call 016c6h                               ; e8 ea bb
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05aeah                           ; 72 05
+    jc short 05aebh                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05b08h                           ; 72 1e
+    jc short 05b09h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8176,9 +8174,9 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     push 0067eh                               ; 68 7e 06
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 d8 be
+    call 019dah                               ; e8 d7 be
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05ec2h                           ; e9 ba 03
+    jmp near 05ec3h                           ; e9 ba 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8187,36 +8185,36 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
     mov byte [bp-002h], dl                    ; 88 56 fe
     cmp dl, 010h                              ; 80 fa 10
-    jc short 05b31h                           ; 72 10
+    jc short 05b32h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 006b8h                               ; 68 b8 06
-    jmp short 05afdh                          ; eb cc
+    jmp short 05afeh                          ; eb cc
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     cmp bx, strict byte 00018h                ; 83 fb 18
-    jnbe near 05ea7h                          ; 0f 87 69 03
+    jnbe near 05ea8h                          ; 0f 87 69 03
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+05a89h]                   ; 2e ff a7 89 5a
+    jmp word [cs:bx+05a8ah]                   ; 2e ff a7 8a 5a
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc near 05b54h                           ; 0f 83 07 00
+    jnc near 05b55h                           ; 0f 83 07 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01de4h                               ; e8 90 c2
+    call 01de4h                               ; e8 8f c2
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 63 bb
+    call 016c6h                               ; e8 62 bb
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 44 bb
+    call 016b8h                               ; e8 43 bb
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
     xor dh, dh                                ; 30 f6
@@ -8227,10 +8225,10 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 35 bb
+    call 016c6h                               ; e8 34 bb
     test cl, cl                               ; 84 c9
-    je short 05b58h                           ; 74 c3
-    jmp near 05edeh                           ; e9 46 03
+    je short 05b59h                           ; 74 c3
+    jmp near 05edfh                           ; e9 46 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     mov word [bp-00ch], ax                    ; 89 46 f4
@@ -8250,22 +8248,22 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     mov word [bp-008h], ax                    ; 89 46 f8
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, 00080h                            ; 3d 80 00
-    jnbe short 05bd3h                         ; 77 04
+    jnbe short 05bd4h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 05bf6h                          ; 75 23
+    jne short 05bf7h                          ; 75 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 bb bd
+    call 01999h                               ; e8 ba bd
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 006eah                               ; 68 ea 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 ea bd
+    call 019dah                               ; e8 e9 bd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05ec2h                           ; e9 cc 02
+    jmp near 05ec3h                           ; e9 cc 02
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8276,16 +8274,16 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     mov dx, word [es:bx+02eh]                 ; 26 8b 57 2e
     mov word [bp-00ah], dx                    ; 89 56 f6
     cmp di, ax                                ; 39 c7
-    jnc short 05c23h                          ; 73 0c
+    jnc short 05c24h                          ; 73 0c
     cmp cx, word [bp-008h]                    ; 3b 4e f8
-    jbe short 05c23h                          ; 76 07
+    jbe short 05c24h                          ; 76 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp ax, dx                                ; 39 d0
-    jbe short 05c51h                          ; 76 2e
+    jbe short 05c52h                          ; 76 2e
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 6b bd
+    call 01999h                               ; e8 6a bd
     push dword [bp-008h]                      ; 66 ff 76 f8
     push di                                   ; 57
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -8297,36 +8295,36 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     push 0067eh                               ; 68 7e 06
     push 00712h                               ; 68 12 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 8f bd
+    call 019dah                               ; e8 8e bd
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 05ec2h                           ; e9 71 02
+    jmp near 05ec3h                           ; e9 71 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 00004h                ; 3d 04 00
-    jne short 05c5fh                          ; 75 03
-    jmp near 05b54h                           ; e9 f5 fe
+    jne short 05c60h                          ; 75 03
+    jmp near 05b55h                           ; e9 f5 fe
     movzx bx, byte [bp-002h]                  ; 0f b6 5e fe
     imul bx, bx, strict byte 0001ch           ; 6b db 1c
     mov es, [bp-004h]                         ; 8e 46 fc
     add bx, si                                ; 01 f3
     cmp cx, word [es:bx+030h]                 ; 26 3b 4f 30
-    jne short 05c80h                          ; 75 0f
+    jne short 05c81h                          ; 75 0f
     mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    jne short 05c80h                          ; 75 06
+    jne short 05c81h                          ; 75 06
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 05cb0h                           ; 72 30
+    jc short 05cb1h                           ; 72 30
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 25 42
+    call 09eb0h                               ; e8 24 42
     xor bx, bx                                ; 31 db
     add ax, word [bp-008h]                    ; 03 46 f8
     adc dx, bx                                ; 11 da
     mov bx, word [bp-00ah]                    ; 8b 5e f6
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 16 42
+    call 09eb0h                               ; e8 15 42
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
     adc dx, bx                                ; 11 da
@@ -8381,11 +8379,11 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     or bx, ax                                 ; 09 c3
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je near 05b54h                            ; 0f 84 0a fe
+    je near 05b55h                            ; 0f 84 0a fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 44 bc
+    call 01999h                               ; e8 43 bc
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -8394,21 +8392,21 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     push 0067eh                               ; 68 7e 06
     push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 6f bc
+    call 019dah                               ; e8 6e bc
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 05ecah                           ; e9 51 01
+    jmp near 05ecbh                           ; e9 51 01
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 15 bc
+    call 01999h                               ; e8 14 bc
     push 0077ah                               ; 68 7a 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 4e bc
+    call 019dah                               ; e8 4d bc
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 05b54h                           ; e9 c2 fd
+    jmp near 05b55h                           ; e9 c2 fd
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8451,7 +8449,7 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 05b54h                           ; e9 4c fd
+    jmp near 05b55h                           ; e9 4c fd
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -8467,12 +8465,12 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 05e2dh                          ; 75 03
-    jmp near 05b54h                           ; e9 27 fd
+    jne short 05e2eh                          ; 75 03
+    jmp near 05b55h                           ; e9 27 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 05ecah                           ; e9 92 00
+    jmp near 05ecbh                           ; e9 92 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8486,10 +8484,10 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-008h]                    ; 8b 5e f8
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 4e 40
+    call 09eb0h                               ; e8 4d 40
     mov bx, word [bp-006h]                    ; 8b 5e fa
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 46 40
+    call 09eb0h                               ; e8 45 40
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-00eh], dx                    ; 89 56 f2
     mov word [bp+014h], dx                    ; 89 56 14
@@ -8498,30 +8496,30 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05b58h                           ; e9 d4 fc
+    jmp near 05b59h                           ; e9 d4 fc
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 0a bb
+    call 01999h                               ; e8 09 bb
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 00794h                               ; 68 94 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 39 bb
+    call 019dah                               ; e8 38 bb
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05b54h                           ; e9 ad fc
+    jmp near 05b55h                           ; e9 ad fc
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 e7 ba
+    call 01999h                               ; e8 e6 ba
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 0067eh                               ; 68 7e 06
     push 007c7h                               ; 68 c7 07
-    jmp near 05bebh                           ; e9 29 fd
+    jmp near 05bech                           ; e9 29 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8531,49 +8529,49 @@ _int13_harddisk:                             ; 0xf5abb LB 0x44a
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 e8 b7
+    call 016c6h                               ; e8 e7 b7
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05b67h                           ; e9 82 fc
-    mov word [0bb5fh], ax                     ; a3 5f bb
+    jmp near 05b68h                           ; e9 82 fc
+    movsb                                     ; a4
     pop di                                    ; 5f
-    mov bx, 0bb5fh                            ; bb 5f bb
+    mov sp, 0bc5fh                            ; bc 5f bc
     pop di                                    ; 5f
-    db  08fh, 063h, 010h
-    ; pop word [bp+di+010h]                     ; 8f 63 10
+    mov sp, 0905fh                            ; bc 5f 90
+    arpl [bx+di], dx                          ; 63 11
     popaw                                     ; 61
-    mov bx, 0165fh                            ; bb 5f 16
+    mov sp, 0175fh                            ; bc 5f 17
     popaw                                     ; 61
-    db  08fh, 063h, 0deh
-    ; pop word [bp+di-022h]                     ; 8f 63 de
-    arpl si, bx                               ; 63 de
-    arpl si, bx                               ; 63 de
-    arpl si, bx                               ; 63 de
-    arpl [bp-0219dh], sp                      ; 63 a6 63 de
-    arpl si, bx                               ; 63 de
+    nop                                       ; 90
+    arpl di, bx                               ; 63 df
+    arpl di, bx                               ; 63 df
+    arpl di, bx                               ; 63 df
+    arpl di, bx                               ; 63 df
+    arpl [bx-0209dh], sp                      ; 63 a7 63 df
+    arpl di, bx                               ; 63 df
     db  063h
-_int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
+_int13_harddisk_ext:                         ; 0xf5f06 LB 0x4f4
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00026h                ; 83 ec 26
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 c0 b7
+    call 016d4h                               ; e8 bf b7
     mov word [bp-014h], ax                    ; 89 46 ec
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 b4 b7
+    call 016d4h                               ; e8 b3 b7
     mov word [bp-008h], 00122h                ; c7 46 f8 22 01
     mov word [bp-006h], ax                    ; 89 46 fa
     xor bx, bx                                ; 31 db
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 93 b7
+    call 016c6h                               ; e8 92 b7
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05f42h                           ; 72 05
+    jc short 05f43h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05f60h                           ; 72 1e
+    jc short 05f61h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8583,9 +8581,9 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     push 007f5h                               ; 68 f5 07
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 80 ba
+    call 019dah                               ; e8 7f ba
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 063bch                           ; e9 5c 04
+    jmp near 063bdh                           ; e9 5c 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     les bx, [bp-008h]                         ; c4 5e f8
@@ -8593,30 +8591,30 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
     mov byte [bp-004h], dl                    ; 88 56 fc
     cmp dl, 010h                              ; 80 fa 10
-    jc short 05f87h                           ; 72 10
+    jc short 05f88h                           ; 72 10
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 007f5h                               ; 68 f5 07
     push 006b8h                               ; 68 b8 06
-    jmp short 05f55h                          ; eb ce
+    jmp short 05f56h                          ; eb ce
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     sub bx, strict byte 00041h                ; 83 eb 41
     cmp bx, strict byte 0000fh                ; 83 fb 0f
-    jnbe near 063deh                          ; 0f 87 47 04
+    jnbe near 063dfh                          ; 0f 87 47 04
     add bx, bx                                ; 01 db
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
-    jmp word [cs:bx+05ee5h]                   ; 2e ff a7 e5 5e
+    jmp word [cs:bx+05ee6h]                   ; 2e ff a7 e6 5e
     mov word [bp+010h], 0aa55h                ; c7 46 10 55 aa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 030h                               ; 80 cc 30
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 06393h                           ; e9 d8 03
+    jmp near 06394h                           ; e9 d8 03
     mov di, word [bp+00ah]                    ; 8b 7e 0a
     mov es, [bp+004h]                         ; 8e 46 04
     mov word [bp-01ch], di                    ; 89 7e e4
@@ -8632,7 +8630,7 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     xor ax, ax                                ; 31 c0
     xor bx, bx                                ; 31 db
     mov si, strict word 00020h                ; be 20 00
-    call 09f40h                               ; e8 52 3f
+    call 09f40h                               ; e8 51 3f
     mov word [bp-00eh], bx                    ; 89 5e f2
     mov bx, word [es:di+008h]                 ; 26 8b 5d 08
     mov di, word [es:di+00ah]                 ; 26 8b 7d 0a
@@ -8644,38 +8642,38 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     add di, bx                                ; 01 df
     mov bl, byte [es:di+022h]                 ; 26 8a 5d 22
     cmp ax, word [es:di+03ch]                 ; 26 3b 45 3c
-    jnbe short 06035h                         ; 77 22
-    jne short 06058h                          ; 75 43
+    jnbe short 06036h                         ; 77 22
+    jne short 06059h                          ; 75 43
     mov si, word [bp-00eh]                    ; 8b 76 f2
     cmp si, word [es:di+03ah]                 ; 26 3b 75 3a
-    jnbe short 06035h                         ; 77 17
+    jnbe short 06036h                         ; 77 17
     mov si, word [bp-00eh]                    ; 8b 76 f2
     cmp si, word [es:di+03ah]                 ; 26 3b 75 3a
-    jne short 06058h                          ; 75 31
+    jne short 06059h                          ; 75 31
     cmp cx, word [es:di+038h]                 ; 26 3b 4d 38
-    jnbe short 06035h                         ; 77 08
-    jne short 06058h                          ; 75 29
+    jnbe short 06036h                         ; 77 08
+    jne short 06059h                          ; 75 29
     cmp dx, word [es:di+036h]                 ; 26 3b 55 36
-    jc short 06058h                           ; 72 23
+    jc short 06059h                           ; 72 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 59 b9
+    call 01999h                               ; e8 58 b9
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 007f5h                               ; 68 f5 07
     push 00808h                               ; 68 08 08
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 88 b9
+    call 019dah                               ; e8 87 b9
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 063bch                           ; e9 64 03
+    jmp near 063bdh                           ; e9 64 03
     mov di, word [bp+016h]                    ; 8b 7e 16
     shr di, 008h                              ; c1 ef 08
     cmp di, strict byte 00044h                ; 83 ff 44
-    je near 0638fh                            ; 0f 84 2a 03
+    je near 06390h                            ; 0f 84 2a 03
     cmp di, strict byte 00047h                ; 83 ff 47
-    je near 0638fh                            ; 0f 84 23 03
+    je near 06390h                            ; 0f 84 23 03
     les si, [bp-008h]                         ; c4 76 f8
     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
@@ -8712,25 +8710,25 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     les bx, [bp-01ch]                         ; c4 5e e4
     mov word [es:bx+002h], ax                 ; 26 89 47 02
     test dl, dl                               ; 84 d2
-    je near 0638fh                            ; 0f 84 a8 02
+    je near 06390h                            ; 0f 84 a8 02
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 a7 b8
+    call 01999h                               ; e8 a6 b8
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
     push di                                   ; 57
     push 007f5h                               ; 68 f5 07
     push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 d8 b8
+    call 019dah                               ; e8 d7 b8
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 063c4h                           ; e9 b4 02
+    jmp near 063c5h                           ; e9 b4 02
     or ah, 0b2h                               ; 80 cc b2
-    jmp near 063c4h                           ; e9 ae 02
+    jmp near 063c5h                           ; e9 ae 02
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
     mov word [bp-00ch], ax                    ; 89 46 f4
@@ -8740,8 +8738,8 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     mov ax, word [es:bx]                      ; 26 8b 07
     mov word [bp-010h], ax                    ; 89 46 f0
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jc near 063bch                            ; 0f 82 89 02
-    jc near 061d2h                            ; 0f 82 9b 00
+    jc near 063bdh                            ; 0f 82 89 02
+    jc near 061d3h                            ; 0f 82 9b 00
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
     les bx, [bp-008h]                         ; c4 5e f8
@@ -8783,12 +8781,12 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     mov word [es:bx+012h], cx                 ; 26 89 4f 12
     mov bx, word [bp-00eh]                    ; 8b 5e f2
     mov si, strict word 00020h                ; be 20 00
-    call 09f30h                               ; e8 68 3d
+    call 09f30h                               ; e8 67 3d
     mov bx, di                                ; 89 fb
     mov word [es:bx+014h], dx                 ; 26 89 57 14
     mov word [es:bx+016h], cx                 ; 26 89 4f 16
     cmp word [bp-010h], strict byte 0001eh    ; 83 7e f0 1e
-    jc near 062d7h                            ; 0f 82 fd 00
+    jc near 062d8h                            ; 0f 82 fd 00
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di], strict word 0001eh      ; 26 c7 05 1e 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
@@ -8814,9 +8812,9 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     mov ah, byte [es:bx+026h]                 ; 26 8a 67 26
     mov al, byte [es:bx+027h]                 ; 26 8a 47 27
     test al, al                               ; 84 c0
-    jne short 06231h                          ; 75 04
+    jne short 06232h                          ; 75 04
     xor bx, bx                                ; 31 db
-    jmp short 06234h                          ; eb 03
+    jmp short 06235h                          ; eb 03
     mov bx, strict word 00008h                ; bb 08 00
     or bl, 010h                               ; 80 cb 10
     cmp ah, 001h                              ; 80 fc 01
@@ -8830,9 +8828,9 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     movzx cx, ah                              ; 0f b6 cc
     or bx, cx                                 ; 09 cb
     cmp AL, strict byte 003h                  ; 3c 03
-    jne short 06255h                          ; 75 05
+    jne short 06256h                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 06257h                          ; eb 02
+    jmp short 06258h                          ; eb 02
     xor ax, ax                                ; 31 c0
     or bx, ax                                 ; 09 c3
     mov ax, word [bp-01eh]                    ; 8b 46 e2
@@ -8858,22 +8856,22 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     mov byte [es:bx+00242h], 011h             ; 26 c6 87 42 02 11
     xor bl, bl                                ; 30 db
     xor bh, bh                                ; 30 ff
-    jmp short 062bah                          ; eb 05
+    jmp short 062bbh                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 062cdh                          ; 73 13
+    jnc short 062ceh                          ; 73 13
     movzx dx, bh                              ; 0f b6 d7
     add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-014h]                    ; 8b 46 ec
-    call 016b8h                               ; e8 f1 b3
+    call 016b8h                               ; e8 f0 b3
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 062b5h                          ; eb e8
+    jmp short 062b6h                          ; eb e8
     neg bl                                    ; f6 db
     les si, [bp-008h]                         ; c4 76 f8
     mov byte [es:si+00243h], bl               ; 26 88 9c 43 02
     cmp word [bp-010h], strict byte 00042h    ; 83 7e f0 42
-    jc near 0638fh                            ; 0f 82 b0 00
+    jc near 06390h                            ; 0f 82 b0 00
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -8891,7 +8889,7 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     ; mov dword [es:di+01eh], strict dword 00024beddh ; 66 26 c7 45 1e dd be 24 00
     mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00
     test al, al                               ; 84 c0
-    jne short 06320h                          ; 75 09
+    jne short 06321h                          ; 75 09
     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
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -8900,7 +8898,7 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     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
     test al, al                               ; 84 c0
-    jne short 0634ch                          ; 75 13
+    jne short 0634dh                          ; 75 13
     mov word [es:di+030h], dx                 ; 26 89 55 30
     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
@@ -8915,17 +8913,17 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00
     xor bl, bl                                ; 30 db
     mov BH, strict byte 01eh                  ; b7 1e
-    jmp short 06374h                          ; eb 05
+    jmp short 06375h                          ; eb 05
     cmp bh, 040h                              ; 80 ff 40
-    jnc short 06386h                          ; 73 12
+    jnc short 06387h                          ; 73 12
     movzx dx, bh                              ; 0f b6 d7
     add dx, word [bp+00ah]                    ; 03 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016b8h                               ; e8 38 b3
+    call 016b8h                               ; e8 37 b3
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 0636fh                          ; eb e9
+    jmp short 06370h                          ; eb e9
     neg bl                                    ; f6 db
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+041h], bl                 ; 26 88 5d 41
@@ -8933,20 +8931,20 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 28 b3
+    call 016c6h                               ; e8 27 b3
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
     cmp ax, strict word 00006h                ; 3d 06 00
-    je short 0638fh                           ; 74 e4
+    je short 06390h                           ; 74 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 063bch                           ; 72 0c
-    jbe short 0638fh                          ; 76 dd
+    jc short 063bdh                           ; 72 0c
+    jbe short 06390h                          ; 76 dd
     cmp ax, strict word 00003h                ; 3d 03 00
-    jc short 063bch                           ; 72 05
+    jc short 063bdh                           ; 72 05
     cmp ax, strict word 00004h                ; 3d 04 00
-    jbe short 0638fh                          ; 76 d3
+    jbe short 06390h                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8956,20 +8954,20 @@ _int13_harddisk_ext:                         ; 0xf5f05 LB 0x4f4
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 ee b2
+    call 016c6h                               ; e8 ed b2
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 063a2h                          ; eb c4
+    jmp short 063a3h                          ; eb c4
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 b0 b5
+    call 01999h                               ; e8 af b5
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 007f5h                               ; 68 f5 07
     push 007c7h                               ; 68 c7 07
-    jmp near 0604dh                           ; e9 54 fc
-_int14_function:                             ; 0xf63f9 LB 0x15a
+    jmp near 0604eh                           ; e9 54 fc
+_int14_function:                             ; 0xf63fa LB 0x15a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -8977,29 +8975,29 @@ _int14_function:                             ; 0xf63f9 LB 0x15a
     mov dx, word [bp+00eh]                    ; 8b 56 0e
     add dx, dx                                ; 01 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 cb b2
+    call 016d4h                               ; e8 ca b2
     mov si, ax                                ; 89 c6
     mov bx, ax                                ; 89 c3
     mov dx, word [bp+00eh]                    ; 8b 56 0e
     add dx, strict byte 0007ch                ; 83 c2 7c
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 9f b2
+    call 016b8h                               ; e8 9e b2
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc near 06549h                           ; 0f 83 26 01
+    jnc near 0654ah                           ; 0f 83 26 01
     test si, si                               ; 85 f6
-    jbe near 06549h                           ; 0f 86 20 01
+    jbe near 0654ah                           ; 0f 86 20 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 06441h                           ; 72 11
-    jbe short 0649ah                          ; 76 68
+    jc short 06442h                           ; 72 11
+    jbe short 0649bh                          ; 76 68
     cmp AL, strict byte 003h                  ; 3c 03
-    je near 06532h                            ; 0f 84 fa 00
+    je near 06533h                            ; 0f 84 fa 00
     cmp AL, strict byte 002h                  ; 3c 02
-    je near 064e8h                            ; 0f 84 aa 00
-    jmp near 06543h                           ; e9 02 01
+    je near 064e9h                            ; 0f 84 aa 00
+    jmp near 06544h                           ; e9 02 01
     test al, al                               ; 84 c0
-    jne near 06543h                           ; 0f 85 fc 00
+    jne near 06544h                           ; 0f 85 fc 00
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9009,14 +9007,14 @@ _int14_function:                             ; 0xf63f9 LB 0x15a
     lea si, [bx+001h]                         ; 8d 77 01
     mov al, byte [bp+012h]                    ; 8a 46 12
     test AL, strict byte 0e0h                 ; a8 e0
-    jne short 06466h                          ; 75 0c
+    jne short 06467h                          ; 75 0c
     mov AL, strict byte 017h                  ; b0 17
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     mov AL, strict byte 004h                  ; b0 04
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
-    jmp short 0647ch                          ; eb 16
+    jmp short 0647dh                          ; eb 16
     and AL, strict byte 0e0h                  ; 24 e0
     movzx cx, al                              ; 0f b6 c8
     sar cx, 005h                              ; c1 f9 05
@@ -9041,10 +9039,10 @@ _int14_function:                             ; 0xf63f9 LB 0x15a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 06524h                           ; e9 8a 00
+    jmp near 06525h                           ; e9 8a 00
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 31 b2
+    call 016d4h                               ; e8 30 b2
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
@@ -9052,20 +9050,20 @@ _int14_function:                             ; 0xf63f9 LB 0x15a
     ; sub ah, ah                                ; 2a e4
     and ax, strict word 00060h                ; 25 60 00
     cmp ax, strict word 00060h                ; 3d 60 00
-    je short 064cah                           ; 74 17
+    je short 064cbh                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 064cah                           ; 74 13
+    je short 064cbh                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 14 b2
+    call 016d4h                               ; e8 13 b2
     cmp ax, si                                ; 39 f0
-    je short 064a5h                           ; 74 e1
+    je short 064a6h                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 064a5h                          ; eb db
+    jmp short 064a6h                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 064d4h                           ; 74 06
+    je short 064d5h                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -9075,33 +9073,33 @@ _int14_function:                             ; 0xf63f9 LB 0x15a
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 06524h                          ; 75 43
+    jne short 06525h                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 06524h                          ; eb 3c
+    jmp short 06525h                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 e3 b1
+    call 016d4h                               ; e8 e2 b1
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 06514h                          ; 75 17
+    jne short 06515h                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 06514h                           ; 74 13
+    je short 06515h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 ca b1
+    call 016d4h                               ; e8 c9 b1
     cmp ax, si                                ; 39 f0
-    je short 064f3h                           ; 74 e5
+    je short 064f4h                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 064f3h                          ; eb df
+    jmp short 064f4h                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 0652ah                           ; 74 12
+    je short 0652bh                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -9109,12 +9107,12 @@ _int14_function:                             ; 0xf63f9 LB 0x15a
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 0654dh                          ; eb 23
+    jmp short 0654eh                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 064e3h                          ; eb b1
+    jmp short 064e4h                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9124,15 +9122,15 @@ _int14_function:                             ; 0xf63f9 LB 0x15a
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 06521h                          ; eb de
+    jmp short 06522h                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 0654dh                          ; eb 04
+    jmp short 0654eh                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-timer_wait_:                                 ; 0xf6553 LB 0x43
+timer_wait_:                                 ; 0xf6554 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9140,7 +9138,7 @@ timer_wait_:                                 ; 0xf6553 LB 0x43
     push ax                                   ; 50
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 09ef0h                               ; e8 8f 39
+    call 09ef0h                               ; e8 8e 39
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
     mov dx, strict word 00061h                ; ba 61 00
@@ -9152,23 +9150,23 @@ timer_wait_:                                 ; 0xf6553 LB 0x43
     add cx, strict byte 0ffffh                ; 83 c1 ff
     adc bx, strict byte 0ffffh                ; 83 d3 ff
     cmp bx, strict byte 0ffffh                ; 83 fb ff
-    jne short 06580h                          ; 75 05
+    jne short 06581h                          ; 75 05
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 0658fh                           ; 74 0f
+    je short 06590h                           ; 74 0f
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 010h                  ; 24 10
     cmp al, byte [bp-006h]                    ; 3a 46 fa
-    jne short 06580h                          ; 75 f3
-    jmp short 06570h                          ; eb e1
+    jne short 06581h                          ; 75 f3
+    jmp short 06571h                          ; eb e1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf6596 LB 0x2c
+set_enable_a20_:                             ; 0xf6597 LB 0x2c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9181,10 +9179,10 @@ set_enable_a20_:                             ; 0xf6596 LB 0x2c
     ; sub ah, ah                                ; 2a e4
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 065afh                           ; 74 05
+    je short 065b0h                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 065b2h                          ; eb 03
+    jmp short 065b3h                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
     test cl, 002h                             ; f6 c1 02
@@ -9197,7 +9195,7 @@ set_enable_a20_:                             ; 0xf6596 LB 0x2c
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf65c2 LB 0x89
+set_e820_range_:                             ; 0xf65c3 LB 0x89
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9226,10 +9224,10 @@ set_e820_range_:                             ; 0xf65c2 LB 0x89
     pop si                                    ; 5e
     retn 0000ah                               ; c2 0a 00
     db  0ech, 0e9h, 0d8h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 083h, 052h, 04fh, 041h, 024h, 000h
-    db  04fh, 069h, 088h, 066h, 09bh, 066h, 030h, 067h, 036h, 067h, 03bh, 067h, 040h, 067h, 0e2h, 067h
-    db  00ch, 068h, 029h, 067h, 029h, 067h, 0d9h, 068h, 001h, 069h, 014h, 069h, 023h, 069h, 030h, 067h
-    db  02ah, 069h
-_int15_function:                             ; 0xf664b LB 0x336
+    db  050h, 069h, 089h, 066h, 09ch, 066h, 031h, 067h, 037h, 067h, 03ch, 067h, 041h, 067h, 0e3h, 067h
+    db  00dh, 068h, 02ah, 067h, 02ah, 067h, 0dah, 068h, 002h, 069h, 015h, 069h, 024h, 069h, 031h, 067h
+    db  02bh, 069h
+_int15_function:                             ; 0xf664c LB 0x336
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9237,15 +9235,15 @@ _int15_function:                             ; 0xf664b LB 0x336
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe near 0694fh                          ; 0f 87 f2 02
+    jnbe near 06950h                          ; 0f 87 f2 02
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00011h                ; b9 11 00
-    mov di, 06619h                            ; bf 19 66
+    mov di, 0661ah                            ; bf 1a 66
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+06629h]               ; 2e 8b b5 29 66
+    mov si, word [cs:di+0662ah]               ; 2e 8b b5 2a 66
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     mov cx, word [bp+018h]                    ; 8b 4e 18
@@ -9258,30 +9256,30 @@ _int15_function:                             ; 0xf664b LB 0x336
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    jne near 0694fh                           ; 0f 85 bb 02
+    jne near 06950h                           ; 0f 85 bb 02
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 068f8h                           ; e9 5d 02
+    jmp near 068f9h                           ; e9 5d 02
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 066b0h                           ; 72 0e
-    jbe short 066c4h                          ; 76 20
+    jc short 066b1h                           ; 72 0e
+    jbe short 066c5h                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 066f1h                           ; 74 48
+    je short 066f2h                           ; 74 48
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 066d4h                           ; 74 26
-    jmp short 066feh                          ; eb 4e
+    je short 066d5h                           ; 74 26
+    jmp short 066ffh                          ; eb 4e
     test ax, ax                               ; 85 c0
-    jne short 066feh                          ; 75 4a
+    jne short 066ffh                          ; 75 4a
     xor ax, ax                                ; 31 c0
-    call 06596h                               ; e8 dd fe
+    call 06597h                               ; e8 dd fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 06729h                           ; e9 65 00
+    jmp near 0672ah                           ; e9 65 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 06596h                               ; e8 cc fe
+    call 06597h                               ; e8 cc fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 06729h                           ; e9 55 00
+    jmp near 0672ah                           ; e9 55 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9293,21 +9291,21 @@ _int15_function:                             ; 0xf664b LB 0x336
     mov word [bp+012h], dx                    ; 89 56 12
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
-    jmp near 06729h                           ; e9 38 00
+    jmp near 0672ah                           ; e9 38 00
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
     mov word [bp+00ch], ax                    ; 89 46 0c
-    jmp near 06729h                           ; e9 2b 00
+    jmp near 0672ah                           ; e9 2b 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 90 b2
+    call 01999h                               ; e8 8f b2
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     push 0082eh                               ; 68 2e 08
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 c3 b2
+    call 019dah                               ; e8 c2 b2
     add sp, strict byte 00006h                ; 83 c4 06
     or byte [bp+018h], 001h                   ; 80 4e 18 01
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -9320,38 +9318,38 @@ _int15_function:                             ; 0xf664b LB 0x336
     pop bp                                    ; 5d
     retn                                      ; c3
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 067dch                           ; e9 a6 00
+    jmp near 067ddh                           ; e9 a6 00
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 06729h                          ; eb ee
+    jmp short 0672ah                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 06726h                          ; eb e6
+    jmp short 06727h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 067b2h                          ; 75 6c
+    jne short 067b3h                          ; 75 6c
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 69 af
+    call 016b8h                               ; e8 68 af
     test AL, strict byte 001h                 ; a8 01
-    jne near 068efh                           ; 0f 85 9a 01
+    jne near 068f0h                           ; 0f 85 9a 01
     mov bx, strict word 00001h                ; bb 01 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 65 af
+    call 016c6h                               ; e8 64 af
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 75 af
+    call 016e2h                               ; e8 74 af
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 69 af
+    call 016e2h                               ; e8 68 af
     mov bx, word [bp+00eh]                    ; 8b 5e 0e
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 5d af
+    call 016e2h                               ; e8 5c af
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, 0009eh                            ; ba 9e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016e2h                               ; e8 51 af
+    call 016e2h                               ; e8 50 af
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9360,23 +9358,23 @@ _int15_function:                             ; 0xf664b LB 0x336
     and AL, strict byte 0feh                  ; 24 fe
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 70 af
+    call 01714h                               ; e8 6f af
     or AL, strict byte 040h                   ; 0c 40
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01731h                               ; e8 82 af
-    jmp near 06729h                           ; e9 77 ff
+    call 01731h                               ; e8 81 af
+    jmp near 0672ah                           ; e9 77 ff
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 067d0h                          ; 75 19
+    jne short 067d1h                          ; 75 19
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 04 af
+    call 016c6h                               ; e8 03 af
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 48 af
+    call 01714h                               ; e8 47 af
     and AL, strict byte 0bfh                  ; 24 bf
-    jmp short 067a6h                          ; eb d6
+    jmp short 067a7h                          ; eb d6
     mov word [bp+018h], bx                    ; 89 5e 18
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
@@ -9384,49 +9382,49 @@ _int15_function:                             ; 0xf664b LB 0x336
     dec ax                                    ; 48
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 06729h                           ; e9 47 ff
+    jmp near 0672ah                           ; e9 47 ff
     mov ax, strict word 00031h                ; b8 31 00
-    call 01714h                               ; e8 2c af
+    call 01714h                               ; e8 2b af
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 01714h                               ; e8 20 af
+    call 01714h                               ; e8 1f af
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
     cmp dx, strict byte 0ffc0h                ; 83 fa c0
-    jbe short 06805h                          ; 76 05
+    jbe short 06806h                          ; 76 05
     mov word [bp+012h], strict word 0ffc0h    ; c7 46 12 c0 ff
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
-    jmp near 06729h                           ; e9 1d ff
+    jmp near 0672ah                           ; e9 1d ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 06596h                               ; e8 83 fd
+    call 06597h                               ; e8 83 fd
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00038h                ; 83 c2 38
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 016e2h                               ; e8 c0 ae
+    call 016e2h                               ; e8 bf ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ah                ; 83 c2 3a
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 016e2h                               ; e8 b2 ae
+    call 016e2h                               ; e8 b1 ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ch                ; 83 c2 3c
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 016c6h                               ; e8 87 ae
+    call 016c6h                               ; e8 86 ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003dh                ; 83 c2 3d
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, 0009bh                            ; bb 9b 00
-    call 016c6h                               ; e8 78 ae
+    call 016c6h                               ; e8 77 ae
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003eh                ; 83 c2 3e
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 016e2h                               ; e8 86 ae
+    call 016e2h                               ; e8 85 ae
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
     out DX, AL                                ; ee
@@ -9456,7 +9454,7 @@ _int15_function:                             ; 0xf664b LB 0x336
     mov dx, 000a1h                            ; ba a1 00
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 0689dh                               ; e8 00 00
+    call 0689eh                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00038h                   ; 6a 38
@@ -9484,68 +9482,67 @@ _int15_function:                             ; 0xf664b LB 0x336
     push ax                                   ; 50
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 06729h                           ; e9 50 fe
+    jmp near 0672ah                           ; e9 50 fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 b5 b0
+    call 01999h                               ; e8 b4 b0
     push 0086eh                               ; 68 6e 08
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 ee b0
+    call 019dah                               ; e8 ed b0
     add sp, strict byte 00004h                ; 83 c4 04
     or byte [bp+018h], 001h                   ; 80 4e 18 01
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 06729h                           ; e9 28 fe
+    jmp near 0672ah                           ; e9 28 fe
     mov word [bp+018h], cx                    ; 89 4e 18
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+00ch], 0e6f5h                ; c7 46 0c f5 e6
     mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
-    jmp near 06729h                           ; e9 15 fe
+    jmp near 0672ah                           ; e9 15 fe
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 b7 ad
+    call 016d4h                               ; e8 b6 ad
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 06805h                           ; e9 e2 fe
+    jmp near 06806h                           ; e9 e2 fe
     push 0089dh                               ; 68 9d 08
     push strict byte 00008h                   ; 6a 08
-    jmp short 068e9h                          ; eb bf
+    jmp short 068eah                          ; eb bf
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 0694fh                          ; 75 1f
+    jne short 06950h                          ; 75 1f
     mov word [bp+012h], ax                    ; 89 46 12
     mov ax, word [bp+00ch]                    ; 8b 46 0c
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06948h                           ; 72 0b
+    jc short 06949h                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 06948h                         ; 77 06
+    jnbe short 06949h                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 06729h                           ; e9 e1 fd
+    jmp near 0672ah                           ; e9 e1 fd
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 06729h                           ; e9 da fd
+    jmp near 0672ah                           ; e9 da fd
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 3f b0
+    call 01999h                               ; e8 3e b0
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     push 008b4h                               ; 68 b4 08
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 72 b0
+    call 019dah                               ; e8 71 b0
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp short 068efh                          ; eb 82
-    cli                                       ; fa
-    push strict byte 0001ch                   ; 6a 1c
-    imul di, word [bx], strict byte 0006bh    ; 6b 3f 6b
-    popaw                                     ; 61
-    imul ax, word [bx+di-05f95h], strict byte 0006bh ; 6b 81 6b a0 6b
-    les bp, [bp+di-018h]                      ; c4 6b e8
-    imul sp, word [bx], strict byte 0006ch    ; 6b 27 6c
-    push bx                                   ; 53
+    jmp short 068f0h                          ; eb 82
+    sti                                       ; fb
+    push strict byte 0001dh                   ; 6a 1d
+    imul ax, word [bx+si+06bh], strict byte 00062h ; 6b 40 6b 62
+    imul ax, word [bp+si-05e95h], strict byte 0006bh ; 6b 82 6b a1 6b
+    lds bp, [bp+di-017h]                      ; c5 6b e9
+    imul bp, word [bx+si], strict byte 0006ch ; 6b 28 6c
+    push sp                                   ; 54
     insb                                      ; 6c
-_int15_function32:                           ; 0xf6981 LB 0x396
+_int15_function32:                           ; 0xf6982 LB 0x396
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9557,32 +9554,32 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov dx, word [bp+020h]                    ; 8b 56 20
     xor dh, dh                                ; 30 f6
     cmp ax, 000e8h                            ; 3d e8 00
-    je near 06a1eh                            ; 0f 84 7e 00
+    je near 06a1fh                            ; 0f 84 7e 00
     cmp ax, 000d0h                            ; 3d d0 00
-    je short 069b9h                           ; 74 14
+    je short 069bah                           ; 74 14
     cmp ax, 00086h                            ; 3d 86 00
-    jne near 06ce7h                           ; 0f 85 3b 03
+    jne near 06ce8h                           ; 0f 85 3b 03
     sti                                       ; fb
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 06553h                               ; e8 9d fb
-    jmp near 06d11h                           ; e9 58 03
+    call 06554h                               ; e8 9d fb
+    jmp near 06d12h                           ; e9 58 03
     cmp dx, strict byte 0004fh                ; 83 fa 4f
-    jne near 06ce7h                           ; 0f 85 27 03
+    jne near 06ce8h                           ; 0f 85 27 03
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne near 06ce7h                           ; 0f 85 1e 03
+    jne near 06ce8h                           ; 0f 85 1e 03
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne near 06ce7h                           ; 0f 85 15 03
+    jne near 06ce8h                           ; 0f 85 15 03
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne near 06ce7h                           ; 0f 85 0c 03
+    jne near 06ce8h                           ; 0f 85 0c 03
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne near 06ce7h                           ; 0f 85 03 03
+    jne near 06ce8h                           ; 0f 85 03 03
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne near 06ce7h                           ; 0f 85 f9 02
+    jne near 06ce8h                           ; 0f 85 f9 02
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    jne near 06ce7h                           ; 0f 85 ef 02
+    jne near 06ce8h                           ; 0f 85 ef 02
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov word [bp+008h], ax                    ; 89 46 08
@@ -9593,26 +9590,26 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+01eh]                    ; 8b 46 1e
     mov word [bp+006h], ax                    ; 89 46 06
     mov dword [bp+020h], strict dword 049413332h ; 66 c7 46 20 32 33 41 49
-    jmp near 06d11h                           ; e9 f3 02
+    jmp near 06d12h                           ; e9 f3 02
     cmp dx, strict byte 00020h                ; 83 fa 20
-    je short 06a2dh                           ; 74 0a
+    je short 06a2eh                           ; 74 0a
     cmp dx, strict byte 00001h                ; 83 fa 01
-    je near 06c9ah                            ; 0f 84 70 02
-    jmp near 06ce7h                           ; e9 ba 02
+    je near 06c9bh                            ; 0f 84 70 02
+    jmp near 06ce8h                           ; e9 ba 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne near 06ce7h                           ; 0f 85 b1 02
+    jne near 06ce8h                           ; 0f 85 b1 02
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne near 06ce7h                           ; 0f 85 a8 02
+    jne near 06ce8h                           ; 0f 85 a8 02
     mov ax, strict word 00035h                ; b8 35 00
-    call 01714h                               ; e8 cf ac
+    call 01714h                               ; e8 ce ac
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06a4dh                               ; e2 fa
+    loop 06a4eh                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 01714h                               ; e8 bb ac
+    call 01714h                               ; e8 ba ac
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
     or dx, ax                                 ; 09 c2
@@ -9620,30 +9617,30 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     add bx, bx                                ; 01 db
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 06a73h                           ; 72 06
-    jne short 06aa0h                          ; 75 31
+    jc short 06a74h                           ; 72 06
+    jne short 06aa1h                          ; 75 31
     test bx, bx                               ; 85 db
-    jnbe short 06aa0h                         ; 77 2d
+    jnbe short 06aa1h                         ; 77 2d
     mov ax, strict word 00031h                ; b8 31 00
-    call 01714h                               ; e8 9b ac
+    call 01714h                               ; e8 9a ac
     movzx bx, al                              ; 0f b6 d8
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06a81h                               ; e2 fa
+    loop 06a82h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 01714h                               ; e8 87 ac
+    call 01714h                               ; e8 86 ac
     xor ah, ah                                ; 30 e4
     or bx, ax                                 ; 09 c3
     mov cx, strict word 0000ah                ; b9 0a 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06a94h                               ; e2 fa
+    loop 06a95h                               ; e2 fa
     add bx, strict byte 00000h                ; 83 c3 00
     adc dx, strict byte 00010h                ; 83 d2 10
     mov ax, strict word 00062h                ; b8 62 00
-    call 01714h                               ; e8 6e ac
+    call 01714h                               ; e8 6d ac
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
     xor al, al                                ; 30 c0
@@ -9651,28 +9648,28 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov cx, strict word 00008h                ; b9 08 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 06ab3h                               ; e2 f8
+    loop 06ab4h                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 01714h                               ; e8 53 ac
+    call 01714h                               ; e8 52 ac
     xor ah, ah                                ; 30 e4
     or word [bp-00ah], ax                     ; 09 46 f6
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     mov word [bp-008h], ax                    ; 89 46 f8
     mov word [bp-00ah], strict word 00000h    ; c7 46 f6 00 00
     mov ax, strict word 00063h                ; b8 63 00
-    call 01714h                               ; e8 3d ac
+    call 01714h                               ; e8 3c ac
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-006h], al                    ; 88 46 fa
     mov ax, word [bp+014h]                    ; 8b 46 14
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe near 06ce7h                          ; 0f 87 00 02
+    jnbe near 06ce8h                          ; 0f 87 00 02
     mov si, ax                                ; 89 c6
     add si, ax                                ; 01 c6
     mov ax, bx                                ; 89 d8
     add ax, strict word 00000h                ; 05 00 00
     mov cx, dx                                ; 89 d1
     adc cx, strict byte 0ffffh                ; 83 d1 ff
-    jmp word [cs:si+0696dh]                   ; 2e ff a4 6d 69
+    jmp word [cs:si+0696eh]                   ; 2e ff a4 6e 69
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
     push strict byte 00009h                   ; 6a 09
@@ -9681,9 +9678,9 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 065c2h                               ; e8 b1 fa
+    call 065c3h                               ; e8 b1 fa
     mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00
-    jmp near 06c84h                           ; e9 68 01
+    jmp near 06c85h                           ; e9 68 01
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push strict byte 0000ah                   ; 6a 0a
@@ -9692,9 +9689,9 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     mov bx, 0fc00h                            ; bb 00 fc
     mov cx, strict word 00009h                ; b9 09 00
-    call 065c2h                               ; e8 8e fa
+    call 065c3h                               ; e8 8e fa
     mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00
-    jmp near 06c84h                           ; e9 45 01
+    jmp near 06c85h                           ; e9 45 01
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push strict byte 00010h                   ; 6a 10
@@ -9703,9 +9700,9 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 065c2h                               ; e8 6c fa
+    call 065c3h                               ; e8 6c fa
     mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00
-    jmp near 06c84h                           ; e9 23 01
+    jmp near 06c85h                           ; e9 23 01
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
     push cx                                   ; 51
@@ -9714,9 +9711,9 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 065c2h                               ; e8 4c fa
+    call 065c3h                               ; e8 4c fa
     mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00
-    jmp near 06c84h                           ; e9 03 01
+    jmp near 06c85h                           ; e9 03 01
     push strict byte 00003h                   ; 6a 03
     push dword 000000000h                     ; 66 6a 00
     push dx                                   ; 52
@@ -9725,9 +9722,9 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov si, word [bp+024h]                    ; 8b 76 24
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 065c2h                               ; e8 2d fa
+    call 065c3h                               ; e8 2d fa
     mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00
-    jmp near 06c84h                           ; e9 e4 00
+    jmp near 06c85h                           ; e9 e4 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push 0fec0h                               ; 68 c0 fe
@@ -9736,9 +9733,9 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fec0h                            ; b9 c0 fe
-    call 065c2h                               ; e8 09 fa
+    call 065c3h                               ; e8 09 fa
     mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00
-    jmp near 06c84h                           ; e9 c0 00
+    jmp near 06c85h                           ; e9 c0 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push 0fee0h                               ; 68 e0 fe
@@ -9747,9 +9744,9 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fee0h                            ; b9 e0 fe
-    call 065c2h                               ; e8 e5 f9
+    call 065c3h                               ; e8 e5 f9
     mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00
-    jmp near 06c84h                           ; e9 9c 00
+    jmp near 06c85h                           ; e9 9c 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push dword 000000000h                     ; 66 6a 00
@@ -9757,19 +9754,19 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 065c2h                               ; e8 c4 f9
+    call 065c3h                               ; e8 c4 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c0bh                          ; 75 07
+    jne short 06c0ch                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06c1fh                           ; 74 14
+    je short 06c20h                           ; 74 14
     mov dword [bp+014h], strict dword 000000009h ; 66 c7 46 14 09 00 00 00
-    jmp short 06c84h                          ; eb 6f
+    jmp short 06c85h                          ; eb 6f
     mov dword [bp+014h], strict dword 000000008h ; 66 c7 46 14 08 00 00 00
-    jmp short 06c84h                          ; eb 65
+    jmp short 06c85h                          ; eb 65
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06c84h                          ; eb 5d
+    jmp short 06c85h                          ; eb 5d
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push dword 000000000h                     ; 66 6a 00
@@ -9777,20 +9774,20 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 065c2h                               ; e8 86 f9
+    call 065c3h                               ; e8 86 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c49h                          ; 75 07
+    jne short 06c4ah                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06c4bh                           ; 74 02
-    jmp short 06c0bh                          ; eb c0
+    je short 06c4ch                           ; 74 02
+    jmp short 06c0ch                          ; eb c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06c84h                          ; eb 31
+    jmp short 06c85h                          ; eb 31
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c5fh                          ; 75 06
+    jne short 06c60h                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 06c84h                           ; 74 25
+    je short 06c85h                           ; 74 25
     push strict byte 00001h                   ; 6a 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
     db  0feh, 0c0h
@@ -9803,51 +9800,51 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 065c2h                               ; e8 46 f9
+    call 065c3h                               ; e8 46 f9
     xor ax, ax                                ; 31 c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
     mov dword [bp+020h], strict dword 0534d4150h ; 66 c7 46 20 50 41 4d 53
     mov dword [bp+01ch], strict dword 000000014h ; 66 c7 46 1c 14 00 00 00
     and byte [bp+028h], 0feh                  ; 80 66 28 fe
-    jmp short 06d11h                          ; eb 77
+    jmp short 06d12h                          ; eb 77
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 01714h                               ; e8 71 aa
+    call 01714h                               ; e8 70 aa
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 01714h                               ; e8 64 aa
+    call 01714h                               ; e8 63 aa
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+01ch], dx                    ; 89 56 1c
     cmp dx, 03c00h                            ; 81 fa 00 3c
-    jbe short 06cc2h                          ; 76 05
+    jbe short 06cc3h                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 01714h                               ; e8 4c aa
+    call 01714h                               ; e8 4b aa
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00034h                ; b8 34 00
-    call 01714h                               ; e8 3f aa
+    call 01714h                               ; e8 3e aa
     xor ah, ah                                ; 30 e4
     or dx, ax                                 ; 09 c2
     mov word [bp+018h], dx                    ; 89 56 18
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov word [bp+020h], ax                    ; 89 46 20
     mov word [bp+014h], dx                    ; 89 56 14
-    jmp short 06d11h                          ; eb 2a
+    jmp short 06d12h                          ; eb 2a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 a7 ac
+    call 01999h                               ; e8 a6 ac
     push word [bp+014h]                       ; ff 76 14
     push word [bp+020h]                       ; ff 76 20
     push 008b4h                               ; 68 b4 08
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 da ac
+    call 019dah                               ; e8 d9 ac
     add sp, strict byte 00008h                ; 83 c4 08
     or byte [bp+028h], 001h                   ; 80 4e 28 01
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -9858,7 +9855,7 @@ _int15_function32:                           ; 0xf6981 LB 0x396
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int15_blkmove:                              ; 0xf6d17 LB 0x1ab
+_int15_blkmove:                              ; 0xf6d18 LB 0x1ab
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9867,7 +9864,7 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     push ax                                   ; 50
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 06596h                               ; e8 71 f8
+    call 06597h                               ; e8 71 f8
     mov di, ax                                ; 89 c7
     mov ax, word [bp+006h]                    ; 8b 46 06
     sal ax, 004h                              ; c1 e0 04
@@ -9877,7 +9874,7 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     shr dx, 00ch                              ; c1 ea 0c
     mov byte [bp-006h], dl                    ; 88 56 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 06d44h                          ; 73 05
+    jnc short 06d45h                          ; 73 05
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
     mov byte [bp-006h], dl                    ; 88 56 fa
@@ -9885,52 +9882,52 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0002fh                ; bb 2f 00
-    call 016e2h                               ; e8 8f a9
+    call 016e2h                               ; e8 8e a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, cx                                ; 89 cb
-    call 016e2h                               ; e8 81 a9
+    call 016e2h                               ; e8 80 a9
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+006h]                    ; 8b 46 06
-    call 016c6h                               ; e8 55 a9
+    call 016c6h                               ; e8 54 a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000dh                ; 83 c2 0d
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, 00093h                            ; bb 93 00
-    call 016c6h                               ; e8 46 a9
+    call 016c6h                               ; e8 45 a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 016e2h                               ; e8 54 a9
+    call 016e2h                               ; e8 53 a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00020h                ; 83 c2 20
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 016e2h                               ; e8 45 a9
+    call 016e2h                               ; e8 44 a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00022h                ; 83 c2 22
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 016e2h                               ; e8 37 a9
+    call 016e2h                               ; e8 36 a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00024h                ; 83 c2 24
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 016c6h                               ; e8 0c a9
+    call 016c6h                               ; e8 0b a9
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00025h                ; 83 c2 25
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, 0009bh                            ; bb 9b 00
-    call 016c6h                               ; e8 fd a8
+    call 016c6h                               ; e8 fc a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00026h                ; 83 c2 26
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 016e2h                               ; e8 0b a9
+    call 016e2h                               ; e8 0a a9
     mov ax, ss                                ; 8c d0
     mov cx, ax                                ; 89 c1
     sal cx, 004h                              ; c1 e1 04
@@ -9940,27 +9937,27 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 016e2h                               ; e8 ef a8
+    call 016e2h                               ; e8 ee a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002ah                ; 83 c2 2a
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, cx                                ; 89 cb
-    call 016e2h                               ; e8 e1 a8
+    call 016e2h                               ; e8 e0 a8
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002ch                ; 83 c2 2c
     mov ax, word [bp+006h]                    ; 8b 46 06
-    call 016c6h                               ; e8 b5 a8
+    call 016c6h                               ; e8 b4 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002dh                ; 83 c2 2d
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov bx, 00093h                            ; bb 93 00
-    call 016c6h                               ; e8 a6 a8
+    call 016c6h                               ; e8 a5 a8
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0002eh                ; 83 c2 2e
     mov ax, word [bp+006h]                    ; 8b 46 06
     xor bx, bx                                ; 31 db
-    call 016e2h                               ; e8 b4 a8
+    call 016e2h                               ; e8 b3 a8
     lea ax, [bp+004h]                         ; 8d 46 04
     mov si, word [bp+00ah]                    ; 8b 76 0a
     mov es, [bp+006h]                         ; 8e 46 06
@@ -9972,7 +9969,7 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     mov ds, ax                                ; 8e d8
     mov word [00467h], sp                     ; 89 26 67 04
     mov [00469h], ss                          ; 8c 16 69 04
-    call 06e4dh                               ; e8 00 00
+    call 06e4eh                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 0001bh                ; 83 c7 1b
     push strict byte 00020h                   ; 6a 20
@@ -9995,7 +9992,7 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     ; xor di, di                                ; 33 ff
     cld                                       ; fc
     rep movsw                                 ; f3 a5
-    call 06e81h                               ; e8 00 00
+    call 06e82h                               ; e8 00 00
     pop ax                                    ; 58
     push 0f000h                               ; 68 00 f0
     add ax, strict byte 00018h                ; 83 c0 18
@@ -10016,7 +10013,7 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     pop eax                                   ; 66 58
     pop DS                                    ; 1f
     mov ax, di                                ; 89 f8
-    call 06596h                               ; e8 e4 f6
+    call 06597h                               ; e8 e4 f6
     sti                                       ; fb
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
@@ -10025,7 +10022,7 @@ _int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_inv_op_handler:                             ; 0xf6ec2 LB 0x195
+_inv_op_handler:                             ; 0xf6ec3 LB 0x195
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10034,11 +10031,11 @@ _inv_op_handler:                             ; 0xf6ec2 LB 0x195
     push ax                                   ; 50
     les bx, [bp+018h]                         ; c4 5e 18
     cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
-    jne short 06ed8h                          ; 75 06
+    jne short 06ed9h                          ; 75 06
     inc word [bp+018h]                        ; ff 46 18
-    jmp near 07050h                           ; e9 78 01
+    jmp near 07051h                           ; e9 78 01
     cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
-    jne near 0704ch                           ; 0f 85 6b 01
+    jne near 0704dh                           ; 0f 85 6b 01
     mov si, 00800h                            ; be 00 08
     xor ax, ax                                ; 31 c0
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -10066,11 +10063,11 @@ _inv_op_handler:                             ; 0xf6ec2 LB 0x195
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f31h                               ; e2 fa
+    loop 06f32h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f3fh                          ; 75 04
+    jne short 06f40h                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f44h                           ; 74 05
+    je short 06f45h                           ; 74 05
     mov word [bp-008h], strict word 00001h    ; c7 46 f8 01 00
     mov es, [bp-006h]                         ; 8e 46 fa
     movzx di, byte [es:si+04ah]               ; 26 0f b6 7c 4a
@@ -10080,11 +10077,11 @@ _inv_op_handler:                             ; 0xf6ec2 LB 0x195
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f59h                               ; e2 fa
+    loop 06f5ah                               ; e2 fa
     cmp di, dx                                ; 39 d7
-    jne short 06f67h                          ; 75 04
+    jne short 06f68h                          ; 75 04
     cmp bx, ax                                ; 39 c3
-    je short 06f6bh                           ; 74 04
+    je short 06f6ch                           ; 74 04
     or byte [bp-008h], 002h                   ; 80 4e f8 02
     push strict byte 00000h                   ; 6a 00
     push 00800h                               ; 68 00 08
@@ -10134,10 +10131,10 @@ _inv_op_handler:                             ; 0xf6ec2 LB 0x195
     lmsw ax                                   ; 0f 01 f0
     mov ax, strict word 00008h                ; b8 08 00
     test cx, strict word 00001h               ; f7 c1 01 00
-    je near 07009h                            ; 0f 84 02 00
+    je near 0700ah                            ; 0f 84 02 00
     mov es, ax                                ; 8e c0
     test cx, strict word 00002h               ; f7 c1 02 00
-    je near 07031h                            ; 0f 84 20 00
+    je near 07032h                            ; 0f 84 20 00
     mov bx, word [word ss:00000h]             ; 36 8b 1e 00 00
     mov word [word ss:00008h], bx             ; 36 89 1e 08 00
     mov bx, word [word ss:00002h]             ; 36 8b 1e 02 00
@@ -10154,141 +10151,141 @@ _inv_op_handler:                             ; 0xf6ec2 LB 0x195
     sub sp, strict byte 00006h                ; 83 ec 06
     mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
     iret                                      ; cf
-    jmp short 07050h                          ; eb 04
+    jmp short 07051h                          ; eb 04
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 0704dh                          ; eb fd
+    jmp short 0704eh                          ; eb fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf7057 LB 0x28
+init_rtc_:                                   ; 0xf7058 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 01731h                               ; e8 cd a6
+    call 01731h                               ; e8 cc a6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01731h                               ; e8 c4 a6
+    call 01731h                               ; e8 c3 a6
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 01714h                               ; e8 a1 a6
+    call 01714h                               ; e8 a0 a6
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 01714h                               ; e8 9b a6
+    call 01714h                               ; e8 9a a6
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf707f LB 0x21
+rtc_updating_:                               ; 0xf7080 LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 07097h                           ; 74 0e
+    je short 07098h                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 01714h                               ; e8 85 a6
+    call 01714h                               ; e8 84 a6
     test AL, strict byte 080h                 ; a8 80
-    jne short 07086h                          ; 75 f3
+    jne short 07087h                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 0709ah                          ; eb 03
+    jmp short 0709bh                          ; eb 03
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-_int70_function:                             ; 0xf70a0 LB 0xbe
+_int70_function:                             ; 0xf70a1 LB 0xbe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push ax                                   ; 50
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 69 a6
+    call 01714h                               ; e8 68 a6
     mov dl, al                                ; 88 c2
     mov byte [bp-004h], al                    ; 88 46 fc
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 01714h                               ; e8 5e a6
+    call 01714h                               ; e8 5d a6
     mov dh, al                                ; 88 c6
     test dl, 060h                             ; f6 c2 60
-    je near 07145h                            ; 0f 84 86 00
+    je near 07146h                            ; 0f 84 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 070c7h                           ; 74 04
+    je short 070c8h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dh, 040h                             ; f6 c6 40
-    je near 07145h                            ; 0f 84 77 00
+    je near 07146h                            ; 0f 84 77 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 e1 a5
+    call 016b8h                               ; e8 e0 a5
     test al, al                               ; 84 c0
-    je short 07145h                           ; 74 6a
+    je short 07146h                           ; 74 6a
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016f0h                               ; e8 0c a6
+    call 016f0h                               ; e8 0b a6
     test dx, dx                               ; 85 d2
-    jne short 07131h                          ; 75 49
+    jne short 07132h                          ; 75 49
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 07131h                          ; 73 44
+    jnc short 07132h                          ; 73 44
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 de a5
+    call 016d4h                               ; e8 dd a5
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 d3 a5
+    call 016d4h                               ; e8 d2 a5
     mov cx, ax                                ; 89 c1
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 b8 a5
+    call 016c6h                               ; e8 b7 a5
     mov al, byte [bp-004h]                    ; 8a 46 fc
     and AL, strict byte 037h                  ; 24 37
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01731h                               ; e8 15 a6
+    call 01731h                               ; e8 14 a6
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 016b8h                               ; e8 95 a5
+    call 016b8h                               ; e8 94 a5
     or AL, strict byte 080h                   ; 0c 80
     movzx bx, al                              ; 0f b6 d8
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 016c6h                               ; e8 97 a5
-    jmp short 07145h                          ; eb 14
+    call 016c6h                               ; e8 96 a5
+    jmp short 07146h                          ; eb 14
     mov bx, ax                                ; 89 c3
     add bx, 0fc2fh                            ; 81 c3 2f fc
     mov cx, dx                                ; 89 d1
     adc cx, strict byte 0ffffh                ; 83 d1 ff
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01702h                               ; e8 bd a5
-    call 0e030h                               ; e8 e8 6e
+    call 01702h                               ; e8 bc a5
+    call 0e030h                               ; e8 e7 6e
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    jne short 071c1h                          ; 75 71
-    sahf                                      ; 9e
-    jno short 07116h                          ; 71 c3
-    jno short 0714ah                          ; 71 f5
-    jno short 0719bh                          ; 71 44
-    jc short 071d5h                           ; 72 7c
-    jc short 0711ah                           ; 72 bf
-    jc short 07173h                           ; 72 16
+    jbe short 071c2h                          ; 76 71
+    lahf                                      ; 9f
+    jno short 07118h                          ; 71 c4
+    jno short 0714ch                          ; 71 f6
+    jno short 0719dh                          ; 71 45
+    jc short 071d7h                           ; 72 7d
+    jc short 0711ch                           ; 72 c0
+    jc short 07175h                           ; 72 17
     db  073h
-_int1a_function:                             ; 0xf715e LB 0x1c8
+_int1a_function:                             ; 0xf715f LB 0x1c8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sti                                       ; fb
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 0719ah                          ; 0f 87 2f 00
+    jnbe near 0719bh                          ; 0f 87 2f 00
     movzx bx, al                              ; 0f b6 d8
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+0714eh]                   ; 2e ff a7 4e 71
+    jmp word [cs:bx+0714fh]                   ; 2e ff a7 4f 71
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10319,41 +10316,41 @@ _int1a_function:                             ; 0xf715e LB 0x1c8
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 0719ah                          ; eb d7
-    call 0707fh                               ; e8 b9 fe
+    jmp short 0719bh                          ; eb d7
+    call 07080h                               ; e8 b9 fe
     test ax, ax                               ; 85 c0
-    je short 071cch                           ; 74 02
-    jmp short 0719ah                          ; eb ce
+    je short 071cdh                           ; 74 02
+    jmp short 0719bh                          ; eb ce
     xor ax, ax                                ; 31 c0
-    call 01714h                               ; e8 43 a5
+    call 01714h                               ; e8 42 a5
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 01714h                               ; e8 3a a5
+    call 01714h                               ; e8 39 a5
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 01714h                               ; e8 31 a5
+    call 01714h                               ; e8 30 a5
     mov bl, al                                ; 88 c3
     mov byte [bp+011h], al                    ; 88 46 11
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 26 a5
+    call 01714h                               ; e8 25 a5
     and AL, strict byte 001h                  ; 24 01
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp short 0723ah                          ; eb 45
-    call 0707fh                               ; e8 87 fe
+    jmp short 0723bh                          ; eb 45
+    call 07080h                               ; e8 87 fe
     test ax, ax                               ; 85 c0
-    je short 071ffh                           ; 74 03
-    call 07057h                               ; e8 58 fe
+    je short 07200h                           ; 74 03
+    call 07058h                               ; e8 58 fe
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     xor ax, ax                                ; 31 c0
-    call 01731h                               ; e8 29 a5
+    call 01731h                               ; e8 28 a5
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00002h                ; b8 02 00
-    call 01731h                               ; e8 1f a5
+    call 01731h                               ; e8 1e a5
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00004h                ; b8 04 00
-    call 01731h                               ; e8 15 a5
+    call 01731h                               ; e8 14 a5
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 f2 a4
+    call 01714h                               ; e8 f1 a4
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
     or bl, 002h                               ; 80 cb 02
@@ -10362,71 +10359,71 @@ _int1a_function:                             ; 0xf715e LB 0x1c8
     or bl, al                                 ; 08 c3
     movzx dx, bl                              ; 0f b6 d3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01731h                               ; e8 f7 a4
+    call 01731h                               ; e8 f6 a4
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp near 0719ah                           ; e9 56 ff
+    jmp near 0719bh                           ; e9 56 ff
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 0707fh                               ; e8 34 fe
+    call 07080h                               ; e8 34 fe
     test ax, ax                               ; 85 c0
-    je short 07252h                           ; 74 03
-    jmp near 0719ah                           ; e9 48 ff
+    je short 07253h                           ; 74 03
+    jmp near 0719bh                           ; e9 48 ff
     mov ax, strict word 00009h                ; b8 09 00
-    call 01714h                               ; e8 bc a4
+    call 01714h                               ; e8 bb a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 01714h                               ; e8 b3 a4
+    call 01714h                               ; e8 b2 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 01714h                               ; e8 aa a4
+    call 01714h                               ; e8 a9 a4
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 01714h                               ; e8 a1 a4
+    call 01714h                               ; e8 a0 a4
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 0719ah                           ; e9 1e ff
-    call 0707fh                               ; e8 00 fe
+    jmp near 0719bh                           ; e9 1e ff
+    call 07080h                               ; e8 00 fe
     test ax, ax                               ; 85 c0
-    je short 07289h                           ; 74 06
-    call 07057h                               ; e8 d1 fd
-    jmp near 0719ah                           ; e9 11 ff
+    je short 0728ah                           ; 74 06
+    call 07058h                               ; e8 d1 fd
+    jmp near 0719bh                           ; e9 11 ff
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00009h                ; b8 09 00
-    call 01731h                               ; e8 9e a4
+    call 01731h                               ; e8 9d a4
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00008h                ; b8 08 00
-    call 01731h                               ; e8 94 a4
+    call 01731h                               ; e8 93 a4
     movzx dx, byte [bp+00eh]                  ; 0f b6 56 0e
     mov ax, strict word 00007h                ; b8 07 00
-    call 01731h                               ; e8 8a a4
+    call 01731h                               ; e8 89 a4
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00032h                ; b8 32 00
-    call 01731h                               ; e8 80 a4
+    call 01731h                               ; e8 7f a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 5d a4
+    call 01714h                               ; e8 5c a4
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 07231h                           ; e9 72 ff
+    jmp near 07232h                           ; e9 72 ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 4f a4
+    call 01714h                               ; e8 4e a4
     mov bl, al                                ; 88 c3
     mov word [bp+012h], strict word 00000h    ; c7 46 12 00 00
     test AL, strict byte 020h                 ; a8 20
-    je short 072d3h                           ; 74 03
-    jmp near 0719ah                           ; e9 c7 fe
-    call 0707fh                               ; e8 a9 fd
+    je short 072d4h                           ; 74 03
+    jmp near 0719bh                           ; e9 c7 fe
+    call 07080h                               ; e8 a9 fd
     test ax, ax                               ; 85 c0
-    je short 072ddh                           ; 74 03
-    call 07057h                               ; e8 7a fd
+    je short 072deh                           ; 74 03
+    call 07058h                               ; e8 7a fd
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00001h                ; b8 01 00
-    call 01731h                               ; e8 4a a4
+    call 01731h                               ; e8 49 a4
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00003h                ; b8 03 00
-    call 01731h                               ; e8 40 a4
+    call 01731h                               ; e8 3f a4
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00005h                ; b8 05 00
-    call 01731h                               ; e8 36 a4
+    call 01731h                               ; e8 35 a4
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10438,15 +10435,15 @@ _int1a_function:                             ; 0xf715e LB 0x1c8
     or AL, strict byte 020h                   ; 0c 20
     movzx dx, al                              ; 0f b6 d0
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01731h                               ; e8 1e a4
-    jmp near 0719ah                           ; e9 84 fe
+    call 01731h                               ; e8 1d a4
+    jmp near 0719bh                           ; e9 84 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 f8 a3
+    call 01714h                               ; e8 f7 a3
     mov bl, al                                ; 88 c3
     and AL, strict byte 057h                  ; 24 57
     movzx dx, al                              ; 0f b6 d0
-    jmp near 07234h                           ; e9 0e ff
-send_to_mouse_ctrl_:                         ; 0xf7326 LB 0x34
+    jmp near 07235h                           ; e9 0e ff
+send_to_mouse_ctrl_:                         ; 0xf7327 LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10457,11 +10454,11 @@ send_to_mouse_ctrl_:                         ; 0xf7326 LB 0x34
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 07345h                           ; 74 0e
+    je short 07346h                           ; 74 0e
     push 008eeh                               ; 68 ee 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 98 a6
+    call 019dah                               ; e8 97 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
     mov dx, strict word 00064h                ; ba 64 00
@@ -10475,7 +10472,7 @@ send_to_mouse_ctrl_:                         ; 0xf7326 LB 0x34
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf735a LB 0x5c
+get_mouse_data_:                             ; 0xf735b LB 0x5c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10490,9 +10487,9 @@ get_mouse_data_:                             ; 0xf735a LB 0x5c
     ; sub ah, ah                                ; 2a e4
     and ax, strict word 00021h                ; 25 21 00
     cmp ax, strict word 00021h                ; 3d 21 00
-    je short 0739ch                           ; 74 27
+    je short 0739dh                           ; 74 27
     test cx, cx                               ; 85 c9
-    je short 0739ch                           ; 74 23
+    je short 0739dh                           ; 74 23
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10508,13 +10505,13 @@ get_mouse_data_:                             ; 0xf735a LB 0x5c
     and dl, 010h                              ; 80 e2 10
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     cmp dx, ax                                ; 39 c2
-    je short 07384h                           ; 74 eb
+    je short 07385h                           ; 74 eb
     dec cx                                    ; 49
-    jmp short 07367h                          ; eb cb
+    jmp short 07368h                          ; eb cb
     test cx, cx                               ; 85 c9
-    jne short 073a4h                          ; 75 04
+    jne short 073a5h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 073afh                          ; eb 0b
+    jmp short 073b0h                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10526,7 +10523,7 @@ get_mouse_data_:                             ; 0xf735a LB 0x5c
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf73b6 LB 0x32
+set_kbd_command_byte_:                       ; 0xf73b7 LB 0x32
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10537,11 +10534,11 @@ set_kbd_command_byte_:                       ; 0xf73b6 LB 0x32
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 073d5h                           ; 74 0e
+    je short 073d6h                           ; 74 0e
     push 008f8h                               ; 68 f8 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 08 a6
+    call 019dah                               ; e8 07 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -10554,13 +10551,13 @@ set_kbd_command_byte_:                       ; 0xf73b6 LB 0x32
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf73e8 LB 0xca
+_int74_function:                             ; 0xf73e9 LB 0xca
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00008h                ; 83 ec 08
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 dd a2
+    call 016d4h                               ; e8 dc a2
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
     mov dx, strict word 00064h                ; ba 64 00
@@ -10569,7 +10566,7 @@ _int74_function:                             ; 0xf73e8 LB 0xca
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne near 0749eh                           ; 0f 85 92 00
+    jne near 0749fh                           ; 0f 85 92 00
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10577,14 +10574,14 @@ _int74_function:                             ; 0xf73e8 LB 0xca
     mov bl, al                                ; 88 c3
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 9c a2
+    call 016b8h                               ; e8 9b a2
     mov byte [bp-006h], al                    ; 88 46 fa
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 91 a2
+    call 016b8h                               ; e8 90 a2
     mov byte [bp-008h], al                    ; 88 46 f8
     test AL, strict byte 080h                 ; a8 80
-    je short 0749eh                           ; 74 70
+    je short 0749fh                           ; 74 70
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 007h                  ; 24 07
     mov byte [bp-002h], al                    ; 88 46 fe
@@ -10595,107 +10592,107 @@ _int74_function:                             ; 0xf73e8 LB 0xca
     movzx dx, al                              ; 0f b6 d0
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 016c6h                               ; e8 7b a2
+    call 016c6h                               ; e8 7a a2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp al, byte [bp-002h]                    ; 3a 46 fe
-    jc short 0748fh                           ; 72 3c
+    jc short 07490h                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 5d a2
+    call 016b8h                               ; e8 5c a2
     xor ah, ah                                ; 30 e4
     mov word [bp+00ch], ax                    ; 89 46 0c
     mov dx, strict word 00029h                ; ba 29 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 50 a2
+    call 016b8h                               ; e8 4f a2
     xor ah, ah                                ; 30 e4
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov dx, strict word 0002ah                ; ba 2a 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 43 a2
+    call 016b8h                               ; e8 42 a2
     xor ah, ah                                ; 30 e4
     mov word [bp+008h], ax                    ; 89 46 08
     xor al, al                                ; 30 c0
     mov word [bp+006h], ax                    ; 89 46 06
     mov byte [bp-006h], ah                    ; 88 66 fa
     test byte [bp-008h], 080h                 ; f6 46 f8 80
-    je short 07492h                           ; 74 0a
+    je short 07493h                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 07492h                          ; eb 03
+    jmp short 07493h                          ; eb 03
     inc byte [bp-006h]                        ; fe 46 fa
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 016c6h                               ; e8 28 a2
+    call 016c6h                               ; e8 27 a2
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    div byte [si+06ch]                        ; f6 74 6c
-    jne short 07496h                          ; 75 ef
-    jne short 07429h                          ; 75 80
-    jbe short 07499h                          ; 76 ee
-    jbe short 074efh                          ; 76 42
-    jne short 074c5h                          ; 75 16
-    jnbe short 0748ch                         ; 77 db
+    div word [si+06dh]                        ; f7 74 6d
+    jne short 07498h                          ; 75 f0
+    jne short 0742bh                          ; 75 81
+    jbe short 0749bh                          ; 76 ef
+    jbe short 074f1h                          ; 76 43
+    jne short 074c7h                          ; 75 17
+    jnbe short 0748eh                         ; 77 dc
     db  077h
-_int15_function_mouse:                       ; 0xf74b2 LB 0x38b
+_int15_function_mouse:                       ; 0xf74b3 LB 0x38b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     sub sp, strict byte 00006h                ; 83 ec 06
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 12 a2
+    call 016d4h                               ; e8 11 a2
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 074d5h                          ; 76 0b
+    jbe short 074d6h                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 07837h                           ; e9 62 03
+    jmp near 07838h                           ; e9 62 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 073b6h                               ; e8 db fe
+    call 073b7h                               ; e8 db fe
     and word [bp+018h], strict byte 0fffeh    ; 83 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov al, byte [bp+012h]                    ; 8a 46 12
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe near 0781eh                          ; 0f 87 32 03
+    jnbe near 0781fh                          ; 0f 87 32 03
     movzx si, al                              ; 0f b6 f0
     add si, si                                ; 01 f6
-    jmp word [cs:si+074a2h]                   ; 2e ff a4 a2 74
+    jmp word [cs:si+074a3h]                   ; 2e ff a4 a3 74
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe near 07829h                          ; 0f 87 2b 03
+    jnbe near 0782ah                          ; 0f 87 2b 03
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 b2 a1
+    call 016b8h                               ; e8 b1 a1
     test AL, strict byte 080h                 ; a8 80
-    jne short 07515h                          ; 75 0b
+    jne short 07516h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 07831h                           ; e9 1c 03
+    jmp near 07832h                           ; e9 1c 03
     cmp byte [bp+00dh], 000h                  ; 80 7e 0d 00
     db  00fh, 094h, 0c0h
     ; sete al                                   ; 0f 94 c0
     add AL, strict byte 0f4h                  ; 04 f4
     xor ah, ah                                ; 30 e4
-    call 07326h                               ; e8 03 fe
+    call 07327h                               ; e8 03 fe
     test al, al                               ; 84 c0
-    jne near 077b7h                           ; 0f 85 8e 02
+    jne near 077b8h                           ; 0f 85 8e 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 29 fe
+    call 0735bh                               ; e8 29 fe
     test al, al                               ; 84 c0
-    je near 07831h                            ; 0f 84 fa 02
+    je near 07832h                            ; 0f 84 fa 02
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    jne near 077b7h                           ; 0f 85 78 02
-    jmp near 07831h                           ; e9 ef 02
+    jne near 077b8h                           ; 0f 85 78 02
+    jmp near 07832h                           ; e9 ef 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 0754dh                           ; 72 04
+    jc short 0754eh                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 07550h                          ; 76 03
-    jmp near 076e3h                           ; e9 93 01
+    jbe short 07551h                          ; 76 03
+    jmp near 076e4h                           ; e9 93 01
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 60 a1
+    call 016b8h                               ; e8 5f a1
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
     ; dec ah                                    ; fe cc
@@ -10704,272 +10701,272 @@ _int15_function_mouse:                       ; 0xf74b2 LB 0x38b
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016c6h                               ; e8 5a a1
+    call 016c6h                               ; e8 59 a1
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 44 a1
+    call 016b8h                               ; e8 43 a1
     and AL, strict byte 0f8h                  ; 24 f8
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 016c6h                               ; e8 45 a1
+    call 016c6h                               ; e8 44 a1
     mov ax, 000ffh                            ; b8 ff 00
-    call 07326h                               ; e8 9f fd
+    call 07327h                               ; e8 9f fd
     test al, al                               ; 84 c0
-    jne near 077b7h                           ; 0f 85 2a 02
+    jne near 077b8h                           ; 0f 85 2a 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0735ah                               ; e8 c5 fd
+    call 0735bh                               ; e8 c5 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-004h], 0feh                  ; 80 7e fc fe
-    jne short 075a8h                          ; 75 0b
+    jne short 075a9h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp near 07831h                           ; e9 89 02
+    jmp near 07832h                           ; e9 89 02
     cmp byte [bp-004h], 0fah                  ; 80 7e fc fa
-    je short 075beh                           ; 74 10
+    je short 075bfh                           ; 74 10
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     push ax                                   ; 50
     push 00903h                               ; 68 03 09
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 1f a4
+    call 019dah                               ; e8 1e a4
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne near 077b7h                           ; 0f 85 f3 01
+    jne near 077b8h                           ; 0f 85 f3 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 8e fd
+    call 0735bh                               ; e8 8e fd
     test al, al                               ; 84 c0
-    jne near 077b7h                           ; 0f 85 e5 01
+    jne near 077b8h                           ; 0f 85 e5 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0735ah                               ; e8 80 fd
+    call 0735bh                               ; e8 80 fd
     test al, al                               ; 84 c0
-    jne near 077b7h                           ; 0f 85 d7 01
+    jne near 077b8h                           ; 0f 85 d7 01
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00ch], al                    ; 88 46 0c
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+00dh], al                    ; 88 46 0d
-    jmp near 07831h                           ; e9 42 02
+    jmp near 07832h                           ; e9 42 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 07606h                           ; 72 10
-    jbe short 07624h                          ; 76 2c
+    jc short 07607h                           ; 72 10
+    jbe short 07625h                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 07636h                           ; 74 3a
+    je short 07637h                           ; 74 3a
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 07630h                           ; 74 30
+    je short 07631h                           ; 74 30
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 0762ah                           ; 74 26
-    jmp short 0763ch                          ; eb 36
+    je short 0762bh                           ; 74 26
+    jmp short 0763dh                          ; eb 36
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0761eh                           ; 74 14
+    je short 0761fh                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 07618h                           ; 74 0a
+    je short 07619h                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 0763ch                          ; 75 2a
+    jne short 0763dh                          ; 75 2a
     mov byte [bp-008h], 00ah                  ; c6 46 f8 0a
-    jmp short 07640h                          ; eb 28
+    jmp short 07641h                          ; eb 28
     mov byte [bp-008h], 014h                  ; c6 46 f8 14
-    jmp short 07640h                          ; eb 22
+    jmp short 07641h                          ; eb 22
     mov byte [bp-008h], 028h                  ; c6 46 f8 28
-    jmp short 07640h                          ; eb 1c
+    jmp short 07641h                          ; eb 1c
     mov byte [bp-008h], 03ch                  ; c6 46 f8 3c
-    jmp short 07640h                          ; eb 16
+    jmp short 07641h                          ; eb 16
     mov byte [bp-008h], 050h                  ; c6 46 f8 50
-    jmp short 07640h                          ; eb 10
+    jmp short 07641h                          ; eb 10
     mov byte [bp-008h], 064h                  ; c6 46 f8 64
-    jmp short 07640h                          ; eb 0a
+    jmp short 07641h                          ; eb 0a
     mov byte [bp-008h], 0c8h                  ; c6 46 f8 c8
-    jmp short 07640h                          ; eb 04
+    jmp short 07641h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jbe short 07675h                          ; 76 2f
+    jbe short 07676h                          ; 76 2f
     mov ax, 000f3h                            ; b8 f3 00
-    call 07326h                               ; e8 da fc
+    call 07327h                               ; e8 da fc
     test al, al                               ; 84 c0
-    jne short 0766ah                          ; 75 1a
+    jne short 0766bh                          ; 75 1a
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0735ah                               ; e8 02 fd
+    call 0735bh                               ; e8 02 fd
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 07326h                               ; e8 c7 fc
+    call 07327h                               ; e8 c7 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0735ah                               ; e8 f3 fc
-    jmp near 07831h                           ; e9 c7 01
+    call 0735bh                               ; e8 f3 fc
+    jmp near 07832h                           ; e9 c7 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07831h                           ; e9 bc 01
+    jmp near 07832h                           ; e9 bc 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp near 07831h                           ; e9 b1 01
+    jmp near 07832h                           ; e9 b1 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 076e3h                          ; 73 5d
+    jnc short 076e4h                          ; 73 5d
     mov ax, 000e8h                            ; b8 e8 00
-    call 07326h                               ; e8 9a fc
+    call 07327h                               ; e8 9a fc
     test al, al                               ; 84 c0
-    jne short 076d8h                          ; 75 48
+    jne short 076d9h                          ; 75 48
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 c2 fc
+    call 0735bh                               ; e8 c2 fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 076aeh                           ; 74 10
+    je short 076afh                           ; 74 10
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 2f a3
+    call 019dah                               ; e8 2e a3
     add sp, strict byte 00006h                ; 83 c4 06
     movzx ax, byte [bp+00dh]                  ; 0f b6 46 0d
-    call 07326h                               ; e8 71 fc
+    call 07327h                               ; e8 71 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 9d fc
+    call 0735bh                               ; e8 9d fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je near 07831h                            ; 0f 84 6c 01
+    je near 07832h                            ; 0f 84 6c 01
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 08 a3
+    call 019dah                               ; e8 07 a3
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07831h                           ; e9 59 01
+    jmp near 07832h                           ; e9 59 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07831h                           ; e9 4e 01
+    jmp near 07832h                           ; e9 4e 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp near 07831h                           ; e9 43 01
+    jmp near 07832h                           ; e9 43 01
     mov ax, 000f2h                            ; b8 f2 00
-    call 07326h                               ; e8 32 fc
+    call 07327h                               ; e8 32 fc
     test al, al                               ; 84 c0
-    jne short 0770bh                          ; 75 13
+    jne short 0770ch                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 5a fc
+    call 0735bh                               ; e8 5a fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0735ah                               ; e8 52 fc
-    jmp near 075e6h                           ; e9 db fe
+    call 0735bh                               ; e8 52 fc
+    jmp near 075e7h                           ; e9 db fe
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07831h                           ; e9 1b 01
+    jmp near 07832h                           ; e9 1b 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 07724h                          ; 76 07
+    jbe short 07725h                          ; 76 07
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 0778dh                          ; 76 6c
-    jmp near 077c1h                           ; e9 9d 00
+    jbe short 0778eh                          ; 76 6c
+    jmp near 077c2h                           ; e9 9d 00
     mov ax, 000e9h                            ; b8 e9 00
-    call 07326h                               ; e8 fc fb
+    call 07327h                               ; e8 fc fb
     test al, al                               ; 84 c0
-    jne near 077b7h                           ; 0f 85 87 00
+    jne near 077b8h                           ; 0f 85 87 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 22 fc
+    call 0735bh                               ; e8 22 fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07750h                           ; 74 10
+    je short 07751h                           ; 74 10
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     push ax                                   ; 50
     push 0092eh                               ; 68 2e 09
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 8d a2
+    call 019dah                               ; e8 8c a2
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 077b7h                          ; 75 63
+    jne short 077b8h                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 fe fb
+    call 0735bh                               ; e8 fe fb
     test al, al                               ; 84 c0
-    jne short 077b7h                          ; 75 57
+    jne short 077b8h                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0735ah                               ; e8 f2 fb
+    call 0735bh                               ; e8 f2 fb
     test al, al                               ; 84 c0
-    jne short 077b7h                          ; 75 4b
+    jne short 077b8h                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0735ah                               ; e8 e6 fb
+    call 0735bh                               ; e8 e6 fb
     test al, al                               ; 84 c0
-    jne short 077b7h                          ; 75 3f
+    jne short 077b8h                          ; 75 3f
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00ch], al                    ; 88 46 0c
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+010h], al                    ; 88 46 10
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp near 07831h                           ; e9 a4 00
+    jmp near 07832h                           ; e9 a4 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 07796h                          ; 75 05
+    jne short 07797h                          ; 75 05
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 07799h                          ; eb 03
+    jmp short 0779ah                          ; eb 03
     mov ax, 000e7h                            ; b8 e7 00
-    call 07326h                               ; e8 8a fb
+    call 07327h                               ; e8 8a fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 077b1h                          ; 75 0f
+    jne short 077b2h                          ; 75 0f
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0735ah                               ; e8 b0 fb
+    call 0735bh                               ; e8 b0 fb
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
     db  00fh, 095h, 0c1h
     ; setne cl                                  ; 0f 95 c1
     test cl, cl                               ; 84 c9
-    je near 07831h                            ; 0f 84 7a 00
+    je near 07832h                            ; 0f 84 7a 00
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 07831h                          ; eb 70
+    jmp short 07832h                          ; eb 70
     movzx ax, byte [bp+00dh]                  ; 0f b6 46 0d
     push ax                                   ; 50
     push 0095ah                               ; 68 5a 09
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 0c a2
+    call 019dah                               ; e8 0b a2
     add sp, strict byte 00006h                ; 83 c4 06
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp short 07831h                          ; eb 56
+    jmp short 07832h                          ; eb 56
     mov si, word [bp+00ch]                    ; 8b 76 0c
     mov bx, si                                ; 89 f3
     mov dx, strict word 00022h                ; ba 22 00
     mov ax, cx                                ; 89 c8
-    call 016e2h                               ; e8 fa 9e
+    call 016e2h                               ; e8 f9 9e
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, strict word 00024h                ; ba 24 00
     mov ax, cx                                ; 89 c8
-    call 016e2h                               ; e8 ef 9e
+    call 016e2h                               ; e8 ee 9e
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 bd 9e
+    call 016b8h                               ; e8 bc 9e
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 0780fh                          ; 75 0e
+    jne short 07810h                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 0780fh                          ; 75 08
+    jne short 07810h                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 07811h                           ; 74 06
+    je short 07812h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 07811h                          ; eb 02
+    jmp short 07812h                          ; eb 02
     or AL, strict byte 080h                   ; 0c 80
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016c6h                               ; e8 aa 9e
-    jmp short 07831h                          ; eb 13
+    call 016c6h                               ; e8 a9 9e
+    jmp short 07832h                          ; eb 13
     push 00974h                               ; 68 74 09
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 b4 a1
+    call 019dah                               ; e8 b3 a1
     add sp, strict byte 00004h                ; 83 c4 04
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
     mov ax, strict word 00047h                ; b8 47 00
-    call 073b6h                               ; e8 7f fb
+    call 073b7h                               ; e8 7f fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf783d LB 0xb3
+_int17_function:                             ; 0xf783e LB 0xb3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10979,24 +10976,24 @@ _int17_function:                             ; 0xf783d LB 0xb3
     add dx, dx                                ; 01 d2
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 83 9e
+    call 016d4h                               ; e8 82 9e
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc near 078e6h                           ; 0f 83 89 00
+    jnc near 078e7h                           ; 0f 83 89 00
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc near 078e6h                           ; 0f 83 7f 00
+    jnc near 078e7h                           ; 0f 83 7f 00
     test bx, bx                               ; 85 db
-    jbe near 078e6h                           ; 0f 86 79 00
+    jbe near 078e7h                           ; 0f 86 79 00
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00078h                ; 83 c2 78
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 40 9e
+    call 016b8h                               ; e8 3f 9e
     movzx cx, al                              ; 0f b6 c8
     sal cx, 008h                              ; c1 e1 08
     cmp byte [bp+013h], 000h                  ; 80 7e 13 00
-    jne short 078b1h                          ; 75 2d
+    jne short 078b2h                          ; 75 2d
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11016,13 +11013,13 @@ _int17_function:                             ; 0xf783d LB 0xb3
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 078b1h                           ; 74 07
+    je short 078b2h                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 078b1h                           ; 74 03
+    je short 078b2h                           ; 74 03
     dec cx                                    ; 49
-    jmp short 078a0h                          ; eb ef
+    jmp short 078a1h                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 078cdh                          ; 75 16
+    jne short 078ceh                          ; 75 16
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -11041,16 +11038,16 @@ _int17_function:                             ; 0xf783d LB 0xb3
     xor AL, strict byte 048h                  ; 34 48
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 078e0h                          ; 75 04
+    jne short 078e1h                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 078eah                          ; eb 04
+    jmp short 078ebh                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-wait_:                                       ; 0xf78f0 LB 0xb2
+wait_:                                       ; 0xf78f1 LB 0xb2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11068,28 +11065,28 @@ wait_:                                       ; 0xf78f0 LB 0xb2
     xor cx, cx                                ; 31 c9
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 016f0h                               ; e8 dd 9d
+    call 016f0h                               ; e8 dc 9d
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov bx, dx                                ; 89 d3
     hlt                                       ; f4
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 016f0h                               ; e8 cf 9d
+    call 016f0h                               ; e8 ce 9d
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 07931h                         ; 77 07
-    jne short 07938h                          ; 75 0c
+    jnbe short 07932h                         ; 77 07
+    jne short 07939h                          ; 75 0c
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jbe short 07938h                          ; 76 07
+    jbe short 07939h                          ; 76 07
     sub ax, word [bp-00eh]                    ; 2b 46 f2
     sbb dx, bx                                ; 19 da
-    jmp short 07943h                          ; eb 0b
+    jmp short 07944h                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 07943h                           ; 72 07
-    jne short 07947h                          ; 75 09
+    jc short 07944h                           ; 72 07
+    jne short 07948h                          ; 75 09
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jnc short 07947h                          ; 73 04
+    jnc short 07948h                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -11097,13 +11094,13 @@ wait_:                                       ; 0xf78f0 LB 0xb2
     mov bx, di                                ; 89 fb
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je near 0795dh                            ; 0f 84 05 00
+    je near 0795eh                            ; 0f 84 05 00
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 0795fh                           ; e9 02 00
+    jmp near 07960h                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 07987h                           ; 74 24
+    je short 07988h                           ; 74 24
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     int 016h                                  ; cd 16
@@ -11114,17 +11111,17 @@ wait_:                                       ; 0xf78f0 LB 0xb2
     push ax                                   ; 50
     push 00996h                               ; 68 96 09
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 60 a0
+    call 019dah                               ; e8 5f a0
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 07987h                           ; 74 04
+    je short 07988h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 07999h                          ; eb 12
+    jmp short 0799ah                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 07918h                         ; 7f 8d
-    jne short 07991h                          ; 75 04
+    jnle short 07919h                         ; 7f 8d
+    jne short 07992h                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 07918h                         ; 77 87
+    jnbe short 07919h                         ; 77 87
     mov ax, word [bp-010h]                    ; 8b 46 f0
     push ax                                   ; 50
     popfw                                     ; 9d
@@ -11136,7 +11133,7 @@ wait_:                                       ; 0xf78f0 LB 0xb2
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf79a2 LB 0x16
+read_logo_byte_:                             ; 0xf79a3 LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11151,7 +11148,7 @@ read_logo_byte_:                             ; 0xf79a2 LB 0x16
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf79b8 LB 0x14
+read_logo_word_:                             ; 0xf79b9 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11164,7 +11161,7 @@ read_logo_word_:                             ; 0xf79b8 LB 0x14
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf79cc LB 0x130
+print_detected_harddisks_:                   ; 0xf79cd LB 0x130
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11176,29 +11173,29 @@ print_detected_harddisks_:                   ; 0xf79cc LB 0x130
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 f5 9c
+    call 016d4h                               ; e8 f4 9c
     mov si, ax                                ; 89 c6
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
     mov dx, 00304h                            ; ba 04 03
-    call 016b8h                               ; e8 c9 9c
+    call 016b8h                               ; e8 c8 9c
     mov byte [bp-00eh], al                    ; 88 46 f2
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp-00eh]                    ; 3a 5e f2
-    jnc near 07aceh                           ; 0f 83 d3 00
+    jnc near 07acfh                           ; 0f 83 d3 00
     movzx dx, bl                              ; 0f b6 d3
     add dx, 00305h                            ; 81 c2 05 03
     mov ax, si                                ; 89 f0
-    call 016b8h                               ; e8 b1 9c
+    call 016b8h                               ; e8 b0 9c
     mov bh, al                                ; 88 c7
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 07a31h                           ; 72 24
+    jc short 07a32h                           ; 72 24
     test cl, cl                               ; 84 c9
-    jne short 07a1eh                          ; 75 0d
+    jne short 07a1fh                          ; 75 0d
     push 009a7h                               ; 68 a7 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 c1 9f
+    call 019dah                               ; e8 c0 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     movzx ax, bl                              ; 0f b6 c3
@@ -11206,36 +11203,36 @@ print_detected_harddisks_:                   ; 0xf79cc LB 0x130
     push ax                                   ; 50
     push 009bch                               ; 68 bc 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 af 9f
+    call 019dah                               ; e8 ae 9f
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07ac9h                           ; e9 98 00
+    jmp near 07acah                           ; e9 98 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 07a48h                           ; 72 13
+    jc short 07a49h                           ; 72 13
     test ch, ch                               ; 84 ed
-    jne short 07a46h                          ; 75 0d
+    jne short 07a47h                          ; 75 0d
     push 009cfh                               ; 68 cf 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 99 9f
+    call 019dah                               ; e8 98 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
-    jmp short 07a1eh                          ; eb d6
+    jmp short 07a1fh                          ; eb d6
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 07a63h                          ; 73 17
+    jnc short 07a64h                          ; 73 17
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07a63h                          ; 75 11
+    jne short 07a64h                          ; 75 11
     push 009e4h                               ; 68 e4 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 80 9f
+    call 019dah                               ; e8 7f 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07a79h                          ; eb 16
+    jmp short 07a7ah                          ; eb 16
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07a79h                           ; 72 11
+    jc short 07a7ah                           ; 72 11
     test cl, cl                               ; 84 c9
-    jne short 07a79h                          ; 75 0d
+    jne short 07a7ah                          ; 75 0d
     push 009f6h                               ; 68 f6 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 66 9f
+    call 019dah                               ; e8 65 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     movzx ax, bl                              ; 0f b6 c3
@@ -11243,10 +11240,10 @@ print_detected_harddisks_:                   ; 0xf79cc LB 0x130
     push ax                                   ; 50
     push 00a0ah                               ; 68 0a 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 54 9f
+    call 019dah                               ; e8 53 9f
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07a91h                           ; 72 03
+    jc short 07a92h                           ; 72 03
     sub bh, 004h                              ; 80 ef 04
     movzx ax, bh                              ; 0f b6 c7
     cwd                                       ; 99
@@ -11254,41 +11251,41 @@ print_detected_harddisks_:                   ; 0xf79cc LB 0x130
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07aa2h                           ; 74 05
+    je short 07aa3h                           ; 74 05
     push 00a14h                               ; 68 14 0a
-    jmp short 07aa5h                          ; eb 03
+    jmp short 07aa6h                          ; eb 03
     push 00a1fh                               ; 68 1f 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 30 9f
+    call 019dah                               ; e8 2f 9f
     add sp, strict byte 00004h                ; 83 c4 04
     movzx ax, bh                              ; 0f b6 c7
     mov di, strict word 00002h                ; bf 02 00
     cwd                                       ; 99
     idiv di                                   ; f7 ff
     test dx, dx                               ; 85 d2
-    je short 07abfh                           ; 74 05
+    je short 07ac0h                           ; 74 05
     push 00a28h                               ; 68 28 0a
-    jmp short 07ac2h                          ; eb 03
+    jmp short 07ac3h                          ; eb 03
     push 00a2eh                               ; 68 2e 0a
     push di                                   ; 57
-    call 019dah                               ; e8 14 9f
+    call 019dah                               ; e8 13 9f
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp near 079f4h                           ; e9 26 ff
+    jmp near 079f5h                           ; e9 26 ff
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07ae7h                          ; 75 13
+    jne short 07ae8h                          ; 75 13
     test cl, cl                               ; 84 c9
-    jne short 07ae7h                          ; 75 0f
+    jne short 07ae8h                          ; 75 0f
     test ch, ch                               ; 84 ed
-    jne short 07ae7h                          ; 75 0b
+    jne short 07ae8h                          ; 75 0b
     push 00a35h                               ; 68 35 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 f6 9e
+    call 019dah                               ; e8 f5 9e
     add sp, strict byte 00004h                ; 83 c4 04
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 eb 9e
+    call 019dah                               ; e8 ea 9e
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -11298,7 +11295,7 @@ print_detected_harddisks_:                   ; 0xf79cc LB 0x130
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf7afc LB 0x28
+get_boot_drive_:                             ; 0xf7afd LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11306,12 +11303,12 @@ get_boot_drive_:                             ; 0xf7afc LB 0x28
     mov bl, al                                ; 88 c3
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 c8 9b
+    call 016d4h                               ; e8 c7 9b
     mov dx, 00304h                            ; ba 04 03
-    call 016b8h                               ; e8 a6 9b
+    call 016b8h                               ; e8 a5 9b
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 07b1bh                           ; 72 02
+    jc short 07b1ch                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11319,7 +11316,7 @@ get_boot_drive_:                             ; 0xf7afc LB 0x28
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf7b24 LB 0x224
+show_logo_:                                  ; 0xf7b25 LB 0x224
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11330,7 +11327,7 @@ show_logo_:                                  ; 0xf7b24 LB 0x224
     sub sp, strict byte 0000ch                ; 83 ec 0c
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 9c 9b
+    call 016d4h                               ; e8 9b 9b
     mov si, ax                                ; 89 c6
     xor cl, cl                                ; 30 c9
     xor dx, dx                                ; 31 d2
@@ -11341,9 +11338,9 @@ show_logo_:                                  ; 0xf7b24 LB 0x224
     mov AL, strict byte 048h                  ; b0 48
     out strict byte 040h, AL                  ; e6 40
     movzx ax, dl                              ; 0f b6 c2
-    call 079b8h                               ; e8 68 fe
+    call 079b9h                               ; e8 68 fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne near 07c28h                           ; 0f 85 d1 00
+    jne near 07c29h                           ; 0f 85 d1 00
     push SS                                   ; 16
     pop ES                                    ; 07
     lea di, [bp-016h]                         ; 8d 7e ea
@@ -11351,119 +11348,119 @@ show_logo_:                                  ; 0xf7b24 LB 0x224
     int 010h                                  ; cd 10
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jne near 07c28h                           ; 0f 85 bd 00
+    jne near 07c29h                           ; 0f 85 bd 00
     mov al, dl                                ; 88 d0
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 079a2h                               ; e8 2e fe
+    call 079a3h                               ; e8 2e fe
     mov ch, al                                ; 88 c5
     mov byte [bp-00ch], al                    ; 88 46 f4
     mov al, dl                                ; 88 d0
     add AL, strict byte 005h                  ; 04 05
     xor ah, ah                                ; 30 e4
-    call 079a2h                               ; e8 20 fe
+    call 079a3h                               ; e8 20 fe
     mov dh, al                                ; 88 c6
     mov byte [bp-010h], al                    ; 88 46 f0
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 079b8h                               ; e8 28 fe
+    call 079b9h                               ; e8 28 fe
     mov bx, ax                                ; 89 c3
     mov word [bp-014h], ax                    ; 89 46 ec
     mov al, dl                                ; 88 d0
     add AL, strict byte 006h                  ; 04 06
     xor ah, ah                                ; 30 e4
-    call 079a2h                               ; e8 04 fe
+    call 079a3h                               ; e8 04 fe
     mov byte [bp-012h], al                    ; 88 46 ee
     test ch, ch                               ; 84 ed
-    jne short 07bafh                          ; 75 0a
+    jne short 07bb0h                          ; 75 0a
     test dh, dh                               ; 84 f6
-    jne short 07bafh                          ; 75 06
+    jne short 07bb0h                          ; 75 06
     test bx, bx                               ; 85 db
-    je near 07c28h                            ; 0f 84 79 00
+    je near 07c29h                            ; 0f 84 79 00
     mov bx, 00142h                            ; bb 42 01
     mov ax, 04f02h                            ; b8 02 4f
     int 010h                                  ; cd 10
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 07be0h                           ; 74 23
+    je short 07be1h                           ; 74 23
     xor bx, bx                                ; 31 db
-    jmp short 07bc7h                          ; eb 06
+    jmp short 07bc8h                          ; eb 06
     inc bx                                    ; 43
     cmp bx, strict byte 00010h                ; 83 fb 10
-    jnbe short 07be7h                         ; 77 20
+    jnbe short 07be8h                         ; 77 20
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 078f0h                               ; e8 18 fd
+    call 078f1h                               ; e8 18 fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bc1h                          ; 75 e5
+    jne short 07bc2h                          ; 75 e5
     mov CL, strict byte 001h                  ; b1 01
-    jmp short 07be7h                          ; eb 07
+    jmp short 07be8h                          ; eb 07
     mov ax, 00210h                            ; b8 10 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     test cl, cl                               ; 84 c9
-    jne short 07bfdh                          ; 75 12
+    jne short 07bfeh                          ; 75 12
     mov ax, word [bp-014h]                    ; 8b 46 ec
     shr ax, 004h                              ; c1 e8 04
     mov dx, strict word 00001h                ; ba 01 00
-    call 078f0h                               ; e8 f9 fc
+    call 078f1h                               ; e8 f9 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bfdh                          ; 75 02
+    jne short 07bfeh                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    je short 07c28h                           ; 74 25
+    je short 07c29h                           ; 74 25
     test cl, cl                               ; 84 c9
-    jne short 07c28h                          ; 75 21
+    jne short 07c29h                          ; 75 21
     mov bx, strict word 00010h                ; bb 10 00
-    jmp short 07c11h                          ; eb 05
+    jmp short 07c12h                          ; eb 05
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 07c28h                          ; 76 17
+    jbe short 07c29h                          ; 76 17
     mov ax, bx                                ; 89 d8
     or ah, 002h                               ; 80 cc 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 078f0h                               ; e8 ce fc
+    call 078f1h                               ; e8 ce fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c0ch                          ; 75 e6
+    jne short 07c0dh                          ; 75 e6
     mov CL, strict byte 001h                  ; b1 01
     xor bx, bx                                ; 31 db
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 016c6h                               ; e8 94 9a
+    call 016c6h                               ; e8 93 9a
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    je near 07d29h                            ; 0f 84 e9 00
+    je near 07d2ah                            ; 0f 84 e9 00
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07c76h                          ; 75 30
+    jne short 07c77h                          ; 75 30
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    jne short 07c76h                          ; 75 2a
+    jne short 07c77h                          ; 75 2a
     cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    jne short 07c76h                          ; 75 24
+    jne short 07c77h                          ; 75 24
     cmp byte [bp-012h], 002h                  ; 80 7e ee 02
-    jne short 07c63h                          ; 75 0b
+    jne short 07c64h                          ; 75 0b
     push 00a4bh                               ; 68 4b 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 7a 9d
+    call 019dah                               ; e8 79 9d
     add sp, strict byte 00004h                ; 83 c4 04
     test cl, cl                               ; 84 c9
-    jne short 07c76h                          ; 75 0f
+    jne short 07c77h                          ; 75 0f
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 078f0h                               ; e8 80 fc
+    call 078f1h                               ; e8 80 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c76h                          ; 75 02
+    jne short 07c77h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je near 07d29h                            ; 0f 84 ad 00
+    je near 07d2ah                            ; 0f 84 ad 00
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     mov ax, 00100h                            ; b8 00 01
     mov cx, 01000h                            ; b9 00 10
@@ -11482,54 +11479,54 @@ show_logo_:                                  ; 0xf7b24 LB 0x224
     int 010h                                  ; cd 10
     push 00a6dh                               ; 68 6d 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 35 9d
+    call 019dah                               ; e8 34 9d
     add sp, strict byte 00004h                ; 83 c4 04
-    call 079cch                               ; e8 21 fd
+    call 079cdh                               ; e8 21 fd
     push 00ab1h                               ; 68 b1 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 27 9d
+    call 019dah                               ; e8 26 9d
     add sp, strict byte 00004h                ; 83 c4 04
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 078f0h                               ; e8 31 fc
+    call 078f1h                               ; e8 31 fc
     mov bl, al                                ; 88 c3
     test al, al                               ; 84 c0
-    je short 07cb6h                           ; 74 f1
+    je short 07cb7h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 07d17h                           ; 74 4e
+    je short 07d18h                           ; 74 4e
     cmp bl, 002h                              ; 80 fb 02
-    jc short 07cf0h                           ; 72 22
+    jc short 07cf1h                           ; 72 22
     cmp bl, 009h                              ; 80 fb 09
-    jnbe short 07cf0h                         ; 77 1d
+    jnbe short 07cf1h                         ; 77 1d
     movzx ax, bl                              ; 0f b6 c3
-    call 07afch                               ; e8 23 fe
+    call 07afdh                               ; e8 23 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 07cdfh                          ; 75 02
-    jmp short 07cb6h                          ; eb d7
+    jne short 07ce0h                          ; 75 02
+    jmp short 07cb7h                          ; eb d7
     movzx bx, al                              ; 0f b6 d8
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, si                                ; 89 f0
-    call 016c6h                               ; e8 dc 99
+    call 016c6h                               ; e8 db 99
     mov byte [bp-00eh], 002h                  ; c6 46 f2 02
-    jmp short 07d17h                          ; eb 27
+    jmp short 07d18h                          ; eb 27
     cmp bl, 02eh                              ; 80 fb 2e
-    je short 07d05h                           ; 74 10
+    je short 07d06h                           ; 74 10
     cmp bl, 026h                              ; 80 fb 26
-    je short 07d0bh                           ; 74 11
+    je short 07d0ch                           ; 74 11
     cmp bl, 021h                              ; 80 fb 21
-    jne short 07d11h                          ; 75 12
+    jne short 07d12h                          ; 75 12
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07d17h                          ; eb 12
+    jmp short 07d18h                          ; eb 12
     mov byte [bp-00eh], 003h                  ; c6 46 f2 03
-    jmp short 07d17h                          ; eb 0c
+    jmp short 07d18h                          ; eb 0c
     mov byte [bp-00eh], 004h                  ; c6 46 f2 04
-    jmp short 07d17h                          ; eb 06
+    jmp short 07d18h                          ; eb 06
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 07cb6h                           ; 74 9f
+    je short 07cb7h                           ; 74 9f
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 016c6h                               ; e8 a3 99
+    call 016c6h                               ; e8 a2 99
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
@@ -11542,7 +11539,7 @@ show_logo_:                                  ; 0xf7b24 LB 0x224
     pushad                                    ; 66 60
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 84 70
+    call 0edbfh                               ; e8 83 70
     pop DS                                    ; 1f
     popad                                     ; 66 61
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -11553,14 +11550,14 @@ show_logo_:                                  ; 0xf7b24 LB 0x224
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf7d48 LB 0x67
+delay_boot_:                                 ; 0xf7d49 LB 0x67
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push dx                                   ; 52
     mov dx, ax                                ; 89 c2
     test ax, ax                               ; 85 c0
-    je short 07da8h                           ; 74 55
+    je short 07da9h                           ; 74 55
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
     mov AL, strict byte 0d3h                  ; b0 d3
@@ -11570,24 +11567,24 @@ delay_boot_:                                 ; 0xf7d48 LB 0x67
     push dx                                   ; 52
     push 00afbh                               ; 68 fb 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 72 9c
+    call 019dah                               ; e8 71 9c
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, dx                                ; 89 d3
     test bx, bx                               ; 85 db
-    jbe short 07d88h                          ; 76 17
+    jbe short 07d89h                          ; 76 17
     push bx                                   ; 53
     push 00b19h                               ; 68 19 0b
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 60 9c
+    call 019dah                               ; e8 5f 9c
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 078f0h                               ; e8 6b fb
+    call 078f1h                               ; e8 6b fb
     dec bx                                    ; 4b
-    jmp short 07d6dh                          ; eb e5
+    jmp short 07d6eh                          ; eb e5
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 4a 9c
+    call 019dah                               ; e8 49 9c
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -11598,7 +11595,7 @@ delay_boot_:                                 ; 0xf7d48 LB 0x67
     pushad                                    ; 66 60
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 1a 70
+    call 0edbfh                               ; e8 19 70
     pop DS                                    ; 1f
     popad                                     ; 66 61
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11606,7 +11603,7 @@ delay_boot_:                                 ; 0xf7d48 LB 0x67
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
+scsi_cmd_data_in_:                           ; 0xf7db0 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11622,11 +11619,11 @@ scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07dc5h                          ; 75 f7
+    jne short 07dc6h                          ; 75 f7
     cmp byte [bp+004h], 010h                  ; 80 7e 04 10
-    jne short 07dd8h                          ; 75 04
+    jne short 07dd9h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07ddch                          ; eb 04
+    jmp short 07dddh                          ; eb 04
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     mov di, ax                                ; 89 c7
     mov ax, bx                                ; 89 d8
@@ -11634,7 +11631,7 @@ scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07de6h                               ; e2 fa
+    loop 07de7h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, di                                 ; 09 f9
@@ -11652,28 +11649,28 @@ scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e0bh                               ; e2 fa
+    loop 07e0ch                               ; e2 fa
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 07e2ch                          ; 73 0e
+    jnc short 07e2dh                          ; 73 0e
     les di, [bp-00ah]                         ; c4 7e f6
     add di, cx                                ; 01 cf
     mov al, byte [es:di]                      ; 26 8a 05
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07e16h                          ; eb ea
+    jmp short 07e17h                          ; eb ea
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07e2ch                          ; 75 f7
+    jne short 07e2dh                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07e47h                           ; 74 0e
+    je short 07e48h                           ; 74 0e
     lea dx, [si+003h]                         ; 8d 54 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -11681,12 +11678,12 @@ scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov di, strict word 00004h                ; bf 04 00
-    jmp short 07e79h                          ; eb 32
+    jmp short 07e7ah                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07e56h                          ; 75 06
+    jne short 07e57h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07e70h                          ; 76 1a
+    jbe short 07e71h                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -11695,7 +11692,7 @@ scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07e47h                          ; eb d7
+    jmp short 07e48h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -11706,7 +11703,7 @@ scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
+scsi_cmd_data_out_:                          ; 0xf7e85 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11722,11 +11719,11 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07e9ah                          ; 75 f7
+    jne short 07e9bh                          ; 75 f7
     cmp byte [bp+004h], 010h                  ; 80 7e 04 10
-    jne short 07eadh                          ; 75 04
+    jne short 07eaeh                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07eb1h                          ; eb 04
+    jmp short 07eb2h                          ; eb 04
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     mov si, ax                                ; 89 c6
     mov ax, bx                                ; 89 d8
@@ -11734,7 +11731,7 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07ebbh                               ; e2 fa
+    loop 07ebch                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, si                                 ; 09 f1
@@ -11752,25 +11749,25 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07ee0h                               ; e2 fa
+    loop 07ee1h                               ; e2 fa
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     cmp cx, ax                                ; 39 c1
-    jnc short 07f01h                          ; 73 0e
+    jnc short 07f02h                          ; 73 0e
     les si, [bp-00ah]                         ; c4 76 f6
     add si, cx                                ; 01 ce
     mov al, byte [es:si]                      ; 26 8a 04
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07eebh                          ; eb ea
+    jmp short 07eech                          ; eb ea
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07f10h                          ; 75 06
+    jne short 07f11h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07f2bh                          ; 76 1b
+    jbe short 07f2ch                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -11780,7 +11777,7 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07f01h                          ; eb d6
+    jmp short 07f02h                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -11790,9 +11787,9 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07f33h                          ; 75 f7
+    jne short 07f34h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07f4eh                           ; 74 0e
+    je short 07f4fh                           ; 74 0e
     lea dx, [di+003h]                         ; 8d 55 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -11800,14 +11797,14 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 07f50h                          ; eb 02
+    jmp short 07f51h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
- at scsi_read_sectors:                          ; 0xf7f59 LB 0xdb
+ at scsi_read_sectors:                          ; 0xf7f5a LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11819,13 +11816,13 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     sub AL, strict byte 008h                  ; 2c 08
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 004h                  ; 3c 04
-    jbe short 07f87h                          ; 76 13
+    jbe short 07f88h                          ; 76 13
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     push 00b1eh                               ; 68 1e 0b
     push 00b30h                               ; 68 30 0b
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 56 9a
+    call 019dah                               ; e8 55 9a
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
@@ -11864,7 +11861,7 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     mov cx, strict word 00009h                ; b9 09 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 07ff0h                               ; e2 f8
+    loop 07ff1h                               ; e2 f8
     push dword [bp-00ah]                      ; 66 ff 76 f6
     db  066h, 026h, 0ffh, 074h, 008h
     ; push dword [es:si+008h]                   ; 66 26 ff 74 08
@@ -11872,10 +11869,10 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07dafh                               ; e8 a2 fd
+    call 07db0h                               ; e8 a2 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 08028h                          ; 75 15
+    jne short 08029h                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov dx, word [bp-00ah]                    ; 8b 56 f6
@@ -11888,7 +11885,7 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at scsi_write_sectors:                         ; 0xf8034 LB 0xdb
+ at scsi_write_sectors:                         ; 0xf8035 LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11900,13 +11897,13 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     sub AL, strict byte 008h                  ; 2c 08
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 004h                  ; 3c 04
-    jbe short 08062h                          ; 76 13
+    jbe short 08063h                          ; 76 13
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     push 00b4fh                               ; 68 4f 0b
     push 00b30h                               ; 68 30 0b
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 7b 99
+    call 019dah                               ; e8 7a 99
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
@@ -11945,7 +11942,7 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     mov cx, strict word 00009h                ; b9 09 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 080cbh                               ; e2 f8
+    loop 080cch                               ; e2 f8
     push dword [bp-00ah]                      ; 66 ff 76 f6
     db  066h, 026h, 0ffh, 074h, 008h
     ; push dword [es:si+008h]                   ; 66 26 ff 74 08
@@ -11953,10 +11950,10 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07e84h                               ; e8 9c fd
+    call 07e85h                               ; e8 9c fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 08103h                          ; 75 15
+    jne short 08104h                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov dx, word [bp-00ah]                    ; 8b 56 f6
@@ -11969,7 +11966,7 @@ scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf810f LB 0x166
+scsi_cmd_packet_:                            ; 0xf8110 LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11981,22 +11978,22 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     mov word [bp-00ah], cx                    ; 89 4e f6
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 a9 95
+    call 016d4h                               ; e8 a8 95
     mov si, 00122h                            ; be 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 08156h                          ; 75 1f
+    jne short 08157h                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 57 98
+    call 01999h                               ; e8 56 98
     push 00b62h                               ; 68 62 0b
     push 00b72h                               ; 68 72 0b
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 8d 98
+    call 019dah                               ; e8 8c 98
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 0826ah                           ; e9 14 01
+    jmp near 0826bh                           ; e9 14 01
     sub di, strict byte 00008h                ; 83 ef 08
     sal di, 002h                              ; c1 e7 02
     sub byte [bp-006h], 002h                  ; 80 6e fa 02
@@ -12010,7 +12007,7 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 08172h                          ; 75 f7
+    jne short 08173h                          ; 75 f7
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, word [bp+004h]                    ; 03 56 04
@@ -12026,7 +12023,7 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0819dh                               ; e2 fa
+    loop 0819eh                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     or cx, ax                                 ; 09 c1
@@ -12044,28 +12041,28 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 081c4h                               ; e2 fa
+    loop 081c5h                               ; e2 fa
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 081e5h                          ; 73 0e
+    jnc short 081e6h                          ; 73 0e
     les di, [bp-00ch]                         ; c4 7e f4
     add di, cx                                ; 01 cf
     mov al, byte [es:di]                      ; 26 8a 05
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 081cfh                          ; eb ea
+    jmp short 081d0h                          ; eb ea
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 081e5h                          ; 75 f7
+    jne short 081e6h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 08200h                           ; 74 0e
+    je short 08201h                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12073,14 +12070,14 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 0826ah                          ; eb 6a
+    jmp short 0826bh                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 0820fh                           ; 74 08
+    je short 08210h                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 0820ch                               ; e2 fd
+    loop 0820dh                               ; e2 fd
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov es, [bp-00eh]                         ; 8e 46 f2
     mov word [es:si+01ah], ax                 ; 26 89 44 1a
@@ -12088,9 +12085,9 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     mov word [es:si+01ch], ax                 ; 26 89 44 1c
     lea ax, [bx+001h]                         ; 8d 47 01
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 08230h                          ; 75 07
+    jne short 08231h                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 0824dh                          ; 76 1d
+    jbe short 0824eh                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+00ch]                         ; c4 7e 0c
@@ -12100,17 +12097,17 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 08220h                          ; eb d3
+    jmp short 08221h                          ; eb d3
     mov dx, ax                                ; 89 c2
     mov cx, word [bp+006h]                    ; 8b 4e 06
     les di, [bp+00ch]                         ; c4 7e 0c
     rep insb                                  ; f3 6c
     mov es, [bp-00eh]                         ; 8e 46 f2
     cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00
-    je short 08268h                           ; 74 07
+    je short 08269h                           ; 74 07
     mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     in AL, DX                                 ; ec
-    loop 08265h                               ; e2 fd
+    loop 08266h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12118,7 +12115,7 @@ scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
+scsi_enumerate_attached_devices_:            ; 0xf8276 LB 0x482
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12130,18 +12127,18 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 49 94
+    call 016d4h                               ; e8 48 94
     mov di, 00122h                            ; bf 22 01
     mov word [bp-02eh], ax                    ; 89 46 d2
     mov word [bp-01eh], strict word 00000h    ; c7 46 e2 00 00
-    jmp near 08679h                           ; e9 e0 03
+    jmp near 0867ah                           ; e9 e0 03
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 086edh                           ; 0f 83 4e 04
+    jnc near 086eeh                           ; 0f 83 4e 04
     mov cx, strict word 00010h                ; b9 10 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-046h]                         ; 8d 46 ba
-    call 09f50h                               ; e8 a4 1c
+    call 09f50h                               ; e8 a3 1c
     mov byte [bp-046h], 09eh                  ; c6 46 ba 9e
     mov byte [bp-045h], 010h                  ; c6 46 bb 10
     mov byte [bp-039h], 020h                  ; c6 46 c7 20
@@ -12154,13 +12151,13 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07dafh                               ; e8 dc fa
+    call 07db0h                               ; e8 dc fa
     test al, al                               ; 84 c0
-    je short 082e5h                           ; 74 0e
+    je short 082e6h                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bcbh                               ; 68 cb 0b
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 f8 96
+    call 019dah                               ; e8 f7 96
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp-00240h]                  ; 8b 86 c0 fd
     mov bx, word [bp-00242h]                  ; 8b 9e be fd
@@ -12190,62 +12187,62 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08333h                               ; e2 fa
+    loop 08334h                               ; e2 fa
     or bx, ax                                 ; 09 c3
     or dx, si                                 ; 09 f2
     movzx ax, byte [bp-0023bh]                ; 0f b6 86 c5 fd
     or bx, ax                                 ; 09 c3
     mov word [bp-024h], bx                    ; 89 5e dc
     test dx, dx                               ; 85 d2
-    jne short 08351h                          ; 75 06
+    jne short 08352h                          ; 75 06
     cmp bx, 00200h                            ; 81 fb 00 02
-    je short 08371h                           ; 74 20
+    je short 08372h                           ; 74 20
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 3d 96
+    call 01999h                               ; e8 3c 96
     push dx                                   ; 52
     push word [bp-024h]                       ; ff 76 dc
     push word [bp-01eh]                       ; ff 76 e2
     push 00beah                               ; 68 ea 0b
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 6f 96
+    call 019dah                               ; e8 6e 96
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 08670h                           ; e9 ff 02
+    jmp near 08671h                           ; e9 ff 02
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08384h                           ; 72 0c
-    jbe short 0838ch                          ; 76 12
+    jc short 08385h                           ; 72 0c
+    jbe short 0838dh                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08394h                           ; 74 16
+    je short 08395h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 08390h                           ; 74 0e
-    jmp short 083ddh                          ; eb 59
+    je short 08391h                           ; 74 0e
+    jmp short 083deh                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 083ddh                          ; 75 55
+    jne short 083deh                          ; 75 55
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 08396h                          ; eb 0a
+    jmp short 08397h                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 08396h                          ; eb 06
+    jmp short 08397h                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 08396h                          ; eb 02
+    jmp short 08397h                          ; eb 02
     mov BL, strict byte 0a8h                  ; b3 a8
     mov al, bl                                ; 88 d8
     add AL, strict byte 007h                  ; 04 07
     movzx cx, al                              ; 0f b6 c8
     mov ax, cx                                ; 89 c8
-    call 01714h                               ; e8 72 93
+    call 01714h                               ; e8 71 93
     test al, al                               ; 84 c0
-    je short 083ddh                           ; 74 37
+    je short 083deh                           ; 74 37
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 01714h                               ; e8 65 93
+    call 01714h                               ; e8 64 93
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     movzx ax, bl                              ; 0f b6 c3
-    call 01714h                               ; e8 59 93
+    call 01714h                               ; e8 58 93
     xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
     cwd                                       ; 99
@@ -12253,40 +12250,40 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 01714h                               ; e8 49 93
+    call 01714h                               ; e8 48 93
     xor ah, ah                                ; 30 e4
     mov word [bp-034h], ax                    ; 89 46 cc
     mov ax, cx                                ; 89 c8
-    call 01714h                               ; e8 3f 93
+    call 01714h                               ; e8 3e 93
     xor ah, ah                                ; 30 e4
     mov word [bp-032h], ax                    ; 89 46 ce
-    jmp near 084c6h                           ; e9 e9 00
+    jmp near 084c7h                           ; e9 e9 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov bx, word [bp-030h]                    ; 8b 5e d0
     mov cx, word [bp-012h]                    ; 8b 4e ee
     mov dx, word [bp-016h]                    ; 8b 56 ea
     mov si, strict word 0000ch                ; be 0c 00
-    call 09f30h                               ; e8 41 1b
+    call 09f30h                               ; e8 40 1b
     mov word [bp-018h], ax                    ; 89 46 e8
     mov word [bp-014h], bx                    ; 89 5e ec
     mov word [bp-036h], cx                    ; 89 4e ca
     mov word [bp-020h], dx                    ; 89 56 e0
     mov ax, word [bp-010h]                    ; 8b 46 f0
     test ax, ax                               ; 85 c0
-    jnbe short 08418h                         ; 77 16
-    jne near 0848bh                           ; 0f 85 85 00
+    jnbe short 08419h                         ; 77 16
+    jne near 0848ch                           ; 0f 85 85 00
     cmp word [bp-030h], strict byte 00000h    ; 83 7e d0 00
-    jnbe short 08418h                         ; 77 0c
-    jne near 0848bh                           ; 0f 85 7b 00
+    jnbe short 08419h                         ; 77 0c
+    jne near 0848ch                           ; 0f 85 7b 00
     cmp word [bp-012h], strict byte 00040h    ; 83 7e ee 40
-    jnbe short 08418h                         ; 77 02
-    jne short 0848bh                          ; 75 73
+    jnbe short 08419h                         ; 77 02
+    jne short 0848ch                          ; 75 73
     mov dword [bp-034h], strict dword 0003f00ffh ; 66 c7 46 cc ff 00 3f 00
     mov bx, word [bp-030h]                    ; 8b 5e d0
     mov cx, word [bp-012h]                    ; 8b 4e ee
     mov dx, word [bp-016h]                    ; 8b 56 ea
     mov si, strict word 00006h                ; be 06 00
-    call 09f30h                               ; e8 01 1b
+    call 09f30h                               ; e8 00 1b
     mov si, word [bp-020h]                    ; 8b 76 e0
     add si, dx                                ; 01 d6
     mov word [bp-02ah], si                    ; 89 76 d6
@@ -12304,7 +12301,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov cx, word [bp-028h]                    ; 8b 4e d8
     mov dx, si                                ; 89 f2
     mov si, strict word 00008h                ; be 08 00
-    call 09f30h                               ; e8 d1 1a
+    call 09f30h                               ; e8 d0 1a
     mov word [bp-022h], bx                    ; 89 5e de
     mov word [bp-02ch], cx                    ; 89 4e d4
     mov word [bp-01ah], dx                    ; 89 56 e6
@@ -12313,31 +12310,31 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov cx, word [bp-028h]                    ; 8b 4e d8
     mov dx, word [bp-02ah]                    ; 8b 56 d6
     mov si, strict word 00010h                ; be 10 00
-    call 09f30h                               ; e8 b6 1a
+    call 09f30h                               ; e8 b5 1a
     mov si, word [bp-01ah]                    ; 8b 76 e6
     add si, dx                                ; 01 d6
     mov dx, word [bp-02ch]                    ; 8b 56 d4
     adc dx, cx                                ; 11 ca
     mov ax, word [bp-022h]                    ; 8b 46 de
     adc ax, bx                                ; 11 d8
-    jmp short 084c6h                          ; eb 3b
+    jmp short 084c7h                          ; eb 3b
     test ax, ax                               ; 85 c0
-    jnbe short 084a1h                         ; 77 12
-    jne short 084abh                          ; 75 1a
+    jnbe short 084a2h                         ; 77 12
+    jne short 084ach                          ; 75 1a
     cmp word [bp-030h], strict byte 00000h    ; 83 7e d0 00
-    jnbe short 084a1h                         ; 77 0a
-    jne short 084abh                          ; 75 12
+    jnbe short 084a2h                         ; 77 0a
+    jne short 084ach                          ; 75 12
     cmp word [bp-012h], strict byte 00020h    ; 83 7e ee 20
-    jnbe short 084a1h                         ; 77 02
-    jne short 084abh                          ; 75 0a
+    jnbe short 084a2h                         ; 77 02
+    jne short 084ach                          ; 75 0a
     mov dword [bp-034h], strict dword 000200080h ; 66 c7 46 cc 80 00 20 00
-    jmp short 084c2h                          ; eb 17
+    jmp short 084c3h                          ; eb 17
     mov dword [bp-034h], strict dword 000200040h ; 66 c7 46 cc 40 00 20 00
     mov bx, word [bp-030h]                    ; 8b 5e d0
     mov cx, word [bp-012h]                    ; 8b 4e ee
     mov dx, word [bp-016h]                    ; 8b 56 ea
     mov si, strict word 0000bh                ; be 0b 00
-    call 09f30h                               ; e8 6e 1a
+    call 09f30h                               ; e8 6d 1a
     mov si, dx                                ; 89 d6
     mov dx, cx                                ; 89 ca
     mov al, byte [bp-00ch]                    ; 8a 46 f4
@@ -12370,18 +12367,18 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov ax, word [bp-032h]                    ; 8b 46 ce
     mov word [es:bx+034h], ax                 ; 26 89 47 34
     test dx, dx                               ; 85 d2
-    jne short 08533h                          ; 75 06
+    jne short 08534h                          ; 75 06
     cmp si, 00400h                            ; 81 fe 00 04
-    jbe short 08541h                          ; 76 0e
+    jbe short 08542h                          ; 76 0e
     mov word [es:bx+02ch], 00400h             ; 26 c7 47 2c 00 04
     mov word [es:bx+032h], 00400h             ; 26 c7 47 32 00 04
-    jmp short 08549h                          ; eb 08
+    jmp short 0854ah                          ; eb 08
     mov word [es:bx+02ch], si                 ; 26 89 77 2c
     mov word [es:bx+032h], si                 ; 26 89 77 32
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 45 94
+    call 01999h                               ; e8 44 94
     push word [bp-010h]                       ; ff 76 f0
     push word [bp-030h]                       ; ff 76 d0
     push word [bp-012h]                       ; ff 76 ee
@@ -12394,7 +12391,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     push ax                                   ; 50
     push 00c18h                               ; 68 18 0c
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 64 94
+    call 019dah                               ; e8 63 94
     add sp, strict byte 00018h                ; 83 c4 18
     movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
     imul bx, bx, strict byte 0001ch           ; 6b db 1c
@@ -12419,25 +12416,25 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov byte [es:di+001e2h], al               ; 26 88 85 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 f2 90
+    call 016b8h                               ; e8 f1 90
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 f2 90
+    call 016c6h                               ; e8 f1 90
     inc byte [bp-00ch]                        ; fe 46 f4
-    jmp near 08665h                           ; e9 8b 00
+    jmp near 08666h                           ; e9 8b 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 b4 93
+    call 01999h                               ; e8 b3 93
     push word [bp-01eh]                       ; ff 76 e2
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     push ax                                   ; 50
     push 00c46h                               ; 68 46 0c
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 e5 93
+    call 019dah                               ; e8 e4 93
     add sp, strict byte 00008h                ; 83 c4 08
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     add AL, strict byte 008h                  ; 04 08
@@ -12478,7 +12475,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov byte [es:di+0022ch], al               ; 26 88 85 2c 02
     inc word [bp-01eh]                        ; ff 46 e2
     cmp word [bp-01eh], strict byte 00010h    ; 83 7e e2 10
-    jnl short 086edh                          ; 7d 74
+    jnl short 086eeh                          ; 7d 74
     mov byte [bp-046h], 012h                  ; c6 46 ba 12
     xor al, al                                ; 30 c0
     mov byte [bp-045h], al                    ; 88 46 bb
@@ -12495,28 +12492,28 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07dafh                               ; e8 05 f7
+    call 07db0h                               ; e8 05 f7
     test al, al                               ; 84 c0
-    je short 086bch                           ; 74 0e
+    je short 086bdh                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bb2h                               ; 68 b2 0b
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 21 93
+    call 019dah                               ; e8 20 93
     add sp, strict byte 00006h                ; 83 c4 06
     mov es, [bp-02eh]                         ; 8e 46 d2
     mov al, byte [es:di+0022ch]               ; 26 8a 85 2c 02
     mov byte [bp-00ch], al                    ; 88 46 f4
     test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
-    jne short 086d7h                          ; 75 09
+    jne short 086d8h                          ; 75 09
     test byte [bp-00246h], 01fh               ; f6 86 ba fd 1f
-    je near 08299h                            ; 0f 84 c2 fb
+    je near 0829ah                            ; 0f 84 c2 fb
     test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
-    jne short 08665h                          ; 75 87
+    jne short 08666h                          ; 75 87
     mov al, byte [bp-00246h]                  ; 8a 86 ba fd
     and AL, strict byte 01fh                  ; 24 1f
     cmp AL, strict byte 005h                  ; 3c 05
-    je near 085dah                            ; 0f 84 f0 fe
-    jmp near 08665h                           ; e9 78 ff
+    je near 085dbh                            ; 0f 84 f0 fe
+    jmp near 08666h                           ; e9 78 ff
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -12525,12 +12522,12 @@ scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf86f7 LB 0x66
+_scsi_init:                                  ; 0xf86f8 LB 0x66
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 d1 8f
+    call 016d4h                               ; e8 d0 8f
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
     mov byte [es:bx+0022ch], 000h             ; 26 c6 87 2c 02 00
@@ -12541,12 +12538,12 @@ _scsi_init:                                  ; 0xf86f7 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08727h                          ; 75 0c
+    jne short 08728h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 08275h                               ; e8 4e fb
+    call 08276h                               ; e8 4e fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
     out DX, AL                                ; ee
@@ -12554,12 +12551,12 @@ _scsi_init:                                  ; 0xf86f7 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08740h                          ; 75 0c
+    jne short 08741h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 08275h                               ; e8 35 fb
+    call 08276h                               ; e8 35 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
     out DX, AL                                ; ee
@@ -12567,16 +12564,16 @@ _scsi_init:                                  ; 0xf86f7 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08759h                          ; 75 0c
+    jne short 0875ah                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 08275h                               ; e8 1c fb
+    call 08276h                               ; e8 1c fb
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf875d LB 0x1b
+ahci_ctrl_extract_bits_:                     ; 0xf875e LB 0x1b
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12584,14 +12581,14 @@ ahci_ctrl_extract_bits_:                     ; 0xf875d LB 0x1b
     and ax, bx                                ; 21 d8
     and dx, cx                                ; 21 ca
     movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
-    jcxz 08773h                               ; e3 06
+    jcxz 08774h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0876dh                               ; e2 fa
+    loop 0876eh                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf8778 LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf8779 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -12602,7 +12599,7 @@ ahci_addr_to_phys_:                          ; 0xf8778 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08786h                               ; e2 fa
+    loop 08787h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -12610,7 +12607,7 @@ ahci_addr_to_phys_:                          ; 0xf8778 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf8796 LB 0x14b
+ahci_port_cmd_sync_:                         ; 0xf8797 LB 0x14b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -12625,7 +12622,7 @@ ahci_port_cmd_sync_:                         ; 0xf8796 LB 0x14b
     mov byte [bp-008h], ah                    ; 88 66 f8
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     cmp ah, 0ffh                              ; 80 fc ff
-    je near 088d9h                            ; 0f 84 20 01
+    je near 088dah                            ; 0f 84 20 01
     movzx dx, byte [es:si+00263h]             ; 26 0f b6 94 63 02
     xor di, di                                ; 31 ff
     or di, 00080h                             ; 81 cf 80 00
@@ -12637,7 +12634,7 @@ ahci_port_cmd_sync_:                         ; 0xf8796 LB 0x14b
     ; mov dword [es:si+004h], strict dword 000000000h ; 66 26 c7 44 04 00 00 00 00
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov dx, cx                                ; 89 ca
-    call 08778h                               ; e8 96 ff
+    call 08779h                               ; e8 96 ff
     mov es, cx                                ; 8e c1
     mov word [es:si+008h], ax                 ; 26 89 44 08
     mov word [es:si+00ah], dx                 ; 26 89 54 0a
@@ -12700,14 +12697,14 @@ ahci_port_cmd_sync_:                         ; 0xf8796 LB 0x14b
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dh, 040h                             ; f6 c6 40
-    jne short 0886fh                          ; 75 04
+    jne short 08870h                          ; 75 04
     test AL, strict byte 001h                 ; a8 01
-    je short 08873h                           ; 74 04
+    je short 08874h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08875h                          ; eb 02
+    jmp short 08876h                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 08843h                           ; 74 ca
+    je short 08844h                           ; 74 ca
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     sal di, 007h                              ; c1 e7 07
     lea ax, [di+00110h]                       ; 8d 85 10 01
@@ -12761,7 +12758,7 @@ ahci_port_cmd_sync_:                         ; 0xf8796 LB 0x14b
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
+ahci_cmd_data_:                              ; 0xf88e2 LB 0x262
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -12786,7 +12783,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     xor bx, bx                                ; 31 db
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09f50h                               ; e8 31 16
+    call 09f50h                               ; e8 30 16
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -12804,7 +12801,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00008h                ; be 08 00
-    call 09f30h                               ; e8 cd 15
+    call 09f30h                               ; e8 cc 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -12815,7 +12812,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00010h                ; be 10 00
-    call 09f30h                               ; e8 a7 15
+    call 09f30h                               ; e8 a6 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     mov byte [es:di+00087h], 040h             ; 26 c6 85 87 00 40
@@ -12827,7 +12824,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00018h                ; be 18 00
-    call 09f30h                               ; e8 7b 15
+    call 09f30h                               ; e8 7a 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -12838,7 +12835,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00020h                ; be 20 00
-    call 09f30h                               ; e8 55 15
+    call 09f30h                               ; e8 54 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -12849,7 +12846,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00028h                ; be 28 00
-    call 09f30h                               ; e8 2f 15
+    call 09f30h                               ; e8 2e 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     mov byte [es:di+0008bh], 000h             ; 26 c6 85 8b 00 00
@@ -12863,7 +12860,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-010h]                    ; 8b 5e f0
     xor cx, cx                                ; 31 c9
-    call 09eb0h                               ; e8 7a 14
+    call 09eb0h                               ; e8 79 14
     push dx                                   ; 52
     push ax                                   ; 50
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -12873,7 +12870,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     mov ax, 0026ah                            ; b8 6a 02
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09e04h                               ; e8 b2 13
+    call 09e05h                               ; e8 b2 13
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov ax, word [es:di+0027eh]               ; 26 8b 85 7e 02
     add ax, strict word 0ffffh                ; 05 ff ff
@@ -12894,7 +12891,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     mov bx, si                                ; 89 f3
     mov ax, word [es:bx+020h]                 ; 26 8b 47 20
     test ax, ax                               ; 85 c0
-    je short 08ae0h                           ; 74 39
+    je short 08ae1h                           ; 74 39
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     movzx bx, byte [es:di+00263h]             ; 26 0f b6 9d 63 02
@@ -12910,34 +12907,34 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     inc byte [es:di+00263h]                   ; 26 fe 85 63 02
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 035h                  ; 3c 35
-    jne short 08aedh                          ; 75 06
+    jne short 08aeeh                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 08b04h                          ; eb 17
+    jmp short 08b05h                          ; eb 17
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 08b00h                          ; 75 0f
+    jne short 08b01h                          ; 75 0f
     or byte [bp-008h], 020h                   ; 80 4e f8 20
     les bx, [bp-00eh]                         ; c4 5e f2
     or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
-    jmp short 08b04h                          ; eb 04
+    jmp short 08b05h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     or byte [bp-008h], 005h                   ; 80 4e f8 05
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 08796h                               ; e8 81 fc
+    call 08797h                               ; e8 81 fc
     mov cx, word [bp-00ch]                    ; 8b 4e f4
     mov bx, word [bp-00eh]                    ; 8b 5e f2
     add bx, 00240h                            ; 81 c3 40 02
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     add ax, 0026ah                            ; 05 6a 02
     mov dx, cx                                ; 89 ca
-    call 09e7dh                               ; e8 53 13
+    call 09e7eh                               ; e8 53 13
     mov es, cx                                ; 8e c1
     mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     test al, al                               ; 84 c0
-    je short 08b39h                           ; 74 05
+    je short 08b3ah                           ; 74 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08b3bh                          ; eb 02
+    jmp short 08b3ch                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -12945,7 +12942,7 @@ ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf8b43 LB 0x17f
+ahci_port_deinit_current_:                   ; 0xf8b44 LB 0x17f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12960,7 +12957,7 @@ ahci_port_deinit_current_:                   ; 0xf8b43 LB 0x17f
     mov al, byte [es:di+00262h]               ; 26 8a 85 62 02
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je near 08cb9h                            ; 0f 84 52 01
+    je near 08cbah                            ; 0f 84 52 01
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     sal ax, 007h                              ; c1 e0 07
     add ax, 00118h                            ; 05 18 01
@@ -13003,27 +13000,27 @@ ahci_port_deinit_current_:                   ; 0xf8b43 LB 0x17f
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08bc7h                           ; 74 04
+    je short 08bc8h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08bc9h                          ; eb 02
+    jmp short 08bcah                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08b9bh                           ; 74 ce
+    je short 08b9ch                           ; 74 ce
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 09f50h                               ; e8 76 13
+    call 09f50h                               ; e8 75 13
     lea ax, [di+00080h]                       ; 8d 85 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 09f50h                               ; e8 67 13
+    call 09f50h                               ; e8 66 13
     lea ax, [di+00200h]                       ; 8d 85 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 09f50h                               ; e8 58 13
+    call 09f50h                               ; e8 57 13
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     sal ax, 007h                              ; c1 e0 07
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -13127,7 +13124,7 @@ ahci_port_deinit_current_:                   ; 0xf8b43 LB 0x17f
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
+ahci_port_init_:                             ; 0xf8cc3 LB 0x24a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13137,7 +13134,7 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     mov si, ax                                ; 89 c6
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 08b43h                               ; e8 6d fe
+    call 08b44h                               ; e8 6d fe
     movzx ax, bl                              ; 0f b6 c3
     sal ax, 007h                              ; c1 e0 07
     add ax, 00118h                            ; 05 18 01
@@ -13184,28 +13181,28 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08d45h                           ; 74 04
+    je short 08d46h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08d47h                          ; eb 02
+    jmp short 08d48h                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08d11h                           ; 74 c6
+    je short 08d12h                           ; 74 c6
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09f50h                               ; e8 f8 11
+    call 09f50h                               ; e8 f7 11
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09f50h                               ; e8 e9 11
+    call 09f50h                               ; e8 e8 11
     lea di, [si+00200h]                       ; 8d bc 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09f50h                               ; e8 d8 11
+    call 09f50h                               ; e8 d7 11
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     sal bx, 007h                              ; c1 e3 07
     lea ax, [bx+00108h]                       ; 8d 87 08 01
@@ -13222,7 +13219,7 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     out DX, eax                               ; 66 ef
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08778h                               ; e8 d3 f9
+    call 08779h                               ; e8 d3 f9
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     add di, strict byte 00004h                ; 83 c7 04
@@ -13267,7 +13264,7 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     out DX, eax                               ; 66 ef
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08778h                               ; e8 67 f9
+    call 08779h                               ; e8 67 f9
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     add di, strict byte 00004h                ; 83 c7 04
@@ -13372,7 +13369,7 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
- at ahci_read_sectors:                          ; 0xf8f0c LB 0xa6
+ at ahci_read_sectors:                          ; 0xf8f0d LB 0xa6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13382,12 +13379,12 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     movzx di, byte [es:di+00ch]               ; 26 0f b6 7d 0c
     sub di, strict byte 0000ch                ; 83 ef 0c
     cmp di, strict byte 00004h                ; 83 ff 04
-    jbe short 08f31h                          ; 76 0f
+    jbe short 08f32h                          ; 76 0f
     push di                                   ; 57
     push 00c62h                               ; 68 62 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 ac 8a
+    call 019dah                               ; e8 ab 8a
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     les si, [bp+004h]                         ; c4 76 04
@@ -13401,11 +13398,11 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     mov di, si                                ; 89 f7
     mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
     xor ax, ax                                ; 31 c0
-    call 08cc2h                               ; e8 65 fd
+    call 08cc3h                               ; e8 65 fd
     mov bx, strict word 00025h                ; bb 25 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp+006h]                    ; 8b 56 06
-    call 088e1h                               ; e8 79 f9
+    call 088e2h                               ; e8 79 f9
     mov word [bp-006h], ax                    ; 89 46 fa
     mov es, [bp+006h]                         ; 8e 46 06
     mov bx, si                                ; 89 f3
@@ -13434,7 +13431,7 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at ahci_write_sectors:                         ; 0xf8fb2 LB 0x84
+ at ahci_write_sectors:                         ; 0xf8fb3 LB 0x84
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13445,12 +13442,12 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     movzx dx, byte [es:si+00ch]               ; 26 0f b6 54 0c
     sub dx, strict byte 0000ch                ; 83 ea 0c
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jbe short 08fdbh                          ; 76 0f
+    jbe short 08fdch                          ; 76 0f
     push dx                                   ; 52
     push 00c93h                               ; 68 93 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 02 8a
+    call 019dah                               ; e8 01 8a
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     mov es, cx                                ; 8e c1
@@ -13464,11 +13461,11 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     movzx bx, byte [es:bx+0022dh]             ; 26 0f b6 9f 2d 02
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08cc2h                               ; e8 bd fc
+    call 08cc3h                               ; e8 bd fc
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 088e1h                               ; e8 d2 f8
+    call 088e2h                               ; e8 d2 f8
     mov dx, ax                                ; 89 c2
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
@@ -13483,7 +13480,7 @@ ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf9036 LB 0x183
+ahci_cmd_packet_:                            ; 0xf9037 LB 0x183
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13495,30 +13492,30 @@ ahci_cmd_packet_:                            ; 0xf9036 LB 0x183
     mov word [bp-010h], cx                    ; 89 4e f0
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 83 86
+    call 016d4h                               ; e8 82 86
     mov si, 00122h                            ; be 22 01
     mov word [bp-008h], ax                    ; 89 46 f8
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 0907ch                          ; 75 1f
+    jne short 0907dh                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 31 89
+    call 01999h                               ; e8 30 89
     push 00ca6h                               ; 68 a6 0c
     push 00cb6h                               ; 68 b6 0c
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 67 89
+    call 019dah                               ; e8 66 89
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 091b0h                           ; e9 34 01
+    jmp near 091b1h                           ; e9 34 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 09076h                          ; 75 f4
+    jne short 09077h                          ; 75 f4
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0908bh                               ; e2 fa
+    loop 0908ch                               ; e2 fa
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si], ax                      ; 26 89 04
     mov word [es:si+002h], dx                 ; 26 89 54 02
@@ -13532,7 +13529,7 @@ ahci_cmd_packet_:                            ; 0xf9036 LB 0x183
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 09ef0h                               ; e8 2f 0e
+    call 09ef0h                               ; e8 2e 0e
     mov word [es:si+00eh], ax                 ; 26 89 44 0e
     xor di, di                                ; 31 ff
     mov ax, word [es:si+00232h]               ; 26 8b 84 32 02
@@ -13549,21 +13546,21 @@ ahci_cmd_packet_:                            ; 0xf9036 LB 0x183
     movzx bx, byte [es:bx+0022dh]             ; 26 0f b6 9f 2d 02
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08cc2h                               ; e8 c5 fb
+    call 08cc3h                               ; e8 c5 fb
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     push ax                                   ; 50
     mov bx, word [bp-012h]                    ; 8b 5e ee
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09f60h                               ; e8 4f 0e
+    call 09f60h                               ; e8 4e 0e
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov word [es:si+01ah], di                 ; 26 89 7c 1a
     mov word [es:si+01ch], di                 ; 26 89 7c 1c
     mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
     test ax, ax                               ; 85 c0
-    je short 0914fh                           ; 74 27
+    je short 09150h                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+0010ch], ax               ; 26 89 85 0c 01
@@ -13576,7 +13573,7 @@ ahci_cmd_packet_:                            ; 0xf9036 LB 0x183
     mov bx, 000a0h                            ; bb a0 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 088e1h                               ; e8 87 f7
+    call 088e2h                               ; e8 87 f7
     les bx, [bp-00eh]                         ; c4 5e f2
     mov ax, word [es:bx+004h]                 ; 26 8b 47 04
     mov dx, word [es:bx+006h]                 ; 26 8b 57 06
@@ -13603,16 +13600,16 @@ ahci_cmd_packet_:                            ; 0xf9036 LB 0x183
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 091aeh                          ; 75 05
+    jne short 091afh                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 091b0h                          ; eb 02
+    jmp short 091b1h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
+ahci_port_detect_device_:                    ; 0xf91ba LB 0x4b1
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13624,10 +13621,10 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov byte [bp-00ah], bl                    ; 88 5e f6
     movzx di, bl                              ; 0f b6 fb
     mov bx, di                                ; 89 fb
-    call 08cc2h                               ; e8 ef fa
+    call 08cc3h                               ; e8 ef fa
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 f8 84
+    call 016d4h                               ; e8 f7 84
     mov word [bp-010h], 00122h                ; c7 46 f0 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
     sal di, 007h                              ; c1 e7 07
@@ -13696,9 +13693,9 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0875dh                               ; e8 d7 f4
+    call 0875eh                               ; e8 d7 f4
     test ax, ax                               ; 85 c0
-    je near 09662h                            ; 0f 84 d6 03
+    je near 09663h                            ; 0f 84 d6 03
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     sal ax, 007h                              ; c1 e0 07
     mov word [bp-018h], ax                    ; 89 46 e8
@@ -13726,17 +13723,17 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0875dh                               ; e8 8b f4
+    call 0875eh                               ; e8 8b f4
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 0928ch                           ; 74 b5
+    je short 0928dh                           ; 74 b5
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
     mov dx, word [bp-022h]                    ; 8b 56 de
-    call 0875dh                               ; e8 77 f4
+    call 0875eh                               ; e8 77 f4
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne near 09662h                           ; 0f 85 75 03
+    jne near 09663h                           ; 0f 85 75 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
     add ax, 00130h                            ; 05 30 01
     cwd                                       ; 99
@@ -13763,7 +13760,7 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov al, byte [es:bx+00231h]               ; 26 8a 87 31 02
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 09662h                           ; 0f 83 2f 03
+    jnc near 09663h                           ; 0f 83 2f 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
     add ax, 00118h                            ; 05 18 01
     mov es, [bp-012h]                         ; 8e 46 ee
@@ -13815,9 +13812,9 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov cl, byte [bp-008h]                    ; 8a 4e f8
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne near 095b8h                           ; 0f 85 0d 02
+    jne near 095b9h                           ; 0f 85 0d 02
     cmp di, 00101h                            ; 81 ff 01 01
-    jne near 095b8h                           ; 0f 85 05 02
+    jne near 095b9h                           ; 0f 85 05 02
     les bx, [bp-010h]                         ; c4 5e f0
     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
@@ -13831,7 +13828,7 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov bx, 000ech                            ; bb ec 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 088e1h                               ; e8 fa f4
+    call 088e2h                               ; e8 fa f4
     mov byte [bp-00ch], cl                    ; 88 4e f4
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     db  00fh, 095h, 0c0h
@@ -13848,9 +13845,9 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov di, word [bp-001b0h]                  ; 8b be 50 fe
     mov dword [bp-016h], strict dword 000000000h ; 66 c7 46 ea 00 00 00 00
     cmp di, 00fffh                            ; 81 ff ff 0f
-    jne short 09440h                          ; 75 1e
+    jne short 09441h                          ; 75 1e
     cmp dx, strict byte 0ffffh                ; 83 fa ff
-    jne short 09440h                          ; 75 19
+    jne short 09441h                          ; 75 19
     mov dx, word [bp-0015ch]                  ; 8b 96 a4 fe
     mov word [bp-014h], dx                    ; 89 56 ec
     mov dx, word [bp-0015eh]                  ; 8b 96 a2 fe
@@ -13887,63 +13884,63 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov word [es:si+034h], ax                 ; 26 89 44 34
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 094b9h                           ; 72 0c
-    jbe short 094c1h                          ; 76 12
+    jc short 094bah                           ; 72 0c
+    jbe short 094c2h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 094c9h                           ; 74 16
+    je short 094cah                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 094c5h                           ; 74 0e
-    jmp short 09512h                          ; eb 59
+    je short 094c6h                           ; 74 0e
+    jmp short 09513h                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 09512h                          ; 75 55
+    jne short 09513h                          ; 75 55
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 094cbh                          ; eb 0a
+    jmp short 094cch                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 094cbh                          ; eb 06
+    jmp short 094cch                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 094cbh                          ; eb 02
+    jmp short 094cch                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov al, dl                                ; 88 d0
     add AL, strict byte 007h                  ; 04 07
     movzx bx, al                              ; 0f b6 d8
     mov ax, bx                                ; 89 d8
-    call 01714h                               ; e8 3d 82
+    call 01714h                               ; e8 3c 82
     test al, al                               ; 84 c0
-    je short 09512h                           ; 74 37
+    je short 09513h                           ; 74 37
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 01714h                               ; e8 30 82
+    call 01714h                               ; e8 2f 82
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     sal si, 008h                              ; c1 e6 08
     movzx ax, dl                              ; 0f b6 c2
-    call 01714h                               ; e8 23 82
+    call 01714h                               ; e8 22 82
     xor ah, ah                                ; 30 e4
     add ax, si                                ; 01 f0
     mov word [bp-028h], ax                    ; 89 46 d8
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 01714h                               ; e8 13 82
+    call 01714h                               ; e8 12 82
     xor ah, ah                                ; 30 e4
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov ax, bx                                ; 89 d8
-    call 01714h                               ; e8 09 82
+    call 01714h                               ; e8 08 82
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp short 09522h                          ; eb 10
+    jmp short 09523h                          ; eb 10
     push dword [bp-016h]                      ; 66 ff 76 ea
     push di                                   ; 57
     push word [bp-01ah]                       ; ff 76 e6
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ah]                         ; 8d 46 d6
-    call 059d6h                               ; e8 b4 c4
+    call 059d7h                               ; e8 b4 c4
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 6c 84
+    call 01999h                               ; e8 6b 84
     push dword [bp-016h]                      ; 66 ff 76 ea
     push di                                   ; 57
     push word [bp-01ah]                       ; ff 76 e6
@@ -13962,7 +13959,7 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     push ax                                   ; 50
     push 00cd6h                               ; 68 d6 0c
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 7e 84
+    call 019dah                               ; e8 7d 84
     add sp, strict byte 0001ch                ; 83 c4 1c
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -13991,18 +13988,18 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov byte [es:bx+001e2h], al               ; 26 88 87 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 11 81
+    call 016b8h                               ; e8 10 81
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 11 81
-    jmp near 09654h                           ; e9 9c 00
+    call 016c6h                               ; e8 10 81
+    jmp near 09655h                           ; e9 9c 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne near 09654h                           ; 0f 85 94 00
+    jne near 09655h                           ; 0f 85 94 00
     cmp di, 00101h                            ; 81 ff 01 01
-    jne near 09654h                           ; 0f 85 8c 00
+    jne near 09655h                           ; 0f 85 8c 00
     les bx, [bp-010h]                         ; c4 5e f0
     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
@@ -14016,7 +14013,7 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     mov bx, 000a1h                            ; bb a1 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 088e1h                               ; e8 e5 f2
+    call 088e2h                               ; e8 e5 f2
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
@@ -14053,7 +14050,7 @@ ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf966a LB 0x43
+ahci_mem_alloc_:                             ; 0xf966b LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14063,25 +14060,25 @@ ahci_mem_alloc_:                             ; 0xf966a LB 0x43
     push di                                   ; 57
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 016d4h                               ; e8 5a 80
+    call 016d4h                               ; e8 59 80
     test ax, ax                               ; 85 c0
-    je short 096a3h                           ; 74 25
+    je short 096a4h                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
     xor dx, dx                                ; 31 d2
     mov cx, strict word 0000ah                ; b9 0a 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09686h                               ; e2 fa
+    loop 09687h                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
     mov cx, strict word 00004h                ; b9 04 00
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 09693h                               ; e2 fa
+    loop 09694h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 016e2h                               ; e8 41 80
+    call 016e2h                               ; e8 40 80
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14091,7 +14088,7 @@ ahci_mem_alloc_:                             ; 0xf966a LB 0x43
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf96ad LB 0x166
+ahci_hba_init_:                              ; 0xf96ae LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14103,7 +14100,7 @@ ahci_hba_init_:                              ; 0xf96ad LB 0x166
     mov si, ax                                ; 89 c6
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 11 80
+    call 016d4h                               ; e8 10 80
     mov bx, 00122h                            ; bb 22 01
     mov di, ax                                ; 89 c7
     mov ax, strict word 00010h                ; b8 10 00
@@ -14120,10 +14117,10 @@ ahci_hba_init_:                              ; 0xf96ad LB 0x166
     ; mov dx, ax                                ; 8b d0
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 0966ah                               ; e8 83 ff
+    call 0966bh                               ; e8 83 ff
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    je near 097f2h                            ; 0f 84 02 01
+    je near 097f3h                            ; 0f 84 02 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov es, di                                ; 8e c7
     mov word [es:bx+00232h], ax               ; 26 89 87 32 02
@@ -14173,7 +14170,7 @@ ahci_hba_init_:                              ; 0xf96ad LB 0x166
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 09746h                          ; 75 de
+    jne short 09747h                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14191,31 +14188,31 @@ ahci_hba_init_:                              ; 0xf96ad LB 0x166
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 0875dh                               ; e8 d1 ef
+    call 0875eh                               ; e8 d1 ef
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    jmp short 097b7h                          ; eb 20
+    jmp short 097b8h                          ; eb 20
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 097aeh                           ; 74 11
+    je short 097afh                           ; 74 11
     movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     xor ax, ax                                ; 31 c0
     mov dx, word [bp-010h]                    ; 8b 56 f0
-    call 091b9h                               ; e8 10 fa
+    call 091bah                               ; e8 10 fa
     dec byte [bp-00eh]                        ; fe 4e f2
-    je short 097f0h                           ; 74 42
+    je short 097f1h                           ; 74 42
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
-    jnc short 097f0h                          ; 73 39
+    jnc short 097f1h                          ; 73 39
     movzx cx, byte [bp-00ch]                  ; 0f b6 4e f4
     mov bx, strict word 00001h                ; bb 01 00
     xor di, di                                ; 31 ff
-    jcxz 097c8h                               ; e3 06
+    jcxz 097c9h                               ; e3 06
     sal bx, 1                                 ; d1 e3
     rcl di, 1                                 ; d1 d7
-    loop 097c2h                               ; e2 fa
+    loop 097c3h                               ; e2 fa
     mov ax, strict word 0000ch                ; b8 0c 00
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14231,11 +14228,11 @@ ahci_hba_init_:                              ; 0xf96ad LB 0x166
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 097ech                          ; 75 04
+    jne short 097edh                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 09797h                           ; 74 ab
+    je short 09798h                           ; 74 ab
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 09799h                          ; eb a9
+    jmp short 0979ah                          ; eb a9
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14245,9 +14242,9 @@ ahci_hba_init_:                              ; 0xf96ad LB 0x166
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0e2h, 098h, 0c0h, 098h, 0c6h, 098h, 0cch, 098h, 0d2h
-    db  098h, 0d8h, 098h, 0deh, 098h, 0e2h, 098h
-_ahci_init:                                  ; 0xf9813 LB 0xfe
+    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0e3h, 098h, 0c1h, 098h, 0c7h, 098h, 0cdh, 098h, 0d3h
+    db  098h, 0d9h, 098h, 0dfh, 098h, 0e3h, 098h
+_ahci_init:                                  ; 0xf9814 LB 0xfe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14255,10 +14252,10 @@ _ahci_init:                                  ; 0xf9813 LB 0xfe
     sub sp, strict byte 00006h                ; 83 ec 06
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 09d31h                               ; e8 0d 05
+    call 09d32h                               ; e8 0d 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je near 0990ah                            ; 0f 84 dd 00
+    je near 0990bh                            ; 0f 84 dd 00
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ah], al                    ; 88 46 f6
@@ -14266,120 +14263,122 @@ _ahci_init:                                  ; 0xf9813 LB 0xfe
     xor dh, dh                                ; 30 f6
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 09d5ch                               ; e8 1a 05
+    call 09d5dh                               ; e8 1a 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 0986bh                           ; 74 23
+    je short 0986ch                           ; 74 23
     movzx bx, cl                              ; 0f b6 d9
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 09d5ch                               ; e8 02 05
+    call 09d5dh                               ; e8 02 05
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 0986bh                           ; 74 0d
+    je short 0986ch                           ; 74 0d
     mov al, cl                                ; 88 c8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     movzx bx, al                              ; 0f b6 d8
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    jmp short 0983fh                          ; eb d4
+    jmp short 09840h                          ; eb d4
     test cl, cl                               ; 84 c9
-    je near 0990ah                            ; 0f 84 99 00
+    je near 0990bh                            ; 0f 84 99 00
     add cl, 002h                              ; 80 c1 02
     movzx bx, cl                              ; 0f b6 d9
     movzx di, byte [bp-008h]                  ; 0f b6 7e f8
     movzx si, byte [bp-00ah]                  ; 0f b6 76 f6
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 09d5ch                               ; e8 d6 04
+    call 09d5dh                               ; e8 d6 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne near 0990ah                           ; 0f 85 7e 00
+    jne near 0990bh                           ; 0f 85 7e 00
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov al, cl                                ; 88 c8
     add AL, strict byte 002h                  ; 04 02
     movzx bx, al                              ; 0f b6 d8
     mov dx, di                                ; 89 fa
     mov ax, si                                ; 89 f0
-    call 09d80h                               ; e8 e2 04
+    call 09d81h                               ; e8 e2 04
     mov dx, ax                                ; 89 c2
     and ax, strict word 0000fh                ; 25 0f 00
     sub ax, strict word 00004h                ; 2d 04 00
     cmp ax, strict word 0000bh                ; 3d 0b 00
-    jnbe short 098e2h                         ; 77 37
+    jnbe short 098e3h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 097fch                            ; bf fc 97
+    mov di, 097fdh                            ; bf fd 97
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-067fdh]               ; 2e 8b 85 03 98
+    mov ax, word [cs:di-067fch]               ; 2e 8b 85 04 98
     jmp ax                                    ; ff e0
     mov byte [bp-006h], 010h                  ; c6 46 fa 10
-    jmp short 098e2h                          ; eb 1c
+    jmp short 098e3h                          ; eb 1c
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 098e2h                          ; eb 16
+    jmp short 098e3h                          ; eb 16
     mov byte [bp-006h], 018h                  ; c6 46 fa 18
-    jmp short 098e2h                          ; eb 10
+    jmp short 098e3h                          ; eb 10
     mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
-    jmp short 098e2h                          ; eb 0a
+    jmp short 098e3h                          ; eb 0a
     mov byte [bp-006h], 020h                  ; c6 46 fa 20
-    jmp short 098e2h                          ; eb 04
+    jmp short 098e3h                          ; eb 04
     mov byte [bp-006h], 024h                  ; c6 46 fa 24
     mov si, dx                                ; 89 d6
     shr si, 004h                              ; c1 ee 04
     sal si, 002h                              ; c1 e6 02
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test al, al                               ; 84 c0
-    je short 0990ah                           ; 74 19
+    je short 0990bh                           ; 74 19
     movzx bx, al                              ; 0f b6 d8
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
-    call 09da2h                               ; e8 a3 04
+    call 09da3h                               ; e8 a3 04
     test AL, strict byte 001h                 ; a8 01
-    je short 0990ah                           ; 74 07
+    je short 0990bh                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, si                                ; 01 f0
-    call 096adh                               ; e8 a3 fd
+    call 096aeh                               ; e8 a3 fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf9911 LB 0x39
+apm_out_str_:                                ; 0xf9912 LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     mov bx, ax                                ; 89 c3
     cmp byte [bx], 000h                       ; 80 3f 00
-    je short 09926h                           ; 74 0a
+    je short 09927h                           ; 74 0a
     mov al, byte [bx]                         ; 8a 07
     out DX, AL                                ; ee
     inc bx                                    ; 43
     mov al, byte [bx]                         ; 8a 07
     db  00ah, 0c0h
     ; or al, al                                 ; 0a c0
-    jne short 0991eh                          ; 75 f8
+    jne short 0991fh                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    insw                                      ; 6d
+    outsb                                     ; 6e
     cwd                                       ; 99
-    cmp word [bp+si-06681h], bx               ; 39 9a 7f 99
-    call far 0c59ah:03999h                    ; 9a 99 39 9a c5
+    cmp bl, byte [bp+si-06680h]               ; 3a 9a 80 99
+    wait                                      ; 9b
     cwd                                       ; 99
-    cmp word [bp+si-06636h], bx               ; 39 9a ca 99
-    push CS                                   ; 0e
-    call far 09a0eh:09a0eh                    ; 9a 0e 9a 0e 9a
-    or word [bp+si-065f2h], bx                ; 09 9a 0e 9a
-    push CS                                   ; 0e
+    cmp bl, byte [bp+si-0663ah]               ; 3a 9a c6 99
+    cmp bl, byte [bp+si-06635h]               ; 3a 9a cb 99
+    db  00fh, 09ah, 00fh
+    ; setp byte [bx]                            ; 0f 9a 0f
+    call far 09a0ah:09a0fh                    ; 9a 0f 9a 0a 9a
+    db  00fh, 09ah, 00fh
+    ; setp byte [bx]                            ; 0f 9a 0f
     db  09ah
-    db  002h
+    db  003h
     db  09ah
-_apm_function:                               ; 0xf994a LB 0xf5
+_apm_function:                               ; 0xf994b LB 0xf5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14387,23 +14386,23 @@ _apm_function:                               ; 0xf994a LB 0xf5
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    jnbe near 09a0eh                          ; 0f 87 b0 00
+    jnbe near 09a0fh                          ; 0f 87 b0 00
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     mov dx, word [bp+018h]                    ; 8b 56 18
     or dl, 001h                               ; 80 ca 01
-    jmp word [cs:bx-066d4h]                   ; 2e ff a7 2c 99
+    jmp word [cs:bx-066d3h]                   ; 2e ff a7 2d 99
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
     mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
     mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
-    jmp near 09a39h                           ; e9 ba 00
+    jmp near 09a3ah                           ; e9 ba 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 09fd4h                ; c7 46 0c d4 9f
     mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
     mov ax, strict word 0fff0h                ; b8 f0 ff
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+004h], ax                    ; 89 46 04
-    jmp near 09a39h                           ; e9 9f 00
+    jmp near 09a3ah                           ; e9 9f 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     mov ax, 0f000h                            ; b8 00 f0
@@ -14416,43 +14415,43 @@ _apm_function:                               ; 0xf994a LB 0xf5
     sal ebx, 010h                             ; 66 c1 e3 10
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 09a39h                           ; e9 74 00
+    jmp near 09a3ah                           ; e9 74 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 09a39h                           ; e9 6f 00
+    jmp near 09a3ah                           ; e9 6f 00
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 099efh                           ; 74 1f
+    je short 099f0h                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 099e7h                           ; 74 11
+    je short 099e8h                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 099f7h                          ; 75 1b
+    jne short 099f8h                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d10h                            ; b8 10 0d
-    call 09911h                               ; e8 2c ff
-    jmp short 09a39h                          ; eb 52
+    call 09912h                               ; e8 2c ff
+    jmp short 09a3ah                          ; eb 52
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d18h                            ; b8 18 0d
-    jmp short 099e2h                          ; eb f3
+    jmp short 099e3h                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d20h                            ; b8 20 0d
-    jmp short 099e2h                          ; eb eb
+    jmp short 099e3h                          ; eb eb
     or ah, 00ah                               ; 80 cc 0a
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 09a39h                          ; eb 37
+    jmp short 09a3ah                          ; eb 37
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 09a39h                          ; eb 30
+    jmp short 09a3ah                          ; eb 30
     or ah, 080h                               ; 80 cc 80
-    jmp short 099fah                          ; eb ec
+    jmp short 099fbh                          ; eb ec
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 80 7f
+    call 01999h                               ; e8 7f 7f
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     push 00d29h                               ; 68 29 0d
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 b3 7f
+    call 019dah                               ; e8 b2 7f
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -14463,7 +14462,7 @@ _apm_function:                               ; 0xf994a LB 0xf5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_select_reg_:                           ; 0xf9a3f LB 0x24
+pci16_select_reg_:                           ; 0xf9a40 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14480,7 +14479,7 @@ pci16_select_reg_:                           ; 0xf9a3f LB 0x24
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf9a63 LB 0xf7
+pci16_find_device_:                          ; 0xf9a64 LB 0xf7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14494,49 +14493,49 @@ pci16_find_device_:                          ; 0xf9a63 LB 0xf7
     xor bx, bx                                ; 31 db
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     test bl, 007h                             ; f6 c3 07
-    jne short 09aabh                          ; 75 2d
+    jne short 09aach                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 09a3fh                               ; e8 b9 ff
+    call 09a40h                               ; e8 b9 ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 09a99h                          ; 75 06
+    jne short 09a9ah                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 09b2ch                           ; e9 93 00
+    jmp near 09b2dh                           ; e9 93 00
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 09aa6h                           ; 74 07
+    je short 09aa7h                           ; 74 07
     mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
-    jmp short 09aabh                          ; eb 05
+    jmp short 09aach                          ; eb 05
     mov word [bp-00ah], strict word 00008h    ; c7 46 f6 08 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 09ad3h                          ; 75 1f
+    jne short 09ad4h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 09ad3h                          ; 75 16
+    jne short 09ad4h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 09a3fh                               ; e8 7a ff
+    call 09a40h                               ; e8 7a ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-008h]                    ; 3a 46 f8
-    jbe short 09ad3h                          ; 76 03
+    jbe short 09ad4h                          ; 76 03
     mov byte [bp-008h], al                    ; 88 46 f8
     test di, di                               ; 85 ff
-    je short 09adch                           ; 74 05
+    je short 09addh                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 09adeh                          ; eb 02
+    jmp short 09adfh                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 09a3fh                               ; e8 5c ff
+    call 09a40h                               ; e8 5c ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -14547,47 +14546,49 @@ pci16_find_device_:                          ; 0xf9a63 LB 0xf7
     mov word [bp-00ch], dx                    ; 89 56 f4
     mov word [bp-010h], strict word 00000h    ; c7 46 f0 00 00
     test di, di                               ; 85 ff
-    je short 09b0dh                           ; 74 0f
+    je short 09b0eh                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 09b01h                               ; e2 fa
+    loop 09b02h                               ; e2 fa
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov word [bp-00ch], dx                    ; 89 56 f4
     mov ax, word [bp-00ch]                    ; 8b 46 f4
     cmp ax, word [bp-014h]                    ; 3b 46 ec
-    jne short 09b1dh                          ; 75 08
+    jne short 09b1eh                          ; 75 08
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 09b23h                           ; 74 06
+    je short 09b24h                           ; 74 06
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    je short 09b29h                           ; 74 06
+    je short 09b2ah                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 09b3bh                           ; 74 12
+    je short 09b3ch                           ; 74 12
     add bx, word [bp-00ah]                    ; 03 5e f6
     mov dx, bx                                ; 89 da
     shr dx, 008h                              ; c1 ea 08
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cmp dx, ax                                ; 39 c2
-    jbe near 09a79h                           ; 0f 86 3e ff
+    jbe near 09a7ah                           ; 0f 86 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 09b44h                          ; 75 04
+    jne short 09b45h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 09b47h                          ; eb 03
+    jmp short 09b48h                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    cmp AL, strict byte 09ch                  ; 3c 9c
-    push si                                   ; 56
+    cmp ax, 0579ch                            ; 3d 9c 57
     pushfw                                    ; 9c
-    imul bx, word [si-06382h], 09c91h         ; 69 9c 7e 9c 91 9c
-    movsb                                     ; a4
+    push strict byte 0ff9ch                   ; 6a 9c
+    jnle short 09af3h                         ; 7f 9c
+    xchg dx, ax                               ; 92
     pushfw                                    ; 9c
-_pci16_function:                             ; 0xf9b5a LB 0x1d7
+    movsw                                     ; a5
+    pushfw                                    ; 9c
+_pci16_function:                             ; 0xf9b5b LB 0x1d7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14601,69 +14602,69 @@ _pci16_function:                             ; 0xf9b5a LB 0x1d7
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 09b93h                           ; 72 1a
-    jbe short 09bebh                          ; 76 70
+    jc short 09b94h                           ; 72 1a
+    jbe short 09bech                          ; 76 70
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je near 09cb8h                            ; 0f 84 36 01
+    je near 09cb9h                            ; 0f 84 36 01
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc near 09cfdh                            ; 0f 82 74 01
+    jc near 09cfeh                            ; 0f 82 74 01
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe near 09c10h                           ; 0f 86 80 00
-    jmp near 09cfdh                           ; e9 6a 01
+    jbe near 09c11h                           ; 0f 86 80 00
+    jmp near 09cfeh                           ; e9 6a 01
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 09bbbh                           ; 74 23
+    je short 09bbch                           ; 74 23
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jne near 09cfdh                           ; 0f 85 5e 01
+    jne near 09cfeh                           ; 0f 85 5e 01
     mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
     mov word [bp+014h], 00210h                ; c7 46 14 10 02
     mov word [bp+01ch], strict word 00000h    ; c7 46 1c 00 00
     mov word [bp+018h], 04350h                ; c7 46 18 50 43
     mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
-    jmp near 09d2ah                           ; e9 6f 01
+    jmp near 09d2bh                           ; e9 6f 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 09bc7h                          ; 75 06
+    jne short 09bc8h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 09d23h                           ; e9 5c 01
+    jmp near 09d24h                           ; e9 5c 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor cx, cx                                ; 31 c9
-    call 09a63h                               ; e8 8e fe
+    call 09a64h                               ; e8 8e fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09be5h                          ; 75 0b
+    jne short 09be6h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09d23h                           ; e9 3e 01
+    jmp near 09d24h                           ; e9 3e 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09d2ah                           ; e9 3f 01
+    jmp near 09d2bh                           ; e9 3f 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+01eh]                    ; 8b 56 1e
     mov cx, strict word 00001h                ; b9 01 00
-    call 09a63h                               ; e8 69 fe
+    call 09a64h                               ; e8 69 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09c0ah                          ; 75 0b
+    jne short 09c0bh                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09d23h                           ; e9 19 01
+    jmp near 09d24h                           ; e9 19 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09d2ah                           ; e9 1a 01
+    jmp near 09d2bh                           ; e9 1a 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 09c1dh                           ; 72 06
+    jc short 09c1eh                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 09d23h                           ; e9 06 01
+    jmp near 09d24h                           ; e9 06 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 09a3fh                               ; e8 19 fe
+    call 09a40h                               ; e8 19 fe
     mov bx, word [bp+020h]                    ; 8b 5e 20
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00008h                ; 83 eb 08
     cmp bx, strict byte 00005h                ; 83 fb 05
-    jnbe near 09d2ah                          ; 0f 87 f5 00
+    jnbe near 09d2bh                          ; 0f 87 f5 00
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-064b2h]                   ; 2e ff a7 4e 9b
+    jmp word [cs:bx-064b1h]                   ; 2e ff a7 4f 9b
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -14674,14 +14675,14 @@ _pci16_function:                             ; 0xf9b5a LB 0x1d7
     ; sub ah, ah                                ; 2a e4
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp near 09d2ah                           ; e9 d4 00
+    jmp near 09d2bh                           ; e9 d4 00
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 002h                              ; 80 e2 02
     add dx, 00cfch                            ; 81 c2 fc 0c
     in ax, DX                                 ; ed
     mov word [bp+01ch], ax                    ; 89 46 1c
-    jmp near 09d2ah                           ; e9 c1 00
+    jmp near 09d2bh                           ; e9 c1 00
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -14690,21 +14691,21 @@ _pci16_function:                             ; 0xf9b5a LB 0x1d7
     xchg dx, ax                               ; 92
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp near 09d2ah                           ; e9 ac 00
+    jmp near 09d2bh                           ; e9 ac 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 003h                              ; 80 e2 03
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp near 09d2ah                           ; e9 99 00
+    jmp near 09d2bh                           ; e9 99 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 002h                              ; 80 e2 02
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp near 09d2ah                           ; e9 86 00
+    jmp near 09d2bh                           ; e9 86 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov cx, word [bp+01eh]                    ; 8b 4e 1e
     mov dx, 00cfch                            ; ba fc 0c
@@ -14713,20 +14714,20 @@ _pci16_function:                             ; 0xf9b5a LB 0x1d7
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09d2ah                          ; eb 72
+    jmp short 09d2bh                          ; eb 72
     mov bx, word [bp+004h]                    ; 8b 5e 04
     mov es, [bp+026h]                         ; 8e 46 26
     mov word [bp-008h], bx                    ; 89 5e f8
     mov [bp-006h], es                         ; 8c 46 fa
     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 09cdeh                          ; 76 11
+    jbe short 09cdfh                          ; 76 11
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 089h                               ; 80 cc 89
     mov word [bp+020h], ax                    ; 89 46 20
     or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
-    jmp short 09cf2h                          ; eb 14
+    jmp short 09cf3h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
     mov dx, ds                                ; 8c da
@@ -14738,18 +14739,18 @@ _pci16_function:                             ; 0xf9b5a LB 0x1d7
     mov ax, word [0f4a0h]                     ; a1 a0 f4
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 09d2ah                          ; eb 2d
+    jmp short 09d2bh                          ; eb 2d
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 91 7c
+    call 01999h                               ; e8 90 7c
     mov ax, word [bp+014h]                    ; 8b 46 14
     push ax                                   ; 50
     mov ax, word [bp+020h]                    ; 8b 46 20
     push ax                                   ; 50
     push 00d5ch                               ; 68 5c 0d
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 c2 7c
+    call 019dah                               ; e8 c1 7c
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -14761,7 +14762,7 @@ _pci16_function:                             ; 0xf9b5a LB 0x1d7
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf9d31 LB 0x2b
+pci_find_classcode_:                         ; 0xf9d32 LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14776,7 +14777,7 @@ pci_find_classcode_:                         ; 0xf9d31 LB 0x2b
     ; mov cx, dx                                ; 8b ca
     int 01ah                                  ; cd 1a
     cmp ah, 000h                              ; 80 fc 00
-    je near 09d52h                            ; 0f 84 03 00
+    je near 09d53h                            ; 0f 84 03 00
     mov bx, strict word 0ffffh                ; bb ff ff
     mov ax, bx                                ; 89 d8
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -14785,7 +14786,7 @@ pci_find_classcode_:                         ; 0xf9d31 LB 0x2b
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf9d5c LB 0x24
+pci_read_config_byte_:                       ; 0xf9d5d LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14804,7 +14805,7 @@ pci_read_config_byte_:                       ; 0xf9d5c LB 0x24
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf9d80 LB 0x22
+pci_read_config_word_:                       ; 0xf9d81 LB 0x22
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14823,7 +14824,7 @@ pci_read_config_word_:                       ; 0xf9d80 LB 0x22
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf9da2 LB 0x27
+pci_read_config_dword_:                      ; 0xf9da3 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14844,7 +14845,7 @@ pci_read_config_dword_:                      ; 0xf9da2 LB 0x27
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf9dc9 LB 0x1d
+vds_is_present_:                             ; 0xf9dca LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14852,7 +14853,7 @@ vds_is_present_:                             ; 0xf9dc9 LB 0x1d
     mov ax, strict word 00040h                ; b8 40 00
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 09de1h                           ; 74 06
+    je short 09de2h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
     pop bx                                    ; 5b
@@ -14861,7 +14862,7 @@ vds_is_present_:                             ; 0xf9dc9 LB 0x1d
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf9de6 LB 0x1e
+vds_real_to_lin_:                            ; 0xf9de7 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -14872,7 +14873,7 @@ vds_real_to_lin_:                            ; 0xf9de6 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09df4h                               ; e2 fa
+    loop 09df5h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -14880,7 +14881,7 @@ vds_real_to_lin_:                            ; 0xf9de6 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9e04 LB 0x79
+vds_build_sg_list_:                          ; 0xf9e05 LB 0x79
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14894,23 +14895,23 @@ vds_build_sg_list_:                          ; 0xf9e04 LB 0x79
     mov word [es:di], bx                      ; 26 89 1d
     mov bx, word [bp+006h]                    ; 8b 5e 06
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 09de6h                               ; e8 c3 ff
+    call 09de7h                               ; e8 c3 ff
     mov es, si                                ; 8e c6
     mov word [es:di+004h], ax                 ; 26 89 45 04
     mov word [es:di+006h], dx                 ; 26 89 55 06
     mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
-    call 09dc9h                               ; e8 93 ff
+    call 09dcah                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 09e4dh                           ; 74 13
+    je short 09e4eh                           ; 74 13
     mov es, si                                ; 8e c6
     mov ax, 08105h                            ; b8 05 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 09e4ah                            ; 0f 82 02 00
+    jc near 09e4bh                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 09e74h                          ; eb 27
+    jmp short 09e75h                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     mov dx, word [es:di+004h]                 ; 26 8b 55 04
@@ -14927,21 +14928,21 @@ vds_build_sg_list_:                          ; 0xf9e04 LB 0x79
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf9e7d LB 0x33
+vds_free_sg_list_:                           ; 0xf9e7e LB 0x32
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 09dc9h                               ; e8 42 ff
+    call 09dcah                               ; e8 42 ff
     test ax, ax                               ; 85 c0
-    je short 09e9eh                           ; 74 13
+    je short 09e9fh                           ; 74 13
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
     mov ax, 08106h                            ; b8 06 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc near 09e9dh                            ; 0f 82 02 00
+    jc near 09e9eh                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
@@ -14952,7 +14953,7 @@ vds_free_sg_list_:                           ; 0xf9e7d LB 0x33
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0x3 db 0
+    times 0x2 db 0
 __U4M:                                       ; 0xf9eb0 LB 0x40
     pushfw                                    ; 9c
     push eax                                  ; 66 50
@@ -15785,7 +15786,7 @@ normal_post:                                 ; 0xfe0c6 LB 0x1f6
     mov ax, 0c000h                            ; b8 00 c0
     mov dx, 0c800h                            ; ba 00 c8
     call 01600h                               ; e8 e1 33
-    call 04ee4h                               ; e8 c2 6c
+    call 04ee5h                               ; e8 c3 6c
     pop DS                                    ; 1f
     mov ax, 0ff53h                            ; b8 53 ff
     mov word [0003ch], ax                     ; a3 3c 00
@@ -15906,8 +15907,8 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xc4
     popad                                     ; 66 61
     call 01d17h                               ; e8 d4 39
     call 021a4h                               ; e8 5e 3e
-    call 09813h                               ; e8 ca b4
-    call 086f7h                               ; e8 ab a3
+    call 09814h                               ; e8 cb b4
+    call 086f8h                               ; e8 ac a3
     call 0ed2fh                               ; e8 e0 09
     call 0e2d2h                               ; e8 80 ff
     push CS                                   ; 0e
@@ -16019,7 +16020,7 @@ biosorg_check_at_0E739h:                     ; 0xfe739 LB 0x1a
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 063f9h                               ; e8 b7 7c
+    call 063fah                               ; e8 b8 7c
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -16095,7 +16096,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 056efh                               ; e8 ad 6e
+    call 056f0h                               ; e8 ae 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16112,7 +16113,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 056efh                               ; e8 8f 6e
+    call 056f0h                               ; e8 90 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16211,7 +16212,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 051e7h                               ; e8 1e 68
+    call 051e8h                               ; e8 1f 68
     pop ES                                    ; 07
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -16227,7 +16228,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06ec2h                               ; e8 e3 84
+    call 06ec3h                               ; e8 e4 84
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -16276,7 +16277,7 @@ int13_relocated:                             ; 0xfec5b LB 0x55
     pop DS                                    ; 1f
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 041e0h                           ; e9 49 55
+    jmp near 041e1h                           ; e9 4a 55
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
     ; cmp al, dl                                ; 3a c2
@@ -16322,16 +16323,16 @@ int13_notfloppy:                             ; 0xfecc8 LB 0x14
     jc short 0ecdch                           ; 72 0f
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 04614h                               ; e8 3f 59
+    call 04615h                               ; e8 40 59
     pop bx                                    ; 5b
     sal ebx, 010h                             ; 66 c1 e3 10
     jmp short 0ece9h                          ; eb 0d
 int13_disk:                                  ; 0xfecdc LB 0xd
     cmp ah, 040h                              ; 80 fc 40
     jnbe short 0ece6h                         ; 77 05
-    call 05abbh                               ; e8 d7 6d
+    call 05abch                               ; e8 d8 6d
     jmp short 0ece9h                          ; eb 03
-    call 05f05h                               ; e8 1c 72
+    call 05f06h                               ; e8 1d 72
 int13_out:                                   ; 0xfece9 LB 0x4
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16547,7 +16548,7 @@ int17_handler:                               ; 0xfefd4 LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0783dh                               ; e8 60 88
+    call 0783eh                               ; e8 61 88
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -16598,28 +16599,28 @@ int19_relocated:                             ; 0xff0ac LB 0x8f
     ; mov bp, sp                                ; 8b ec
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 04c7bh                               ; e8 ab 5b
+    call 04c7ch                               ; e8 ac 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 27
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 04c7bh                               ; e8 9e 5b
+    call 04c7ch                               ; e8 9f 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 1a
     mov ax, strict word 00003h                ; b8 03 00
     push ax                                   ; 50
-    call 04c7bh                               ; e8 91 5b
+    call 04c7ch                               ; e8 92 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 0d
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 04c7bh                               ; e8 84 5b
+    call 04c7ch                               ; e8 85 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
@@ -16902,7 +16903,7 @@ int15_handler:                               ; 0xff859 LB 0x40
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06d17h                               ; e8 b0 74
+    call 06d18h                               ; e8 b1 74
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -16924,20 +16925,20 @@ int15_handler:                               ; 0xff859 LB 0x40
     je short 0f894h                           ; 74 0e
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f899h                           ; 74 0e
-    call 0664bh                               ; e8 bd 6d
+    call 0664ch                               ; e8 be 6d
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
     popfw                                     ; 9d
     jmp short 0f8a7h                          ; eb 13
-    call 0994ah                               ; e8 b3 a0
+    call 0994bh                               ; e8 b4 a0
     jmp short 0f88eh                          ; eb f5
 int15_handler_mouse:                         ; 0xff899 LB 0x5
-    call 074b2h                               ; e8 16 7c
+    call 074b3h                               ; e8 17 7c
     jmp short 0f88eh                          ; eb f0
 int15_handler32:                             ; 0xff89e LB 0x9
     pushad                                    ; 66 60
-    call 06981h                               ; e8 de 70
+    call 06982h                               ; e8 df 70
     popad                                     ; 66 61
     jmp short 0f88fh                          ; eb e8
 iret_modify_cf:                              ; 0xff8a7 LB 0x14
@@ -16969,7 +16970,7 @@ int74_handler:                               ; 0xff8bb LB 0x2b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 073e8h                               ; e8 1c 7b
+    call 073e9h                               ; e8 1d 7b
     pop cx                                    ; 59
     jcxz 0f8dbh                               ; e3 0c
     push strict byte 00000h                   ; 6a 00
@@ -17001,7 +17002,7 @@ int70_handler:                               ; 0xff8f8 LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 070a0h                               ; e8 9f 77
+    call 070a1h                               ; e8 a0 77
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17083,7 +17084,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0x21
     pop DS                                    ; 1f
     cld                                       ; fc
     pushad                                    ; 66 60
-    call 09b5ah                               ; e8 dd 9c
+    call 09b5bh                               ; e8 de 9c
     popad                                     ; 66 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17094,7 +17095,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0x21
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0715eh                               ; e8 d3 72
+    call 0715fh                               ; e8 d4 72
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17197,4 +17198,4 @@ biosorg_check_before_or_at_0FFEEh:           ; 0xfff80 LB 0x70
     db  'XM'
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 0e3h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 095h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
index 4d8a861..26f4bd5 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
@@ -1 +1 @@
-d0e34c273675aac6c06fb51c5ba89f19 *VBoxPcBios386.rom
+28775258585bacb3bb0b986ed3a422c3 *VBoxPcBios386.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
index 3ad29a0..f15e31f 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
@@ -987,12 +987,12 @@ _fd_parm:                                    ; 0xf0000 LB 0x5b
 _fd_map:                                     ; 0xf005b LB 0xf
     db  001h, 000h, 002h, 002h, 003h, 003h, 004h, 004h, 005h, 005h, 00eh, 006h, 00fh, 006h, 000h
 _pktacc:                                     ; 0xf006a LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 0a1h, 02bh, 0c8h, 081h, 063h, 091h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 0a1h, 02bh, 0c9h, 081h, 064h, 091h
 _softrst:                                    ; 0xf0076 LB 0xc
     db  000h, 000h, 000h, 000h, 000h, 000h, 02ch, 02eh, 003h, 03ch, 003h, 03ch
 _dskacc:                                     ; 0xf0082 LB 0x2e
     db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 085h, 02ah, 046h, 02bh, 000h, 000h, 000h, 000h
-    db  0f6h, 07fh, 0dfh, 080h, 031h, 090h, 0dbh, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  0f7h, 07fh, 0e0h, 080h, 032h, 090h, 0dch, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
     db  032h, 05fh, 000h, 0dah, 00fh, 000h, 000h, 001h, 0f3h, 000h, 000h, 000h, 000h, 000h
 
 section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
@@ -1115,7 +1115,7 @@ section CONST progbits vstart=0xb0 align=1 ; size=0xcde class=DATA group=DGROUP
 
 section CONST2 progbits vstart=0xd8e align=1 ; size=0x3fa class=DATA group=DGROUP
 _bios_cvs_version_string:                    ; 0xf0d8e LB 0x12
-    db  'VirtualBox 5.1.18', 000h
+    db  'VirtualBox 5.1.20', 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -1449,7 +1449,7 @@ _print_bios_banner:                          ; 0xf1799 LB 0x2e
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     jmp short 017c3h                          ; eb 03
-    call 07b9ah                               ; e8 d7 63
+    call 07b9bh                               ; e8 d8 63
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
@@ -2740,7 +2740,7 @@ _ata_detect:                                 ; 0xf2154 LB 0x6a3
     push si                                   ; 56
     mov dx, ss                                ; 8c d2
     lea ax, [bp-03eh]                         ; 8d 46 c2
-    call 05b4fh                               ; e8 4e 37
+    call 05b50h                               ; e8 4f 37
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -5568,7 +5568,7 @@ device_is_cdrom_:                            ; 0xf3ddf LB 0x3f
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
+cdrom_boot_:                                 ; 0xf3e1e LB 0x43e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5580,25 +5580,25 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
     call 0166eh                               ; e8 3b d8
-    mov word [bp-01ah], ax                    ; 89 46 e6
-    mov si, 00366h                            ; be 66 03
     mov word [bp-018h], ax                    ; 89 46 e8
-    mov word [bp-014h], 00122h                ; c7 46 ec 22 01
-    mov word [bp-012h], ax                    ; 89 46 ee
-    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
+    mov si, 00366h                            ; be 66 03
+    mov word [bp-016h], ax                    ; 89 46 ea
+    mov word [bp-012h], 00122h                ; c7 46 ee 22 01
+    mov word [bp-010h], ax                    ; 89 46 f0
+    mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     jmp short 03e53h                          ; eb 09
-    inc byte [bp-00ch]                        ; fe 46 f4
-    cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
+    inc byte [bp-00eh]                        ; fe 46 f2
+    cmp byte [bp-00eh], 010h                  ; 80 7e f2 10
     jnc short 03e5fh                          ; 73 0c
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     call 03ddfh                               ; e8 84 ff
     test ax, ax                               ; 85 c0
     je short 03e4ah                           ; 74 eb
-    cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
+    cmp byte [bp-00eh], 010h                  ; 80 7e f2 10
     jc short 03e6bh                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 041f8h                           ; e9 8d 03
+    jmp near 041f9h                           ; e9 8e 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
@@ -5615,19 +5615,19 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     mov ax, strict word 00001h                ; b8 01 00
     xchg ah, al                               ; 86 c4
     mov word [bp-01fh], ax                    ; 89 46 e1
-    les bx, [bp-014h]                         ; c4 5e ec
+    les bx, [bp-012h]                         ; c4 5e ee
     mov word [es:bx+00eh], strict word 00001h ; 26 c7 47 0e 01 00
     mov word [es:bx+010h], 00800h             ; 26 c7 47 10 00 08
-    mov byte [bp-00eh], 000h                  ; c6 46 f2 00
+    mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     jmp short 03eb3h                          ; eb 09
-    inc byte [bp-00eh]                        ; fe 46 f2
-    cmp byte [bp-00eh], 004h                  ; 80 7e f2 04
+    inc byte [bp-00ch]                        ; fe 46 f4
+    cmp byte [bp-00ch], 004h                  ; 80 7e f4 04
     jnbe short 03ef5h                         ; 77 42
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
     imul dx                                   ; f7 ea
-    les bx, [bp-014h]                         ; c4 5e ec
+    les bx, [bp-012h]                         ; c4 5e ee
     add bx, ax                                ; 01 c3
     mov al, byte [es:bx+022h]                 ; 26 8a 47 22
     xor ah, ah                                ; 30 e4
@@ -5644,7 +5644,7 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov cx, ss                                ; 8c d1
     lea bx, [bp-026h]                         ; 8d 5e da
@@ -5655,11 +5655,11 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     test ax, ax                               ; 85 c0
     je short 03effh                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 041f8h                           ; e9 f9 02
+    jmp near 041f9h                           ; e9 fa 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
     je short 03f0ch                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 041f8h                           ; e9 ec 02
+    jmp near 041f9h                           ; e9 ed 02
     xor di, di                                ; 31 ff
     jmp short 03f16h                          ; eb 06
     inc di                                    ; 47
@@ -5669,7 +5669,7 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
     je short 03f10h                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 041f8h                           ; e9 d2 02
+    jmp near 041f9h                           ; e9 d3 02
     xor di, di                                ; 31 ff
     jmp short 03f30h                          ; eb 06
     inc di                                    ; 47
@@ -5679,7 +5679,7 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
     je short 03f2ah                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 041f8h                           ; e9 b8 02
+    jmp near 041f9h                           ; e9 b9 02
     mov ax, word [bp-007dfh]                  ; 8b 86 21 f8
     mov dx, word [bp-007ddh]                  ; 8b 96 23 f8
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
@@ -5691,11 +5691,11 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     mov ax, strict word 00001h                ; b8 01 00
     xchg ah, al                               ; 86 c4
     mov word [bp-01fh], ax                    ; 89 46 e1
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
     imul dx                                   ; f7 ea
-    les bx, [bp-014h]                         ; c4 5e ec
+    les bx, [bp-012h]                         ; c4 5e ee
     add bx, ax                                ; 01 c3
     mov al, byte [es:bx+022h]                 ; 26 8a 47 22
     xor ah, ah                                ; 30 e4
@@ -5712,7 +5712,7 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov cx, ss                                ; 8c d1
     lea bx, [bp-026h]                         ; 8d 5e da
@@ -5721,27 +5721,27 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     test ax, ax                               ; 85 c0
     je short 03fa8h                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 041f8h                           ; e9 50 02
+    jmp near 041f9h                           ; e9 51 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
     je short 03fb5h                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 041f8h                           ; e9 43 02
+    jmp near 041f9h                           ; e9 44 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
     je short 03fc2h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 041f8h                           ; e9 36 02
+    jmp near 041f9h                           ; e9 37 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
     je short 03fcfh                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 041f8h                           ; e9 29 02
+    jmp near 041f9h                           ; e9 2a 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
     jne short 03fc9h                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
     je short 03fe3h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 041f8h                           ; e9 15 02
+    jmp near 041f9h                           ; e9 16 02
     mov al, byte [bp-00805h]                  ; 8a 86 fb f7
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov byte [es:si+001h], al                 ; 26 88 44 01
     cmp byte [bp-00805h], 000h                ; 80 be fb f7 00
     jne short 03ffch                          ; 75 07
@@ -5752,14 +5752,14 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
     jmp short 0400fh                          ; eb 05
     mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
-    mov bl, byte [bp-00ch]                    ; 8a 5e f4
+    mov bl, byte [bp-00eh]                    ; 8a 5e f2
     xor bh, bh                                ; 30 ff
     mov ax, bx                                ; 89 d8
     cwd                                       ; 99
     db  02bh, 0c2h
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov byte [es:si+003h], al                 ; 26 88 44 03
     mov ax, bx                                ; 89 d8
     cwd                                       ; 99
@@ -5767,12 +5767,12 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     idiv bx                                   ; f7 fb
     mov word [es:si+004h], dx                 ; 26 89 54 04
     mov ax, word [bp-00804h]                  ; 8b 86 fc f7
-    mov word [bp-010h], ax                    ; 89 46 f0
+    mov word [bp-014h], ax                    ; 89 46 ec
     test ax, ax                               ; 85 c0
     jne short 0403eh                          ; 75 05
-    mov word [bp-010h], 007c0h                ; c7 46 f0 c0 07
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov word [bp-014h], 007c0h                ; c7 46 ec c0 07
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov word [es:si+00ch], ax                 ; 26 89 44 0c
     mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00
     mov bx, word [bp-00800h]                  ; 8b 9e 00 f8
@@ -5782,7 +5782,7 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     cmp bx, 00400h                            ; 81 fb 00 04
     jbe short 04066h                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 041f8h                           ; e9 92 01
+    jmp near 041f9h                           ; e9 93 01
     mov ax, word [bp-007feh]                  ; 8b 86 02 f8
     mov dx, word [bp-007fch]                  ; 8b 96 04 f8
     mov word [es:si+008h], ax                 ; 26 89 44 08
@@ -5800,7 +5800,7 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     mov ax, dx                                ; 89 d0
     xchg ah, al                               ; 86 c4
     mov word [bp-01fh], ax                    ; 89 46 e1
-    les di, [bp-014h]                         ; c4 7e ec
+    les di, [bp-012h]                         ; c4 7e ee
     mov word [es:di+00eh], dx                 ; 26 89 55 0e
     mov word [es:di+010h], 00200h             ; 26 c7 45 10 00 02
     mov CL, strict byte 009h                  ; b1 09
@@ -5811,7 +5811,7 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     mov ax, dx                                ; 89 d0
     and ah, 007h                              ; 80 e4 07
     mov word [es:di+020h], ax                 ; 26 89 45 20
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
     imul dx                                   ; f7 ea
@@ -5819,8 +5819,8 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     mov al, byte [es:di+022h]                 ; 26 8a 45 22
     xor ah, ah                                ; 30 e4
     sal ax, 1                                 ; d1 e0
-    mov word [bp-016h], ax                    ; 89 46 ea
-    push word [bp-010h]                       ; ff 76 f0
+    mov word [bp-01ah], ax                    ; 89 46 e6
+    push word [bp-014h]                       ; ff 76 ec
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
     mov ax, strict word 00001h                ; b8 01 00
@@ -5835,20 +5835,20 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov cx, ss                                ; 8c d1
     lea bx, [bp-026h]                         ; 8d 5e da
     mov dx, strict word 0000ch                ; ba 0c 00
-    mov di, word [bp-016h]                    ; 8b 7e ea
+    mov di, word [bp-01ah]                    ; 8b 7e e6
     call word [word di+0006ah]                ; ff 95 6a 00
-    les bx, [bp-014h]                         ; c4 5e ec
+    les bx, [bp-012h]                         ; c4 5e ee
     mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00
     test ax, ax                               ; 85 c0
     je short 04110h                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 041f8h                           ; e9 e8 00
-    mov es, [bp-018h]                         ; 8e 46 e8
+    jmp near 041f9h                           ; e9 e9 00
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov al, byte [es:si+001h]                 ; 26 8a 44 01
     cmp AL, strict byte 002h                  ; 3c 02
     jc short 04128h                           ; 72 0d
@@ -5857,76 +5857,76 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     je short 04153h                           ; 74 32
     cmp AL, strict byte 003h                  ; 3c 03
     je short 0414bh                           ; 74 26
-    jmp near 041a0h                           ; e9 78 00
+    jmp near 041a1h                           ; e9 79 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 041a0h                          ; 75 74
-    mov es, [bp-018h]                         ; 8e 46 e8
+    jne short 041a1h                          ; 75 75
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov word [es:si+014h], strict word 0000fh ; 26 c7 44 14 0f 00
     mov word [es:si+012h], strict word 00050h ; 26 c7 44 12 50 00
     mov word [es:si+010h], strict word 00002h ; 26 c7 44 10 02 00
-    jmp short 041a0h                          ; eb 5d
+    jmp short 041a1h                          ; eb 5e
     mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00
     jmp short 04135h                          ; eb ea
     mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00
     jmp short 04135h                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     call 01652h                               ; e8 f6 d4
     and AL, strict byte 03fh                  ; 24 3f
     xor ah, ah                                ; 30 e4
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov word [es:si+014h], ax                 ; 26 89 44 14
     mov dx, 001c4h                            ; ba c4 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     call 01652h                               ; e8 e2 d4
-    xor ah, ah                                ; 30 e4
+    and ax, 000c0h                            ; 25 c0 00
     mov bx, ax                                ; 89 c3
     sal bx, 1                                 ; d1 e3
     sal bx, 1                                 ; d1 e3
     mov dx, 001c5h                            ; ba c5 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01652h                               ; e8 d1 d4
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    call 01652h                               ; e8 d0 d4
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
     inc ax                                    ; 40
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov word [es:si+012h], ax                 ; 26 89 44 12
     mov dx, 001c3h                            ; ba c3 01
-    mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01652h                               ; e8 bc d4
+    mov ax, word [bp-014h]                    ; 8b 46 ec
+    call 01652h                               ; e8 bb d4
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov word [es:si+010h], ax                 ; 26 89 44 10
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov es, [bp-016h]                         ; 8e 46 ea
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 041e1h                           ; 74 37
+    je short 041e2h                           ; 74 37
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 041c9h                          ; 75 18
+    jne short 041cah                          ; 75 18
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 98 d4
+    call 01652h                               ; e8 97 d4
     mov bl, al                                ; 88 c3
     or bl, 041h                               ; 80 cb 41
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    jmp short 041deh                          ; eb 15
+    jmp short 041dfh                          ; eb 15
     mov dx, 00304h                            ; ba 04 03
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 01652h                               ; e8 80 d4
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    call 01652h                               ; e8 7f d4
     mov bl, al                                ; 88 c3
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, 00304h                            ; ba 04 03
-    mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 01660h                               ; e8 7f d4
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov ax, word [bp-018h]                    ; 8b 46 e8
+    call 01660h                               ; e8 7e d4
+    mov es, [bp-016h]                         ; 8e 46 ea
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 041efh                           ; 74 04
+    je short 041f0h                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
-    mov es, [bp-018h]                         ; 8e 46 e8
+    mov es, [bp-016h]                         ; 8e 46 ea
     mov ah, byte [es:si+002h]                 ; 26 8a 64 02
     xor al, al                                ; 30 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -5938,12 +5938,12 @@ cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     pop bp                                    ; 5d
     retn                                      ; c3
     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, 012h, 046h, 002h
-    db  043h, 037h, 043h, 05ch, 043h, 02ch, 043h, 05ch, 043h, 02ch, 043h, 05bh, 045h, 041h, 045h, 012h
-    db  046h, 012h, 046h, 041h, 045h, 041h, 045h, 041h, 045h, 041h, 045h, 041h, 045h, 009h, 046h, 041h
-    db  045h, 012h, 046h, 012h, 046h, 012h, 046h, 012h, 046h, 012h, 046h, 012h, 046h, 012h, 046h, 012h
-    db  046h, 012h, 046h, 012h, 046h, 012h, 046h, 012h, 046h
-_int13_cdemu:                                ; 0xf425b LB 0x453
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 013h, 046h, 003h
+    db  043h, 038h, 043h, 05dh, 043h, 02dh, 043h, 05dh, 043h, 02dh, 043h, 05ch, 045h, 042h, 045h, 013h
+    db  046h, 013h, 046h, 042h, 045h, 042h, 045h, 042h, 045h, 042h, 045h, 042h, 045h, 00ah, 046h, 042h
+    db  045h, 013h, 046h, 013h, 046h, 013h, 046h, 013h, 046h, 013h, 046h, 013h, 046h, 013h, 046h, 013h
+    db  046h, 013h, 046h, 013h, 046h, 013h, 046h, 013h, 046h
+_int13_cdemu:                                ; 0xf425c LB 0x453
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -5951,7 +5951,7 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     sub sp, strict byte 0002ch                ; 83 ec 2c
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 02 d4
+    call 0166eh                               ; e8 01 d4
     mov di, 00366h                            ; bf 66 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
@@ -5967,20 +5967,20 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 c5 d3
+    call 01660h                               ; e8 c4 d3
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 042b2h                           ; 74 0f
+    je short 042b3h                           ; 74 0f
     mov al, byte [es:di+002h]                 ; 26 8a 45 02
     xor ah, ah                                ; 30 e4
     mov dx, word [bp+012h]                    ; 8b 56 12
     xor dh, dh                                ; 30 f6
     cmp ax, dx                                ; 39 d0
-    je short 042dch                           ; 74 2a
+    je short 042ddh                           ; 74 2a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 76 d6
+    call 01933h                               ; e8 75 d6
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -5992,22 +5992,22 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 a0 d6
+    call 01976h                               ; e8 9f d6
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04635h                           ; e9 59 03
+    jmp near 04636h                           ; e9 59 03
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe short 04359h                         ; 77 71
+    jnbe short 0435ah                         ; 77 71
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 04202h                            ; bf 02 42
+    mov di, 04203h                            ; bf 03 42
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0421fh]               ; 2e 8b 85 1f 42
+    mov ax, word [cs:di+04220h]               ; 2e 8b 85 20 42
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
@@ -6021,29 +6021,29 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     xor bh, bh                                ; 30 ff
     sal bx, 1                                 ; d1 e3
     cmp word [word bx+0006ah], strict byte 00000h ; 83 bf 6a 00 00
-    je short 04329h                           ; 74 09
+    je short 0432ah                           ; 74 09
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     call word [word bx+00076h]                ; ff 97 76 00
-    jmp near 04541h                           ; e9 15 02
+    jmp near 04542h                           ; e9 15 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 0463dh                           ; e9 06 03
+    jmp near 0463eh                           ; e9 06 03
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 12 d3
+    call 01652h                               ; e8 11 d3
     mov cl, al                                ; 88 c1
     mov bh, al                                ; 88 c7
     mov word [bp+016h], bx                    ; 89 5e 16
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 0e d3
+    call 01660h                               ; e8 0d d3
     test cl, cl                               ; 84 c9
-    je short 043bbh                           ; 74 65
-    jmp near 0464eh                           ; e9 f5 02
-    jmp near 04612h                           ; e9 b6 02
+    je short 043bch                           ; 74 65
+    jmp near 0464fh                           ; e9 f5 02
+    jmp near 04613h                           ; e9 b6 02
     mov es, [bp-012h]                         ; 8e 46 ee
     mov di, word [es:si+014h]                 ; 26 8b 7c 14
     mov dx, word [es:si+012h]                 ; 26 8b 54 12
@@ -6069,20 +6069,20 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     xor ch, ch                                ; 30 ed
     mov word [bp-014h], cx                    ; 89 4e ec
     test cx, cx                               ; 85 c9
-    je short 043c8h                           ; 74 1d
+    je short 043c9h                           ; 74 1d
     cmp di, word [bp-00ah]                    ; 3b 7e f6
-    jc short 043b8h                           ; 72 08
+    jc short 043b9h                           ; 72 08
     cmp ax, dx                                ; 39 d0
-    jnc short 043b8h                          ; 73 04
+    jnc short 043b9h                          ; 73 04
     cmp bx, si                                ; 39 f3
-    jnbe short 043beh                         ; 77 06
-    jmp near 04635h                           ; e9 7a 02
-    jmp near 04545h                           ; e9 87 01
+    jnbe short 043bfh                         ; 77 06
+    jmp near 04636h                           ; e9 7a 02
+    jmp near 04546h                           ; e9 87 01
     mov dl, byte [bp+017h]                    ; 8a 56 17
     xor dh, dh                                ; 30 f6
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jne short 043cbh                          ; 75 03
-    jmp near 04541h                           ; e9 76 01
+    jne short 043cch                          ; 75 03
+    jmp near 04542h                           ; e9 76 01
     mov CL, strict byte 004h                  ; b1 04
     mov dx, word [bp+010h]                    ; 8b 56 10
     shr dx, CL                                ; d3 ea
@@ -6095,13 +6095,13 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     mov word [bp-010h], dx                    ; 89 56 f0
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 64 5c
+    call 0a050h                               ; e8 63 5c
     xor bx, bx                                ; 31 db
     add ax, si                                ; 01 f0
     adc dx, bx                                ; 11 da
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 57 5c
+    call 0a050h                               ; e8 56 5c
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     dec ax                                    ; 48
@@ -6136,7 +6136,7 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     mov cx, strict word 0000ch                ; b9 0c 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-030h]                         ; 8d 46 d0
-    call 0a0c0h                               ; e8 70 5c
+    call 0a0c0h                               ; e8 6f 5c
     mov word [bp-030h], strict word 00028h    ; c7 46 d0 28 00
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     add ax, si                                ; 01 f0
@@ -6189,7 +6189,7 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 044d5h                               ; e2 fa
+    loop 044d6h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
     push word [bp-01ah]                       ; ff 76 e6
@@ -6205,11 +6205,11 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     mov word [es:bx+01eh], strict word 00000h ; 26 c7 47 1e 00 00
     mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00
     test al, al                               ; 84 c0
-    je short 04541h                           ; 74 38
+    je short 04542h                           ; 74 38
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 1f d4
+    call 01933h                               ; e8 1e d4
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6221,19 +6221,19 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 4a d4
+    call 01976h                               ; e8 49 d4
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 002h                               ; 80 cc 02
     mov word [bp+016h], ax                    ; 89 46 16
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 04640h                           ; e9 ff 00
+    jmp near 04641h                           ; e9 ff 00
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 10 d1
+    call 01660h                               ; e8 0f d1
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6283,35 +6283,35 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     mov al, byte [es:si+001h]                 ; 26 8a 44 01
     mov word [bp+010h], cx                    ; 89 4e 10
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 045ebh                           ; 74 1c
+    je short 045ech                           ; 74 1c
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 045e3h                           ; 74 10
+    je short 045e4h                           ; 74 10
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 045f0h                          ; 75 19
+    jne short 045f1h                          ; 75 19
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor al, al                                ; 30 c0
     or AL, strict byte 002h                   ; 0c 02
     mov word [bp+010h], ax                    ; 89 46 10
-    jmp short 045f0h                          ; eb 0d
+    jmp short 045f1h                          ; eb 0d
     or cl, 004h                               ; 80 c9 04
     mov word [bp+010h], cx                    ; 89 4e 10
-    jmp short 045f0h                          ; eb 05
+    jmp short 045f1h                          ; eb 05
     or cl, 005h                               ; 80 c9 05
-    jmp short 045e6h                          ; eb f6
+    jmp short 045e7h                          ; eb f6
     mov es, [bp-012h]                         ; 8e 46 ee
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jc short 045fdh                           ; 72 03
-    jmp near 04541h                           ; e9 44 ff
+    jc short 045feh                           ; 72 03
+    jmp near 04542h                           ; e9 44 ff
     mov word [bp+008h], 0efc7h                ; c7 46 08 c7 ef
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
-    jmp short 045fah                          ; eb f1
+    jmp short 045fbh                          ; eb f1
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 04545h                           ; e9 33 ff
+    jmp near 04546h                           ; e9 33 ff
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 16 d3
+    call 01933h                               ; e8 15 d3
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6321,7 +6321,7 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 44 d3
+    call 01976h                               ; e8 43 d3
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -6331,16 +6331,16 @@ _int13_cdemu:                                ; 0xf425b LB 0x453
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 12 d0
+    call 01660h                               ; e8 11 d0
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 04554h                           ; e9 ff fe
+    jmp near 04555h                           ; e9 ff fe
     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, 097h, 047h, 0dch
-    db  04bh, 059h, 047h, 097h, 047h, 04eh, 047h, 097h, 047h, 04eh, 047h, 097h, 047h, 0dch, 04bh, 097h
-    db  047h, 097h, 047h, 0dch, 04bh, 0dch, 04bh, 0dch, 04bh, 0dch, 04bh, 0dch, 04bh, 07bh, 047h, 0dch
-    db  04bh, 097h, 047h, 084h, 047h, 0b5h, 047h, 04eh, 047h, 0b5h, 047h, 0feh, 048h, 09eh, 049h, 0b5h
-    db  047h, 0c8h, 049h, 0f6h, 04bh, 0feh, 04bh, 097h, 047h
-_int13_cdrom:                                ; 0xf46ae LB 0x585
+    db  010h, 00dh, 00ch, 00bh, 00ah, 009h, 008h, 005h, 004h, 003h, 002h, 001h, 000h, 098h, 047h, 0ddh
+    db  04bh, 05ah, 047h, 098h, 047h, 04fh, 047h, 098h, 047h, 04fh, 047h, 098h, 047h, 0ddh, 04bh, 098h
+    db  047h, 098h, 047h, 0ddh, 04bh, 0ddh, 04bh, 0ddh, 04bh, 0ddh, 04bh, 0ddh, 04bh, 07ch, 047h, 0ddh
+    db  04bh, 098h, 047h, 085h, 047h, 0b6h, 047h, 04fh, 047h, 0b6h, 047h, 0ffh, 048h, 09fh, 049h, 0b6h
+    db  047h, 0c9h, 049h, 0f7h, 04bh, 0ffh, 04bh, 098h, 047h
+_int13_cdrom:                                ; 0xf46af LB 0x585
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6348,20 +6348,20 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     sub sp, strict byte 0002ah                ; 83 ec 2a
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 af cf
+    call 0166eh                               ; e8 ae cf
     mov word [bp-018h], ax                    ; 89 46 e8
     mov word [bp-00eh], 00122h                ; c7 46 f2 22 01
     mov word [bp-00ch], ax                    ; 89 46 f4
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 8b cf
+    call 01660h                               ; e8 8a cf
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 046e4h                           ; 72 05
+    jc short 046e5h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 04703h                           ; 72 1f
+    jc short 04704h                           ; 72 1f
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6373,9 +6373,9 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 79 d2
+    call 01976h                               ; e8 78 d2
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04c14h                           ; e9 11 05
+    jmp near 04c15h                           ; e9 11 05
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     les bx, [bp-00eh]                         ; c4 5e f2
@@ -6383,59 +6383,59 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov dl, byte [es:bx+00114h]               ; 26 8a 97 14 01
     mov byte [bp-008h], dl                    ; 88 56 f8
     cmp dl, 010h                              ; 80 fa 10
-    jc short 04728h                           ; 72 0e
+    jc short 04729h                           ; 72 0e
     push ax                                   ; 50
     mov al, byte [bp+019h]                    ; 8a 46 19
     push ax                                   ; 50
     mov ax, 003dfh                            ; b8 df 03
     push ax                                   ; 50
     mov ax, 00416h                            ; b8 16 04
-    jmp short 046f5h                          ; eb cd
+    jmp short 046f6h                          ; eb cd
     mov al, byte [bp+019h]                    ; 8a 46 19
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00050h                ; 3d 50 00
-    jnbe short 04797h                         ; 77 63
+    jnbe short 04798h                         ; 77 63
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 04655h                            ; bf 55 46
+    mov di, 04656h                            ; bf 56 46
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04672h]               ; 2e 8b 85 72 46
+    mov ax, word [cs:di+04673h]               ; 2e 8b 85 73 46
     mov bx, word [bp+018h]                    ; 8b 5e 18
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 04c1ch                           ; e9 c3 04
+    jmp near 04c1dh                           ; e9 c3 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 f0 ce
+    call 01652h                               ; e8 ef ce
     mov cl, al                                ; 88 c1
     mov bh, al                                ; 88 c7
     mov word [bp+018h], bx                    ; 89 5e 18
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 ec ce
+    call 01660h                               ; e8 eb ce
     test cl, cl                               ; 84 c9
-    je short 04794h                           ; 74 1c
-    jmp near 04c2dh                           ; e9 b2 04
+    je short 04795h                           ; 74 1c
+    jmp near 04c2eh                           ; e9 b2 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 04c1fh                           ; e9 9b 04
+    jmp near 04c20h                           ; e9 9b 04
     mov word [bp+012h], 0aa55h                ; c7 46 12 55 aa
     or bh, 030h                               ; 80 cf 30
     mov word [bp+018h], bx                    ; 89 5e 18
     mov word [bp+016h], strict word 00007h    ; c7 46 16 07 00
-    jmp near 04be0h                           ; e9 49 04
+    jmp near 04be1h                           ; e9 49 04
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 91 d1
+    call 01933h                               ; e8 90 d1
     mov al, byte [bp+019h]                    ; 8a 46 19
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6444,7 +6444,7 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov ax, 00333h                            ; b8 33 03
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 047f6h                          ; eb 41
+    jmp short 047f7h                          ; eb 41
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, bx                                ; 89 df
@@ -6459,7 +6459,7 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov ax, word [es:bx+00eh]                 ; 26 8b 47 0e
     mov word [bp-012h], ax                    ; 89 46 ee
     or ax, word [bp-014h]                     ; 0b 46 ec
-    je short 04800h                           ; 74 1b
+    je short 04801h                           ; 74 1b
     mov al, byte [bp+019h]                    ; 8a 46 19
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6469,9 +6469,9 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 7c d1
+    call 01976h                               ; e8 7b d1
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 04c14h                           ; e9 14 04
+    jmp near 04c15h                           ; e9 14 04
     mov es, [bp-020h]                         ; 8e 46 e0
     mov ax, word [es:di+008h]                 ; 26 8b 45 08
     mov word [bp-014h], ax                    ; 89 46 ec
@@ -6482,15 +6482,15 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov byte [bp-00fh], 000h                  ; c6 46 f1 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     cmp ax, strict word 00044h                ; 3d 44 00
-    je short 04828h                           ; 74 05
+    je short 04829h                           ; 74 05
     cmp ax, strict word 00047h                ; 3d 47 00
-    jne short 0482bh                          ; 75 03
-    jmp near 04bdch                           ; e9 b1 03
+    jne short 0482ch                          ; 75 03
+    jmp near 04bddh                           ; e9 b1 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 0a0c0h                               ; e8 88 58
+    call 0a0c0h                               ; e8 87 58
     mov word [bp-02eh], strict word 00028h    ; c7 46 d2 28 00
     mov ax, word [bp-014h]                    ; 8b 46 ec
     mov dx, word [bp-012h]                    ; 8b 56 ee
@@ -6523,7 +6523,7 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov cx, strict word 0000bh                ; b9 0b 00
     sal bx, 1                                 ; d1 e3
     rcl si, 1                                 ; d1 d6
-    loop 0488ah                               ; e2 fa
+    loop 0488bh                               ; e2 fa
     push si                                   ; 56
     push bx                                   ; 53
     xor ax, ax                                ; 31 c0
@@ -6542,15 +6542,15 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov cx, strict word 0000bh                ; b9 0b 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 048bah                               ; e2 fa
+    loop 048bbh                               ; e2 fa
     mov es, [bp-020h]                         ; 8e 46 e0
     mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp byte [bp-016h], 000h                  ; 80 7e ea 00
-    je short 04924h                           ; 74 57
+    je short 04925h                           ; 74 57
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 5b d0
+    call 01933h                               ; e8 5a d0
     mov al, byte [bp-016h]                    ; 8a 46 ea
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6561,14 +6561,14 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 86 d0
+    call 01976h                               ; e8 85 d0
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 04c1ch                           ; e9 1e 03
+    jmp near 04c1dh                           ; e9 1e 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe short 0496fh                         ; 77 6c
+    jnbe short 04970h                         ; 77 6c
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6577,21 +6577,21 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     add si, ax                                ; 01 c6
     mov cl, byte [es:si+025h]                 ; 26 8a 4c 25
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 04987h                           ; 74 6c
+    je short 04988h                           ; 74 6c
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 0495fh                           ; 74 3f
+    je short 04960h                           ; 74 3f
     test bx, bx                               ; 85 db
-    je short 04927h                           ; 74 03
-    jmp near 04bdch                           ; e9 b5 02
+    je short 04928h                           ; 74 03
+    jmp near 04bddh                           ; e9 b5 02
     cmp cl, 0ffh                              ; 80 f9 ff
-    jne short 0493eh                          ; 75 12
+    jne short 0493fh                          ; 75 12
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b4h                               ; 80 cc b4
     mov word [bp+018h], ax                    ; 89 46 18
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 04c1ch                           ; e9 de 02
+    jmp near 04c1dh                           ; e9 de 02
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6605,14 +6605,14 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp short 04924h                          ; eb c5
+    jmp short 04925h                          ; eb c5
     test cl, cl                               ; 84 c9
-    jne short 04972h                          ; 75 0f
+    jne short 04973h                          ; 75 0f
     or bh, 0b0h                               ; 80 cf b0
     mov word [bp+018h], bx                    ; 89 5e 18
     mov byte [bp+018h], cl                    ; 88 4e 18
-    jmp near 04c1fh                           ; e9 b0 02
-    jmp near 04c14h                           ; e9 a2 02
+    jmp near 04c20h                           ; e9 b0 02
+    jmp near 04c15h                           ; e9 a2 02
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6623,15 +6623,15 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     add bx, ax                                ; 01 c3
     mov byte [es:bx+025h], cl                 ; 26 88 4f 25
     test cl, cl                               ; 84 c9
-    jne short 04999h                          ; 75 0e
+    jne short 0499ah                          ; 75 0e
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+018h]                    ; 8b 56 18
     xor dl, dl                                ; 30 d2
     or dx, ax                                 ; 09 c2
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 04924h                          ; eb 8b
+    jmp short 04925h                          ; eb 8b
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0498dh                          ; eb ef
+    jmp short 0498eh                          ; eb ef
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6640,14 +6640,14 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     add si, ax                                ; 01 c6
     mov cl, byte [es:si+025h]                 ; 26 8a 4c 25
     test cl, cl                               ; 84 c9
-    je short 049bbh                           ; 74 06
+    je short 049bch                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 0477eh                           ; e9 c3 fd
-    je short 049e2h                           ; 74 25
+    jmp near 0477fh                           ; e9 c3 fd
+    je short 049e3h                           ; 74 25
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 04c1ch                           ; e9 54 02
+    jmp near 04c1dh                           ; e9 54 02
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
     mov si, bx                                ; 89 de
@@ -6656,10 +6656,10 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov ax, word [es:bx]                      ; 26 8b 07
     mov word [bp-01eh], ax                    ; 89 46 e2
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jnc short 049e5h                          ; 73 05
-    jmp short 0496fh                          ; eb 8d
-    jmp near 04bdch                           ; e9 f7 01
-    jc short 04a47h                           ; 72 60
+    jnc short 049e6h                          ; 73 05
+    jmp short 04970h                          ; eb 8d
+    jmp near 04bddh                           ; e9 f7 01
+    jc short 04a48h                           ; 72 60
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6682,8 +6682,8 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov word [es:bx+014h], strict word 0ffffh ; 26 c7 47 14 ff ff
     mov word [es:bx+016h], strict word 0ffffh ; 26 c7 47 16 ff ff
     cmp word [bp-01eh], strict byte 0001eh    ; 83 7e e2 1e
-    jnc short 04a50h                          ; 73 03
-    jmp near 04b10h                           ; e9 c0 00
+    jnc short 04a51h                          ; 73 03
+    jmp near 04b11h                           ; e9 c0 00
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:si], strict word 0001eh      ; 26 c7 04 1e 00
     mov ax, word [bp-018h]                    ; 8b 46 e8
@@ -6728,25 +6728,25 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov byte [es:bx+00242h], 011h             ; 26 c6 87 42 02 11
     xor bl, bl                                ; 30 db
     xor bh, bh                                ; 30 ff
-    jmp short 04af0h                          ; eb 05
+    jmp short 04af1h                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 04b06h                          ; 73 16
+    jnc short 04b07h                          ; 73 16
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 01652h                               ; e8 52 cb
+    call 01652h                               ; e8 51 cb
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 04aebh                          ; eb e5
+    jmp short 04aech                          ; eb e5
     neg bl                                    ; f6 db
     les di, [bp-00eh]                         ; c4 7e f2
     mov byte [es:di+00243h], bl               ; 26 88 9d 43 02
     cmp word [bp-01eh], strict byte 00042h    ; 83 7e e2 42
-    jnc short 04b19h                          ; 73 03
-    jmp near 04bdch                           ; e9 c3 00
+    jnc short 04b1ah                          ; 73 03
+    jmp near 04bddh                           ; e9 c3 00
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -6766,7 +6766,7 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov word [es:si+020h], strict word 00024h ; 26 c7 44 20 24 00
     mov word [es:si+022h], strict word 00000h ; 26 c7 44 22 00 00
     test al, al                               ; 84 c0
-    jne short 04b63h                          ; 75 0c
+    jne short 04b64h                          ; 75 0c
     mov word [es:si+024h], 05349h             ; 26 c7 44 24 49 53
     mov word [es:si+026h], 02041h             ; 26 c7 44 26 41 20
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6775,7 +6775,7 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov word [es:si+02ch], 02020h             ; 26 c7 44 2c 20 20
     mov word [es:si+02eh], 02020h             ; 26 c7 44 2e 20 20
     test al, al                               ; 84 c0
-    jne short 04b98h                          ; 75 16
+    jne short 04b99h                          ; 75 16
     mov word [es:si+030h], dx                 ; 26 89 54 30
     mov word [es:si+032h], strict word 00000h ; 26 c7 44 32 00 00
     mov word [es:si+034h], strict word 00000h ; 26 c7 44 34 00 00
@@ -6790,9 +6790,9 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     mov word [es:si+03eh], strict word 00000h ; 26 c7 44 3e 00 00
     xor al, al                                ; 30 c0
     mov AH, strict byte 01eh                  ; b4 1e
-    jmp short 04bc3h                          ; eb 05
+    jmp short 04bc4h                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04bd3h                          ; 73 10
+    jnc short 04bd4h                          ; 73 10
     mov bl, ah                                ; 88 e3
     xor bh, bh                                ; 30 ff
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6800,7 +6800,7 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     add al, byte [es:bx]                      ; 26 02 07
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 04bbeh                          ; eb eb
+    jmp short 04bbfh                          ; eb eb
     neg al                                    ; f6 d8
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:si+041h], al                 ; 26 88 44 41
@@ -6808,7 +6808,7 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 75 ca
+    call 01660h                               ; e8 74 ca
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6817,16 +6817,16 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     retn                                      ; c3
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 04c2dh                          ; eb 2f
+    jmp short 04c2eh                          ; eb 2f
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je short 04bdch                           ; 74 d9
+    je short 04bddh                           ; 74 d9
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 04c14h                           ; 72 0c
-    jbe short 04bdch                          ; 76 d2
+    jc short 04c15h                           ; 72 0c
+    jbe short 04bddh                          ; 76 d2
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 04c14h                           ; 72 05
+    jc short 04c15h                           ; 72 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 04bdch                          ; 76 c8
+    jbe short 04bddh                          ; 76 c8
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -6835,32 +6835,32 @@ _int13_cdrom:                                ; 0xf46ae LB 0x585
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 33 ca
+    call 01660h                               ; e8 32 ca
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp short 04befh                          ; eb bc
-print_boot_device_:                          ; 0xf4c33 LB 0x51
+    jmp short 04bf0h                          ; eb bc
+print_boot_device_:                          ; 0xf4c34 LB 0x51
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 04c40h                           ; 74 05
+    je short 04c41h                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 04c5ah                          ; eb 1a
+    jmp short 04c5bh                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 04c49h                           ; 74 05
+    je short 04c4ah                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 04c5ah                          ; eb 11
+    jmp short 04c5bh                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04c52h                          ; 75 04
+    jne short 04c53h                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 04c5ah                          ; eb 08
+    jmp short 04c5bh                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 04c7eh                           ; 74 27
+    je short 04c7fh                           ; 74 27
     mov dx, strict word 00001h                ; ba 01 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 ce cc
+    call 01933h                               ; e8 cd cc
     mov ax, dx                                ; 89 d0
     mov dx, strict word 0000ah                ; ba 0a 00
     imul dx                                   ; f7 ea
@@ -6870,13 +6870,13 @@ print_boot_device_:                          ; 0xf4c33 LB 0x51
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 fb cc
+    call 01976h                               ; e8 fa cc
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-print_boot_failure_:                         ; 0xf4c84 LB 0x9f
+print_boot_failure_:                         ; 0xf4c85 LB 0x9f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6886,41 +6886,41 @@ print_boot_failure_:                         ; 0xf4c84 LB 0x9f
     xor ch, ch                                ; 30 ed
     mov si, cx                                ; 89 ce
     test al, al                               ; 84 c0
-    je short 04cb6h                           ; 74 1f
+    je short 04cb7h                           ; 74 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 91 cc
+    call 01933h                               ; e8 90 cc
     mov cx, 00ddah                            ; b9 da 0d
     push cx                                   ; 51
     mov cx, 004a8h                            ; b9 a8 04
     push cx                                   ; 51
     mov cx, strict word 00004h                ; b9 04 00
     push cx                                   ; 51
-    call 01976h                               ; e8 c5 cc
+    call 01976h                               ; e8 c4 cc
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 04cfeh                          ; eb 48
+    jmp short 04cffh                          ; eb 48
     test dl, dl                               ; 84 d2
-    je short 04ccah                           ; 74 10
+    je short 04ccbh                           ; 74 10
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 6e cc
+    call 01933h                               ; e8 6d cc
     mov cx, 00de4h                            ; b9 e4 0d
-    jmp short 04ca5h                          ; eb db
+    jmp short 04ca6h                          ; eb db
     test bl, 080h                             ; f6 c3 80
-    je short 04ce0h                           ; 74 11
+    je short 04ce1h                           ; 74 11
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 59 cc
+    call 01933h                               ; e8 58 cc
     push si                                   ; 56
     mov cx, 00dd0h                            ; b9 d0 0d
-    jmp short 04cefh                          ; eb 0f
+    jmp short 04cf0h                          ; eb 0f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 48 cc
+    call 01933h                               ; e8 47 cc
     push si                                   ; 56
     mov cx, 00dc6h                            ; b9 c6 0d
     push cx                                   ; 51
@@ -6928,25 +6928,25 @@ print_boot_failure_:                         ; 0xf4c84 LB 0x9f
     push cx                                   ; 51
     mov cx, strict word 00004h                ; b9 04 00
     push cx                                   ; 51
-    call 01976h                               ; e8 7b cc
+    call 01976h                               ; e8 7a cc
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04d1bh                          ; 75 17
+    jne short 04d1ch                          ; 75 17
     test dh, dh                               ; 84 f6
-    jne short 04d0dh                          ; 75 05
+    jne short 04d0eh                          ; 75 05
     mov dx, 004d5h                            ; ba d5 04
-    jmp short 04d10h                          ; eb 03
+    jmp short 04d11h                          ; eb 03
     mov dx, 004ffh                            ; ba ff 04
     push dx                                   ; 52
     mov dx, strict word 00007h                ; ba 07 00
     push dx                                   ; 52
-    call 01976h                               ; e8 5e cc
+    call 01976h                               ; e8 5d cc
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00002h                               ; c2 02 00
-print_cdromboot_failure_:                    ; 0xf4d23 LB 0x2a
+print_cdromboot_failure_:                    ; 0xf4d24 LB 0x2a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -6956,13 +6956,13 @@ print_cdromboot_failure_:                    ; 0xf4d23 LB 0x2a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 fd cb
+    call 01933h                               ; e8 fc cb
     push dx                                   ; 52
     mov dx, 00534h                            ; ba 34 05
     push dx                                   ; 52
     mov dx, strict word 00004h                ; ba 04 00
     push dx                                   ; 52
-    call 01976h                               ; e8 34 cc
+    call 01976h                               ; e8 33 cc
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -6970,7 +6970,7 @@ print_cdromboot_failure_:                    ; 0xf4d23 LB 0x2a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf4d4d LB 0x28d
+_int19_function:                             ; 0xf4d4e LB 0x28d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6978,17 +6978,17 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     sub sp, strict byte 00010h                ; 83 ec 10
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 10 c9
+    call 0166eh                               ; e8 0f c9
     mov bx, ax                                ; 89 c3
     mov di, ax                                ; 89 c7
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     mov ax, strict word 0003dh                ; b8 3d 00
-    call 016aeh                               ; e8 42 c9
+    call 016aeh                               ; e8 41 c9
     mov dl, al                                ; 88 c2
     xor dh, dh                                ; 30 f6
     mov word [bp-00eh], dx                    ; 89 56 f2
     mov ax, strict word 00038h                ; b8 38 00
-    call 016aeh                               ; e8 35 c9
+    call 016aeh                               ; e8 34 c9
     and AL, strict byte 0f0h                  ; 24 f0
     mov byte [bp-010h], al                    ; 88 46 f0
     mov byte [bp-00fh], dh                    ; 88 76 f1
@@ -6998,7 +6998,7 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     or dx, ax                                 ; 09 c2
     mov word [bp-00eh], dx                    ; 89 56 f2
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016aeh                               ; e8 1b c9
+    call 016aeh                               ; e8 1a c9
     and AL, strict byte 00fh                  ; 24 0f
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 00ch                  ; b1 0c
@@ -7006,38 +7006,38 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     or word [bp-00eh], ax                     ; 09 46 f2
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01652h                               ; e8 ac c8
+    call 01652h                               ; e8 ab c8
     test al, al                               ; 84 c0
-    je short 04db7h                           ; 74 0d
+    je short 04db8h                           ; 74 0d
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01652h                               ; e8 a0 c8
+    call 01652h                               ; e8 9f c8
     xor ah, ah                                ; 30 e4
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04dceh                          ; 75 11
+    jne short 04dcfh                          ; 75 11
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016aeh                               ; e8 eb c8
+    call 016aeh                               ; e8 ea c8
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 004h                  ; b1 04
     sar ax, CL                                ; d3 f8
-    call 07ddah                               ; e8 0c 30
+    call 07ddbh                               ; e8 0c 30
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04dd9h                          ; 75 05
+    jne short 04ddah                          ; 75 05
     mov CL, strict byte 004h                  ; b1 04
     shr word [bp-00eh], CL                    ; d3 6e f2
     cmp byte [bp+004h], 003h                  ; 80 7e 04 03
-    jne short 04de7h                          ; 75 08
+    jne short 04de8h                          ; 75 08
     mov al, byte [bp-00dh]                    ; 8a 46 f3
     xor ah, ah                                ; 30 e4
     mov word [bp-00eh], ax                    ; 89 46 f2
     cmp byte [bp+004h], 004h                  ; 80 7e 04 04
-    jne short 04df2h                          ; 75 05
+    jne short 04df3h                          ; 75 05
     mov CL, strict byte 00ch                  ; b1 0c
     shr word [bp-00eh], CL                    ; d3 6e f2
     cmp word [bp-00eh], strict byte 00010h    ; 83 7e f2 10
-    jnc short 04dfch                          ; 73 04
+    jnc short 04dfdh                          ; 73 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -7046,7 +7046,7 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 21 cb
+    call 01933h                               ; e8 20 cb
     push word [bp-00eh]                       ; ff 76 f2
     mov al, byte [bp+004h]                    ; 8a 46 04
     xor ah, ah                                ; 30 e4
@@ -7055,42 +7055,42 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 50 cb
+    call 01976h                               ; e8 4f cb
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     and ax, strict word 0000fh                ; 25 0f 00
     cmp ax, strict word 00002h                ; 3d 02 00
-    jc short 04e42h                           ; 72 0e
-    jbe short 04e51h                          ; 76 1b
+    jc short 04e43h                           ; 72 0e
+    jbe short 04e52h                          ; 76 1b
     cmp ax, strict word 00004h                ; 3d 04 00
-    je short 04e6eh                           ; 74 33
+    je short 04e6fh                           ; 74 33
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 04e64h                           ; 74 24
-    jmp short 04e9dh                          ; eb 5b
+    je short 04e65h                           ; 74 24
+    jmp short 04e9eh                          ; eb 5b
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 04e9dh                          ; 75 56
+    jne short 04e9eh                          ; 75 56
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-008h], al                    ; 88 46 f8
-    jmp short 04eb1h                          ; eb 60
+    jmp short 04eb2h                          ; eb 60
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, di                                ; 89 f8
-    call 01652h                               ; e8 f9 c7
+    call 01652h                               ; e8 f8 c7
     add AL, strict byte 080h                  ; 04 80
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
-    jmp short 04eb1h                          ; eb 4d
+    jmp short 04eb2h                          ; eb 4d
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
-    jmp short 04e78h                          ; eb 0a
+    jmp short 04e79h                          ; eb 0a
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04eb1h                           ; 74 39
-    call 03e1eh                               ; e8 a3 ef
+    je short 04eb2h                           ; 74 39
+    call 03e1eh                               ; e8 a2 ef
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 04ea4h                           ; 74 23
-    call 04d23h                               ; e8 9f fe
+    je short 04ea5h                           ; 74 23
+    call 04d24h                               ; e8 9f fe
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -7100,64 +7100,64 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov cx, strict word 00001h                ; b9 01 00
-    call 04c84h                               ; e8 e7 fd
+    call 04c85h                               ; e8 e7 fd
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 04fd3h                           ; e9 2f 01
+    jmp near 04fd4h                           ; e9 2f 01
     mov dx, 00372h                            ; ba 72 03
     mov ax, di                                ; 89 f8
-    call 0166eh                               ; e8 c2 c7
+    call 0166eh                               ; e8 c1 c7
     mov si, ax                                ; 89 c6
     mov byte [bp-006h], bh                    ; 88 7e fa
     cmp byte [bp-00ah], 001h                  ; 80 7e f6 01
-    jne short 04f0ch                          ; 75 55
+    jne short 04f0dh                          ; 75 55
     xor si, si                                ; 31 f6
     mov ax, 0e200h                            ; b8 00 e2
     mov es, ax                                ; 8e c0
     cmp word [es:si], 0aa55h                  ; 26 81 3c 55 aa
-    jne short 04e84h                          ; 75 bf
+    jne short 04e85h                          ; 75 bf
     mov cx, ax                                ; 89 c1
     mov si, word [es:si+01ah]                 ; 26 8b 74 1a
     cmp word [es:si+002h], 0506eh             ; 26 81 7c 02 6e 50
-    jne short 04e84h                          ; 75 b1
+    jne short 04e85h                          ; 75 b1
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04e84h                          ; 75 aa
+    jne short 04e85h                          ; 75 aa
     mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
     mov dx, word [es:bx]                      ; 26 8b 17
     mov ax, word [es:bx+002h]                 ; 26 8b 47 02
     cmp ax, 06568h                            ; 3d 68 65
-    jne short 04f0eh                          ; 75 24
+    jne short 04f0fh                          ; 75 24
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04f0eh                          ; 75 1e
+    jne short 04f0fh                          ; 75 1e
     mov bl, byte [bp-006h]                    ; 8a 5e fa
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-00ah]                    ; 8a 56 f6
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 04c33h                               ; e8 31 fd
+    call 04c34h                               ; e8 31 fd
     mov word [bp-014h], strict word 00006h    ; c7 46 ec 06 00
     mov word [bp-012h], cx                    ; 89 4e ee
-    jmp short 04f2dh                          ; eb 21
-    jmp short 04f33h                          ; eb 25
+    jmp short 04f2eh                          ; eb 21
+    jmp short 04f34h                          ; eb 25
     mov bl, byte [bp-006h]                    ; 8a 5e fa
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-00ah]                    ; 8a 56 f6
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 04c33h                               ; e8 13 fd
+    call 04c34h                               ; e8 13 fd
     sti                                       ; fb
     mov word [bp-012h], cx                    ; 89 4e ee
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+01ah]                 ; 26 8b 44 1a
     mov word [bp-014h], ax                    ; 89 46 ec
     call far [bp-014h]                        ; ff 5e ec
-    jmp near 04e84h                           ; e9 51 ff
+    jmp near 04e85h                           ; e9 51 ff
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 04f60h                          ; 75 27
+    jne short 04f61h                          ; 75 27
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04f60h                          ; 75 21
+    jne short 04f61h                          ; 75 21
     mov si, 007c0h                            ; be c0 07
     mov es, si                                ; 8e c6
     mov dl, byte [bp-006h]                    ; 8a 56 fa
@@ -7170,32 +7170,32 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     mov ax, strict word 00000h                ; b8 00 00
     sbb ax, strict byte 00000h                ; 83 d8 00
     test ax, ax                               ; 85 c0
-    je short 04f60h                           ; 74 03
-    jmp near 04e84h                           ; e9 24 ff
+    je short 04f61h                           ; 74 03
+    jmp near 04e85h                           ; e9 24 ff
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 04f6ah                           ; 74 04
+    je short 04f6bh                           ; 74 04
     xor bl, bl                                ; 30 db
-    jmp short 04f6ch                          ; eb 02
+    jmp short 04f6dh                          ; eb 02
     mov BL, strict byte 001h                  ; b3 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04f74h                           ; 74 02
+    je short 04f75h                           ; 74 02
     mov BL, strict byte 001h                  ; b3 01
     xor dx, dx                                ; 31 d2
     mov ax, si                                ; 89 f0
-    call 0166eh                               ; e8 f3 c6
+    call 0166eh                               ; e8 f2 c6
     mov di, ax                                ; 89 c7
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, si                                ; 89 f0
-    call 0166eh                               ; e8 e9 c6
+    call 0166eh                               ; e8 e8 c6
     cmp di, ax                                ; 39 c7
-    je short 04f9ah                           ; 74 11
+    je short 04f9bh                           ; 74 11
     test bl, bl                               ; 84 db
-    jne short 04fb2h                          ; 75 25
+    jne short 04fb3h                          ; 75 25
     mov dx, 001feh                            ; ba fe 01
     mov ax, si                                ; 89 f0
-    call 0166eh                               ; e8 d9 c6
+    call 0166eh                               ; e8 d8 c6
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04fb2h                           ; 74 18
+    je short 04fb3h                           ; 74 18
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -7205,14 +7205,14 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor cx, cx                                ; 31 c9
-    jmp near 04e9ah                           ; e9 e8 fe
+    jmp near 04e9bh                           ; e9 e8 fe
     mov bl, byte [bp-006h]                    ; 8a 5e fa
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-00ah]                    ; 8a 56 f6
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 04c33h                               ; e8 6f fc
+    call 04c34h                               ; e8 6f fc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
@@ -7225,7 +7225,7 @@ _int19_function:                             ; 0xf4d4d LB 0x28d
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4fda LB 0x16
+keyboard_panic_:                             ; 0xf4fdb LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push ax                                   ; 50
@@ -7233,12 +7233,12 @@ keyboard_panic_:                             ; 0xf4fda LB 0x16
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 8d c9
+    call 01976h                               ; e8 8c c9
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4ff0 LB 0x26a
+_keyboard_init:                              ; 0xf4ff1 LB 0x26a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov AL, strict byte 0aah                  ; b0 aa
@@ -7250,44 +7250,44 @@ _keyboard_init:                              ; 0xf4ff0 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05013h                           ; 74 0d
+    je short 05014h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05013h                          ; 76 08
+    jbe short 05014h                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ffch                          ; eb e9
+    jmp short 04ffdh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0501ch                          ; 75 05
+    jne short 0501dh                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04fdah                               ; e8 be ff
+    call 04fdbh                               ; e8 be ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05036h                          ; 75 0d
+    jne short 05037h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05036h                          ; 76 08
+    jbe short 05037h                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0501fh                          ; eb e9
+    jmp short 05020h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05040h                          ; 75 06
+    jne short 05041h                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04fdah                               ; e8 9a ff
+    call 04fdbh                               ; e8 9a ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, strict word 00055h                ; 3d 55 00
-    je short 05051h                           ; 74 06
+    je short 05052h                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04fdah                               ; e8 89 ff
+    call 04fdbh                               ; e8 89 ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7297,44 +7297,44 @@ _keyboard_init:                              ; 0xf4ff0 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05071h                           ; 74 0d
+    je short 05072h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05071h                          ; 76 08
+    jbe short 05072h                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0505ah                          ; eb e9
+    jmp short 0505bh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0507bh                          ; 75 06
+    jne short 0507ch                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04fdah                               ; e8 5f ff
+    call 04fdbh                               ; e8 5f ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05095h                          ; 75 0d
+    jne short 05096h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05095h                          ; 76 08
+    jbe short 05096h                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0507eh                          ; eb e9
+    jmp short 0507fh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0509fh                          ; 75 06
+    jne short 050a0h                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04fdah                               ; e8 3b ff
+    call 04fdbh                               ; e8 3b ff
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test ax, ax                               ; 85 c0
-    je short 050afh                           ; 74 06
+    je short 050b0h                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04fdah                               ; e8 2b ff
+    call 04fdbh                               ; e8 2b ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7344,67 +7344,67 @@ _keyboard_init:                              ; 0xf4ff0 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 050cfh                           ; 74 0d
+    je short 050d0h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050cfh                          ; 76 08
+    jbe short 050d0h                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050b8h                          ; eb e9
+    jmp short 050b9h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050d9h                          ; 75 06
+    jne short 050dah                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04fdah                               ; e8 01 ff
+    call 04fdbh                               ; e8 01 ff
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 050f3h                          ; 75 0d
+    jne short 050f4h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050f3h                          ; 76 08
+    jbe short 050f4h                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050dch                          ; eb e9
+    jmp short 050ddh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050fdh                          ; 75 06
+    jne short 050feh                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04fdah                               ; e8 dd fe
+    call 04fdbh                               ; e8 dd fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 0510eh                           ; 74 06
+    je short 0510fh                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04fdah                               ; e8 cc fe
+    call 04fdbh                               ; e8 cc fe
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05120h                          ; 75 08
+    jne short 05121h                          ; 75 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0510eh                          ; eb ee
+    jmp short 0510fh                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 05139h                           ; 74 0e
+    je short 0513ah                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 05139h                           ; 74 06
+    je short 0513ah                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04fdah                               ; e8 a1 fe
+    call 04fdbh                               ; e8 a1 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7414,44 +7414,44 @@ _keyboard_init:                              ; 0xf4ff0 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05159h                           ; 74 0d
+    je short 0515ah                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05159h                          ; 76 08
+    jbe short 0515ah                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05142h                          ; eb e9
+    jmp short 05143h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05163h                          ; 75 06
+    jne short 05164h                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04fdah                               ; e8 77 fe
+    call 04fdbh                               ; e8 77 fe
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0517dh                          ; 75 0d
+    jne short 0517eh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0517dh                          ; 76 08
+    jbe short 0517eh                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05166h                          ; eb e9
+    jmp short 05167h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05187h                          ; 75 06
+    jne short 05188h                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04fdah                               ; e8 53 fe
+    call 04fdbh                               ; e8 53 fe
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 05198h                           ; 74 06
+    je short 05199h                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04fdah                               ; e8 42 fe
+    call 04fdbh                               ; e8 42 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7461,18 +7461,18 @@ _keyboard_init:                              ; 0xf4ff0 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 051b8h                           ; 74 0d
+    je short 051b9h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 051b8h                          ; 76 08
+    jbe short 051b9h                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 051a1h                          ; eb e9
+    jmp short 051a2h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 051c2h                          ; 75 06
+    jne short 051c3h                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04fdah                               ; e8 18 fe
+    call 04fdbh                               ; e8 18 fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7482,18 +7482,18 @@ _keyboard_init:                              ; 0xf4ff0 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 051e2h                           ; 74 0d
+    je short 051e3h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 051e2h                          ; 76 08
+    jbe short 051e3h                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 051cbh                          ; eb e9
+    jmp short 051cch                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 051ech                          ; 75 06
+    jne short 051edh                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04fdah                               ; e8 ee fd
+    call 04fdbh                               ; e8 ee fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7503,53 +7503,53 @@ _keyboard_init:                              ; 0xf4ff0 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0520ch                           ; 74 0d
+    je short 0520dh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0520ch                          ; 76 08
+    jbe short 0520dh                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 051f5h                          ; eb e9
+    jmp short 051f6h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05216h                          ; 75 06
+    jne short 05217h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04fdah                               ; e8 c4 fd
+    call 04fdbh                               ; e8 c4 fd
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05230h                          ; 75 0d
+    jne short 05231h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05230h                          ; 76 08
+    jbe short 05231h                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05219h                          ; eb e9
+    jmp short 0521ah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0523ah                          ; 75 06
+    jne short 0523bh                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04fdah                               ; e8 a0 fd
+    call 04fdbh                               ; e8 a0 fd
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    je short 0524bh                           ; 74 06
+    je short 0524ch                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04fdah                               ; e8 8f fd
+    call 04fdbh                               ; e8 8f fd
     mov AL, strict byte 0a8h                  ; b0 a8
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
     xor ax, ax                                ; 31 c0
-    call 0674ah                               ; e8 f4 14
+    call 0674bh                               ; e8 f4 14
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf525a LB 0x9e
+enqueue_key_:                                ; 0xf525b LB 0x9e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -7561,35 +7561,35 @@ enqueue_key_:                                ; 0xf525a LB 0x9e
     mov bl, dl                                ; 88 d3
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 fe c3
+    call 0166eh                               ; e8 fd c3
     mov di, ax                                ; 89 c7
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 f3 c3
+    call 0166eh                               ; e8 f2 c3
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 05288h                           ; 72 03
+    jc short 05289h                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 05290h                          ; 75 04
+    jne short 05291h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 052bah                          ; eb 2a
+    jmp short 052bbh                          ; eb 2a
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, si                                ; 89 f2
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 c2 c3
+    call 01660h                               ; e8 c1 c3
     mov bl, byte [bp-00ah]                    ; 8a 5e f6
     xor bh, bh                                ; 30 ff
     lea dx, [si+001h]                         ; 8d 54 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 b4 c3
+    call 01660h                               ; e8 b3 c3
     mov bx, cx                                ; 89 cb
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 c5 c3
+    call 0167ch                               ; e8 c4 c3
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop di                                    ; 5f
@@ -7599,10 +7599,10 @@ enqueue_key_:                                ; 0xf525a LB 0x9e
     pop bp                                    ; 5d
     retn                                      ; c3
     db  0d4h, 0c6h, 0c5h, 0bah, 0b8h, 0b6h, 0aah, 09dh, 054h, 053h, 046h, 045h, 03ah, 038h, 036h, 02ah
-    db  01dh, 03eh, 056h, 0f9h, 053h, 099h, 053h, 099h, 053h, 088h, 054h, 06ah, 053h, 00ch, 055h, 07dh
-    db  055h, 024h, 056h, 002h, 056h, 040h, 054h, 099h, 053h, 099h, 053h, 0cah, 054h, 08ah, 053h, 05dh
-    db  055h, 0e2h, 055h, 01dh, 056h
-_int09_function:                             ; 0xf52f8 LB 0x4cd
+    db  01dh, 03fh, 056h, 0fah, 053h, 09ah, 053h, 09ah, 053h, 089h, 054h, 06bh, 053h, 00dh, 055h, 07eh
+    db  055h, 025h, 056h, 003h, 056h, 041h, 054h, 09ah, 053h, 09ah, 053h, 0cbh, 054h, 08bh, 053h, 05eh
+    db  055h, 0e3h, 055h, 01eh, 056h
+_int09_function:                             ; 0xf52f9 LB 0x4cd
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
@@ -7610,86 +7610,86 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov al, byte [bp+014h]                    ; 8a 46 14
     mov byte [bp-004h], al                    ; 88 46 fc
     test al, al                               ; 84 c0
-    jne short 05325h                          ; 75 1c
+    jne short 05326h                          ; 75 1c
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 1f c6
+    call 01933h                               ; e8 1e c6
     mov ax, 00587h                            ; b8 87 05
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 57 c6
+    call 01976h                               ; e8 56 c6
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 053f3h                           ; e9 ce 00
+    jmp near 053f4h                           ; e9 ce 00
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 24 c3
+    call 01652h                               ; e8 23 c3
     mov byte [bp-006h], al                    ; 88 46 fa
     mov byte [bp-008h], al                    ; 88 46 f8
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 15 c3
+    call 01652h                               ; e8 14 c3
     mov byte [bp-00ah], al                    ; 88 46 f6
     mov byte [bp-010h], al                    ; 88 46 f0
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 06 c3
+    call 01652h                               ; e8 05 c3
     mov byte [bp-00ch], al                    ; 88 46 f4
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00012h                ; b9 12 00
-    mov di, 052c3h                            ; bf c3 52
+    mov di, 052c4h                            ; bf c4 52
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+052d4h]               ; 2e 8b 85 d4 52
+    mov ax, word [cs:di+052d5h]               ; 2e 8b 85 d5 52
     jmp ax                                    ; ff e0
     xor byte [bp-00eh], 040h                  ; 80 76 f2 40
     mov bl, byte [bp-00eh]                    ; 8a 5e f2
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 e4 c2
+    call 01660h                               ; e8 e3 c2
     or byte [bp-008h], 040h                   ; 80 4e f8 40
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
-    jmp near 05612h                           ; e9 88 02
+    jmp near 05613h                           ; e9 88 02
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0bfh                  ; 24 bf
     mov byte [bp-008h], al                    ; 88 46 f8
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
-    jmp near 05612h                           ; e9 79 02
+    jmp near 05613h                           ; e9 79 02
     test byte [bp-010h], 002h                 ; f6 46 f0 02
-    jne short 053d2h                          ; 75 33
+    jne short 053d3h                          ; 75 33
     mov al, byte [bp-004h]                    ; 8a 46 fc
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 02ah                  ; 3c 2a
-    jne short 053adh                          ; 75 05
+    jne short 053aeh                          ; 75 05
     mov bx, strict word 00002h                ; bb 02 00
-    jmp short 053b0h                          ; eb 03
+    jmp short 053b1h                          ; eb 03
     mov bx, strict word 00001h                ; bb 01 00
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 053bfh                           ; 74 09
+    je short 053c0h                           ; 74 09
     mov al, bl                                ; 88 d8
     not al                                    ; f6 d0
     and byte [bp-00eh], al                    ; 20 46 f2
-    jmp short 053c2h                          ; eb 03
+    jmp short 053c3h                          ; eb 03
     or byte [bp-00eh], bl                     ; 08 5e f2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 8e c2
+    call 01660h                               ; e8 8d c2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     and AL, strict byte 07fh                  ; 24 7f
     cmp AL, strict byte 01dh                  ; 3c 1d
-    je short 053dfh                           ; 74 04
+    je short 053e0h                           ; 74 04
     and byte [bp-010h], 0feh                  ; 80 66 f0 fe
     and byte [bp-010h], 0fdh                  ; 80 66 f0 fd
     mov al, byte [bp-010h]                    ; 8a 46 f0
@@ -7697,13 +7697,13 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 6d c2
+    call 01660h                               ; e8 6c c2
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
     test byte [bp-00ah], 001h                 ; f6 46 f6 01
-    jne short 053d2h                          ; 75 d3
+    jne short 053d3h                          ; 75 d3
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7711,16 +7711,16 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 4c c2
+    call 01660h                               ; e8 4b c2
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 05429h                           ; 74 0e
+    je short 0542ah                           ; 74 0e
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-010h], al                    ; 88 46 f0
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05438h                          ; eb 0f
+    jmp short 05439h                          ; eb 0f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 001h                   ; 0c 01
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7728,10 +7728,10 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 22 c2
-    jmp short 053d2h                          ; eb 92
+    call 01660h                               ; e8 21 c2
+    jmp short 053d3h                          ; eb 92
     test byte [bp-00ah], 001h                 ; f6 46 f6 01
-    jne short 053d2h                          ; 75 8c
+    jne short 053d3h                          ; 75 8c
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7739,16 +7739,16 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 05 c2
+    call 01660h                               ; e8 04 c2
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 05470h                           ; 74 0e
+    je short 05471h                           ; 74 0e
     and AL, strict byte 0fbh                  ; 24 fb
     mov byte [bp-010h], al                    ; 88 46 f0
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 0547fh                          ; eb 0f
+    jmp short 05480h                          ; eb 0f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0feh                  ; 24 fe
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7756,8 +7756,8 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 db c1
-    jmp near 053d2h                           ; e9 4a ff
+    call 01660h                               ; e8 da c1
+    jmp near 053d3h                           ; e9 4a ff
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7765,16 +7765,16 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 c3 c1
+    call 01660h                               ; e8 c2 c1
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 054b2h                           ; 74 0e
+    je short 054b3h                           ; 74 0e
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-010h], al                    ; 88 46 f0
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 054c1h                          ; eb 0f
+    jmp short 054c2h                          ; eb 0f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 002h                   ; 0c 02
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7782,8 +7782,8 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 99 c1
-    jmp near 053d2h                           ; e9 08 ff
+    call 01660h                               ; e8 98 c1
+    jmp near 053d3h                           ; e9 08 ff
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7791,16 +7791,16 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 81 c1
+    call 01660h                               ; e8 80 c1
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 054f4h                           ; 74 0e
+    je short 054f5h                           ; 74 0e
     and AL, strict byte 0f7h                  ; 24 f7
     mov byte [bp-010h], al                    ; 88 46 f0
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
-    jmp short 05503h                          ; eb 0f
+    jmp short 05504h                          ; eb 0f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0fdh                  ; 24 fd
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7808,10 +7808,10 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 57 c1
-    jmp near 053d2h                           ; e9 c6 fe
+    call 01660h                               ; e8 56 c1
+    jmp near 053d3h                           ; e9 c6 fe
     test byte [bp-00ah], 003h                 ; f6 46 f6 03
-    jne short 0552fh                          ; 75 1d
+    jne short 05530h                          ; 75 1d
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 020h                   ; 0c 20
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7819,10 +7819,10 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 39 c1
+    call 01660h                               ; e8 38 c1
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor AL, strict byte 020h                  ; 34 20
-    jmp near 055d0h                           ; e9 a1 00
+    jmp near 055d1h                           ; e9 a1 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 008h                   ; 0c 08
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7830,20 +7830,20 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 1c c1
+    call 01660h                               ; e8 1b c1
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
-    call 0e034h                               ; e8 e7 8a
+    call 0e034h                               ; e8 e6 8a
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 fc c0
+    call 01652h                               ; e8 fb c0
     test AL, strict byte 008h                 ; a8 08
-    jne short 0554dh                          ; 75 f3
-    jmp near 053d2h                           ; e9 75 fe
+    jne short 0554eh                          ; 75 f3
+    jmp near 053d3h                           ; e9 75 fe
     test byte [bp-00ah], 003h                 ; f6 46 f6 03
-    je short 05566h                           ; 74 03
-    jmp near 053d2h                           ; e9 6c fe
+    je short 05567h                           ; 74 03
+    jmp near 053d3h                           ; e9 6c fe
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0dfh                  ; 24 df
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7851,21 +7851,21 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 e5 c0
-    jmp short 05563h                          ; eb e6
+    call 01660h                               ; e8 e4 c0
+    jmp short 05564h                          ; eb e6
     test byte [bp-00ah], 002h                 ; f6 46 f6 02
-    je short 055b6h                           ; 74 33
+    je short 055b7h                           ; 74 33
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 e2 c0
+    call 0166eh                               ; e8 e1 c0
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 e5 c0
+    call 0167ch                               ; e8 e4 c0
     mov bx, 00080h                            ; bb 80 00
     mov dx, strict word 00071h                ; ba 71 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 bd c0
+    call 01660h                               ; e8 bc c0
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7874,8 +7874,8 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     pop bp                                    ; 5d
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
-    call 0525ah                               ; e8 a6 fc
-    jmp short 05563h                          ; eb ad
+    call 0525bh                               ; e8 a6 fc
+    jmp short 05564h                          ; eb ad
     mov al, byte [bp-006h]                    ; 8a 46 fa
     or AL, strict byte 010h                   ; 0c 10
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7883,7 +7883,7 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 95 c0
+    call 01660h                               ; e8 94 c0
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor AL, strict byte 010h                  ; 34 10
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7891,11 +7891,11 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 80 c0
-    jmp short 05563h                          ; eb 81
+    call 01660h                               ; e8 7f c0
+    jmp short 05564h                          ; eb 81
     test byte [bp-00ah], 002h                 ; f6 46 f6 02
-    je short 055ebh                           ; 74 03
-    jmp near 053d2h                           ; e9 e7 fd
+    je short 055ech                           ; 74 03
+    jmp near 053d3h                           ; e9 e7 fd
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0efh                  ; 24 ef
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -7903,70 +7903,70 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 60 c0
-    jmp short 055e8h                          ; eb e6
+    call 01660h                               ; e8 5f c0
+    jmp short 055e9h                          ; eb e6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 004h                 ; a8 04
-    jne short 055e8h                          ; 75 df
+    jne short 055e9h                          ; 75 df
     or AL, strict byte 004h                   ; 0c 04
     mov byte [bp-008h], al                    ; 88 46 f8
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 45 c0
-    jmp short 055e8h                          ; eb cb
+    call 01660h                               ; e8 44 c0
+    jmp short 055e9h                          ; eb cb
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0fbh                  ; 24 fb
-    jmp short 0560bh                          ; eb e7
+    jmp short 0560ch                          ; eb e7
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     and AL, strict byte 00ch                  ; 24 0c
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jne short 0563eh                          ; 75 11
+    jne short 0563fh                          ; 75 11
     mov bx, 01234h                            ; bb 34 12
     mov dx, strict word 00072h                ; ba 72 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 43 c0
+    call 0167ch                               ; e8 42 c0
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-008h], 008h                 ; f6 46 f8 08
-    je short 05655h                           ; 74 11
+    je short 05656h                           ; 74 11
     and byte [bp-008h], 0f7h                  ; 80 66 f8 f7
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00018h                ; ba 18 00
-    jmp near 053edh                           ; e9 98 fd
+    jmp near 053eeh                           ; e9 98 fd
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 080h                 ; a8 80
-    je short 05693h                           ; 74 37
+    je short 05694h                           ; 74 37
     cmp AL, strict byte 0fah                  ; 3c fa
-    jne short 05672h                          ; 75 12
+    jne short 05673h                          ; 75 12
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 e9 bf
+    call 01652h                               ; e8 e8 bf
     mov bl, al                                ; 88 c3
     or bl, 010h                               ; 80 cb 10
     xor bh, bh                                ; 30 ff
-    jmp short 05688h                          ; eb 16
+    jmp short 05689h                          ; eb 16
     cmp AL, strict byte 0feh                  ; 3c fe
-    je short 05679h                           ; 74 03
-    jmp near 053d2h                           ; e9 59 fd
+    je short 0567ah                           ; 74 03
+    jmp near 053d3h                           ; e9 59 fd
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 d0 bf
+    call 01652h                               ; e8 cf bf
     or AL, strict byte 020h                   ; 0c 20
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 cf bf
-    jmp short 05676h                          ; eb e3
+    call 01660h                               ; e8 ce bf
+    jmp short 05677h                          ; eb e3
     cmp byte [bp-004h], 058h                  ; 80 7e fc 58
-    jbe short 056bbh                          ; 76 22
+    jbe short 056bch                          ; 76 22
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 8f c2
+    call 01933h                               ; e8 8e c2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -7974,12 +7974,12 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 c1 c2
+    call 01976h                               ; e8 c0 c2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 053f3h                           ; e9 38 fd
+    jmp near 053f4h                           ; e9 38 fd
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 008h                 ; a8 08
-    je short 056dch                           ; 74 1a
+    je short 056ddh                           ; 74 1a
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov bx, strict word 0000ah                ; bb 0a 00
@@ -7988,9 +7988,9 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov al, byte [bx+00df4h]                  ; 8a 87 f4 0d
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, byte [bx+00df5h]                  ; 8a 87 f5 0d
-    jmp near 0578eh                           ; e9 b2 00
+    jmp near 0578fh                           ; e9 b2 00
     test AL, strict byte 004h                 ; a8 04
-    je short 056fah                           ; 74 1a
+    je short 056fbh                           ; 74 1a
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -7999,24 +7999,24 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov al, byte [bx+00df2h]                  ; 8a 87 f2 0d
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, byte [bx+00df3h]                  ; 8a 87 f3 0d
-    jmp near 0578eh                           ; e9 94 00
+    jmp near 0578fh                           ; e9 94 00
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 002h                  ; 24 02
     test al, al                               ; 84 c0
-    jbe short 0571dh                          ; 76 1a
+    jbe short 0571eh                          ; 76 1a
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 0571dh                           ; 72 13
+    jc short 0571eh                           ; 72 13
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 0571dh                         ; 77 0f
+    jnbe short 0571eh                         ; 77 0f
     mov byte [bp-012h], 0e0h                  ; c6 46 ee e0
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0000ah                ; ba 0a 00
     imul dx                                   ; f7 ea
     mov bx, ax                                ; 89 c3
-    jmp short 0578ah                          ; eb 6d
+    jmp short 0578bh                          ; eb 6d
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    je short 0575bh                           ; 74 38
+    je short 0575ch                           ; 74 38
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -8027,16 +8027,16 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 0574bh                           ; 74 0d
+    je short 0574ch                           ; 74 0d
     mov al, byte [bx+00deeh]                  ; 8a 87 ee 0d
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, byte [bx+00defh]                  ; 8a 87 ef 0d
-    jmp short 05756h                          ; eb 0b
+    jmp short 05757h                          ; eb 0b
     mov al, byte [bx+00df0h]                  ; 8a 87 f0 0d
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, byte [bx+00df1h]                  ; 8a 87 f1 0d
     mov byte [bp-004h], al                    ; 88 46 fc
-    jmp short 05791h                          ; eb 36
+    jmp short 05792h                          ; eb 36
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov bx, strict word 0000ah                ; bb 0a 00
@@ -8047,36 +8047,36 @@ _int09_function:                             ; 0xf52f8 LB 0x4cd
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 05783h                           ; 74 0d
+    je short 05784h                           ; 74 0d
     mov al, byte [bx+00df0h]                  ; 8a 87 f0 0d
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, byte [bx+00df1h]                  ; 8a 87 f1 0d
-    jmp short 0578eh                          ; eb 0b
+    jmp short 0578fh                          ; eb 0b
     mov al, byte [bx+00deeh]                  ; 8a 87 ee 0d
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, byte [bx+00defh]                  ; 8a 87 ef 0d
     mov byte [bp-004h], al                    ; 88 46 fc
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 057b6h                          ; 75 1f
+    jne short 057b7h                          ; 75 1f
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jne short 057b6h                          ; 75 19
+    jne short 057b7h                          ; 75 19
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 8b c1
+    call 01933h                               ; e8 8a c1
     mov ax, 005d8h                            ; b8 d8 05
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 c3 c1
+    call 01976h                               ; e8 c2 c1
     add sp, strict byte 00004h                ; 83 c4 04
     mov bl, byte [bp-012h]                    ; 8a 5e ee
     xor bh, bh                                ; 30 ff
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
-    jmp near 055b1h                           ; e9 ec fd
-dequeue_key_:                                ; 0xf57c5 LB 0x94
+    jmp near 055b2h                           ; e9 ec fd
+dequeue_key_:                                ; 0xf57c6 LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -8089,36 +8089,36 @@ dequeue_key_:                                ; 0xf57c5 LB 0x94
     mov word [bp-008h], cx                    ; 89 4e f8
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 8f be
+    call 0166eh                               ; e8 8e be
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0001ch                ; ba 1c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 84 be
+    call 0166eh                               ; e8 83 be
     cmp bx, ax                                ; 39 c3
-    je short 0582bh                           ; 74 3d
+    je short 0582ch                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 5c be
+    call 01652h                               ; e8 5b be
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 51 be
+    call 01652h                               ; e8 50 be
     mov es, [bp-008h]                         ; 8e 46 f8
     mov byte [es:si], cl                      ; 26 88 0c
     mov es, [bp-006h]                         ; 8e 46 fa
     mov byte [es:di], al                      ; 26 88 05
     cmp word [bp+004h], strict byte 00000h    ; 83 7e 04 00
-    je short 05826h                           ; 74 13
+    je short 05827h                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 0581dh                           ; 72 03
+    jc short 0581eh                           ; 72 03
     mov bx, strict word 0001eh                ; bb 1e 00
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 56 be
+    call 0167ch                               ; e8 55 be
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0582dh                          ; eb 02
+    jmp short 0582eh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -8129,36 +8129,36 @@ dequeue_key_:                                ; 0xf57c5 LB 0x94
     adc word [bx+si], dx                      ; 11 10
     or cl, byte [bx+di]                       ; 0a 09
     add ax, 00102h                            ; 05 02 01
-    add byte [bx+059h], bl                    ; 00 5f 59
-    sbb bl, byte [bx+di-051h]                 ; 1a 59 af
+    add byte [bx+si+059h], ah                 ; 00 60 59
+    sbb bx, word [bx+di-050h]                 ; 1b 59 b0
     pop cx                                    ; 59
-    db  0f3h, 059h
-    ; rep pop cx                                ; f3 59
-    push ES                                   ; 06
-    pop dx                                    ; 5a
-    sub ax, 0375ah                            ; 2d 5a 37
+    hlt                                       ; f4
+    pop cx                                    ; 59
+    pop ES                                    ; 07
     pop dx                                    ; 5a
-    cmpsb                                     ; a6
+    db  02eh, 05ah
+    ; cs pop dx                                 ; 2e 5a
+    cmp byte [bp+si-059h], bl                 ; 38 5a a7
     pop dx                                    ; 5a
-    fstp qword [bp+si+00dh]                   ; dd 5a 0d
+    ficomp word [bp+si+00eh]                  ; de 5a 0e
     pop bx                                    ; 5b
-    inc sp                                    ; 44
+    inc bp                                    ; 45
     pop bx                                    ; 5b
-    db  0a9h
+    stosb                                     ; aa
     pop cx                                    ; 59
-_int16_function:                             ; 0xf5859 LB 0x2f6
+_int16_function:                             ; 0xf585a LB 0x2f6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
     sub sp, strict byte 00006h                ; 83 ec 06
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 e9 bd
+    call 01652h                               ; e8 e8 bd
     mov cl, al                                ; 88 c1
     mov bh, al                                ; 88 c7
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 dc bd
+    call 01652h                               ; e8 db bd
     mov bl, al                                ; 88 c3
     mov dl, cl                                ; 88 ca
     xor dh, dh                                ; 30 f6
@@ -8169,7 +8169,7 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     xor ah, ah                                ; 30 e4
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 058f9h                           ; 74 6c
+    je short 058fah                           ; 74 6c
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
     mov dx, strict word 00060h                ; ba 60 00
@@ -8179,17 +8179,17 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 058a6h                          ; 75 08
+    jne short 058a7h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05894h                          ; eb ee
+    jmp short 05895h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 058f8h                          ; 75 47
+    jne short 058f9h                          ; 75 47
     and bl, 0c8h                              ; 80 e3 c8
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
@@ -8212,11 +8212,11 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 058e7h                          ; 75 08
+    jne short 058e8h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 058d5h                          ; eb ee
+    jmp short 058d6h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -8224,21 +8224,21 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     xor bh, bh                                ; 30 ff
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 68 bd
+    call 01660h                               ; e8 67 bd
     sti                                       ; fb
     mov CL, strict byte 008h                  ; b1 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, CL                                ; d3 e8
     cmp ax, 000a2h                            ; 3d a2 00
-    jnbe short 0595fh                         ; 77 5a
+    jnbe short 05960h                         ; 77 5a
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 05836h                            ; bf 36 58
+    mov di, 05837h                            ; bf 37 58
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+05841h]               ; 2e 8b 85 41 58
+    mov ax, word [cs:di+05842h]               ; 2e 8b 85 42 58
     jmp ax                                    ; ff e0
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
@@ -8246,30 +8246,30 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     lea bx, [bp-006h]                         ; 8d 5e fa
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 057c5h                               ; e8 9a fe
+    call 057c6h                               ; e8 9a fe
     test ax, ax                               ; 85 c0
-    jne short 0593dh                          ; 75 0e
+    jne short 0593eh                          ; 75 0e
     mov ax, 0060fh                            ; b8 0f 06
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 3c c0
+    call 01976h                               ; e8 3b c0
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 05949h                           ; 74 06
+    je short 0594ah                           ; 74 06
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je short 0594fh                           ; 74 06
+    je short 05950h                           ; 74 06
     cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
-    jne short 05953h                          ; 75 04
+    jne short 05954h                          ; 75 04
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov ah, byte [bp-008h]                    ; 8a 66 f8
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 059a9h                           ; e9 4a 00
+    jmp near 059aah                           ; e9 4a 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 c9 bf
+    call 01933h                               ; e8 c8 bf
     mov CL, strict byte 008h                  ; b1 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, CL                                ; d3 e8
@@ -8278,12 +8278,12 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 f9 bf
+    call 01976h                               ; e8 f8 bf
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 a8 bf
+    call 01933h                               ; e8 a7 bf
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -8296,7 +8296,7 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 d0 bf
+    call 01976h                               ; e8 cf bf
     add sp, strict byte 0000ch                ; 83 c4 0c
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
@@ -8309,49 +8309,49 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     lea bx, [bp-006h]                         ; 8d 5e fa
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 057c5h                               ; e8 01 fe
+    call 057c6h                               ; e8 01 fe
     test ax, ax                               ; 85 c0
-    jne short 059ceh                          ; 75 06
+    jne short 059cfh                          ; 75 06
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp short 059a9h                          ; eb db
+    jmp short 059aah                          ; eb db
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 059dah                           ; 74 06
+    je short 059dbh                           ; 74 06
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je short 059e0h                           ; 74 06
+    je short 059e1h                           ; 74 06
     cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
-    jne short 059e4h                          ; 75 04
+    jne short 059e5h                          ; 75 04
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov dh, byte [bp-008h]                    ; 8a 76 f8
     mov dl, byte [bp-006h]                    ; 8a 56 fa
     mov word [bp+012h], dx                    ; 89 56 12
     and word [bp+01ch], strict byte 0ffbfh    ; 83 66 1c bf
-    jmp short 059a9h                          ; eb b6
+    jmp short 059aah                          ; eb b6
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 56 bc
+    call 01652h                               ; e8 55 bc
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp short 059a9h                          ; eb a3
+    jmp short 059aah                          ; eb a3
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov CL, strict byte 008h                  ; b1 08
     mov ax, word [bp+010h]                    ; 8b 46 10
     shr ax, CL                                ; d3 e8
     xor ah, ah                                ; 30 e4
-    call 0525ah                               ; e8 43 f8
+    call 0525bh                               ; e8 43 f8
     test ax, ax                               ; 85 c0
-    jne short 05a25h                          ; 75 0a
+    jne short 05a26h                          ; 75 0a
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 05959h                           ; e9 34 ff
+    jmp near 0595ah                           ; e9 34 ff
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 059a9h                           ; e9 7c ff
+    jmp near 059aah                           ; e9 7c ff
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 030h                   ; 0c 30
-    jmp near 05959h                           ; e9 22 ff
+    jmp near 0595ah                           ; e9 22 ff
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
     cli                                       ; fa
@@ -8364,40 +8364,40 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05a5eh                          ; 75 0d
+    jne short 05a5fh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05a5eh                          ; 76 08
+    jbe short 05a5fh                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05a47h                          ; eb e9
+    jmp short 05a48h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05aa0h                          ; 76 3e
+    jbe short 05aa1h                          ; 76 3e
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000fah                            ; 3d fa 00
-    jne short 05aa0h                          ; 75 33
+    jne short 05aa1h                          ; 75 33
     mov bx, strict word 0ffffh                ; bb ff ff
     mov dx, strict word 00064h                ; ba 64 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05a87h                          ; 75 0d
+    jne short 05a88h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05a87h                          ; 76 08
+    jbe short 05a88h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05a70h                          ; eb e9
+    jmp short 05a71h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05a97h                          ; 76 0c
+    jbe short 05a98h                          ; 76 0c
     mov bl, ch                                ; 88 eb
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -8407,31 +8407,31 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     mov cl, bl                                ; 88 d9
     dec byte [bp-004h]                        ; fe 4e fc
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jnbe short 05a6dh                         ; 77 cd
+    jnbe short 05a6eh                         ; 77 cd
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 059a9h                           ; e9 03 ff
+    jmp near 059aah                           ; e9 03 ff
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
     mov cx, ss                                ; 8c d1
     lea bx, [bp-006h]                         ; 8d 5e fa
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 057c5h                               ; e8 0e fd
+    call 057c6h                               ; e8 0e fd
     test ax, ax                               ; 85 c0
-    jne short 05ac9h                          ; 75 0e
+    jne short 05acah                          ; 75 0e
     mov ax, 0060fh                            ; b8 0f 06
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 b0 be
+    call 01976h                               ; e8 af be
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 05ad2h                          ; 75 03
-    jmp near 05953h                           ; e9 81 fe
+    jne short 05ad3h                          ; 75 03
+    jmp near 05954h                           ; e9 81 fe
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    jne short 05adbh                          ; 75 03
-    jmp near 0594fh                           ; e9 74 fe
-    jmp short 05acfh                          ; eb f2
+    jne short 05adch                          ; 75 03
+    jmp near 05950h                           ; e9 74 fe
+    jmp short 05ad0h                          ; eb f2
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
@@ -8439,42 +8439,42 @@ _int16_function:                             ; 0xf5859 LB 0x2f6
     lea bx, [bp-006h]                         ; 8d 5e fa
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 057c5h                               ; e8 d3 fc
+    call 057c6h                               ; e8 d3 fc
     test ax, ax                               ; 85 c0
-    jne short 05af9h                          ; 75 03
-    jmp near 059c8h                           ; e9 cf fe
+    jne short 05afah                          ; 75 03
+    jmp near 059c9h                           ; e9 cf fe
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 05b02h                          ; 75 03
-    jmp near 059e4h                           ; e9 e2 fe
+    jne short 05b03h                          ; 75 03
+    jmp near 059e5h                           ; e9 e2 fe
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    jne short 05b0bh                          ; 75 03
-    jmp near 059e0h                           ; e9 d5 fe
-    jmp short 05affh                          ; eb f2
+    jne short 05b0ch                          ; 75 03
+    jmp near 059e1h                           ; e9 d5 fe
+    jmp short 05b00h                          ; eb f2
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 3c bb
+    call 01652h                               ; e8 3b bb
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 2b bb
+    call 01652h                               ; e8 2a bb
     mov bh, al                                ; 88 c7
     and bh, 073h                              ; 80 e7 73
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 1d bb
+    call 01652h                               ; e8 1c bb
     mov ah, al                                ; 88 c4
     and ah, 00ch                              ; 80 e4 0c
     or ah, bh                                 ; 08 fc
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dh, ah                                ; 88 e6
-    jmp near 05a01h                           ; e9 bd fe
+    jmp near 05a02h                           ; e9 bd fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 05959h                           ; e9 0a fe
-set_geom_lba_:                               ; 0xf5b4f LB 0xeb
+    jmp near 0595ah                           ; e9 0a fe
+set_geom_lba_:                               ; 0xf5b50 LB 0xeb
     push bx                                   ; 53
     push cx                                   ; 51
     push si                                   ; 56
@@ -8492,32 +8492,32 @@ set_geom_lba_:                               ; 0xf5b4f LB 0xeb
     mov cx, word [bp+00eh]                    ; 8b 4e 0e
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov si, strict word 00020h                ; be 20 00
-    call 0a0a0h                               ; e8 22 45
+    call 0a0a0h                               ; e8 21 45
     test ax, ax                               ; 85 c0
-    jne short 05b8eh                          ; 75 0c
+    jne short 05b8fh                          ; 75 0c
     test bx, bx                               ; 85 db
-    jne short 05b8eh                          ; 75 08
+    jne short 05b8fh                          ; 75 08
     test cx, cx                               ; 85 c9
-    jne short 05b8eh                          ; 75 04
+    jne short 05b8fh                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 05b95h                           ; 74 07
+    je short 05b96h                           ; 74 07
     mov bx, strict word 0ffffh                ; bb ff ff
     mov si, bx                                ; 89 de
-    jmp short 05b9bh                          ; eb 06
+    jmp short 05b9ch                          ; eb 06
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov si, word [bp+00eh]                    ; 8b 76 0e
     mov word [bp-004h], bx                    ; 89 5e fc
     xor bx, bx                                ; 31 db
-    jmp short 05ba7h                          ; eb 05
+    jmp short 05ba8h                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 05bcah                          ; 7d 23
+    jnl short 05bcbh                          ; 7d 23
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp si, ax                                ; 39 c6
-    jc short 05bb8h                           ; 72 0a
-    jne short 05bc1h                          ; 75 11
+    jc short 05bb9h                           ; 72 0a
+    jne short 05bc2h                          ; 75 11
     mov ax, word [bp-004h]                    ; 8b 46 fc
     cmp ax, word [bp-008h]                    ; 3b 46 f8
-    jnbe short 05bc1h                         ; 77 09
+    jnbe short 05bc2h                         ; 77 09
     mov ax, word [bp-002h]                    ; 8b 46 fe
     inc ax                                    ; 40
     shr ax, 1                                 ; d1 e8
@@ -8525,20 +8525,20 @@ set_geom_lba_:                               ; 0xf5b4f LB 0xeb
     shr word [bp-006h], 1                     ; d1 6e fa
     rcr word [bp-008h], 1                     ; d1 5e f8
     inc bx                                    ; 43
-    jmp short 05ba2h                          ; eb d8
+    jmp short 05ba3h                          ; eb d8
     mov ax, word [bp-002h]                    ; 8b 46 fe
     xor dx, dx                                ; 31 d2
     mov bx, strict word 0003fh                ; bb 3f 00
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 79 44
+    call 0a050h                               ; e8 78 44
     mov bx, ax                                ; 89 c3
     mov cx, dx                                ; 89 d1
     mov ax, word [bp-004h]                    ; 8b 46 fc
     mov dx, si                                ; 89 f2
-    call 0a070h                               ; e8 8d 44
+    call 0a070h                               ; e8 8c 44
     mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 05bf2h                          ; 76 06
+    jbe short 05bf3h                          ; 76 06
     mov word [es:di+002h], 00400h             ; 26 c7 45 02 00 04
     mov ax, word [bp-002h]                    ; 8b 46 fe
     mov word [es:di], ax                      ; 26 89 05
@@ -8550,54 +8550,61 @@ set_geom_lba_:                               ; 0xf5b4f LB 0xeb
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn 00008h                               ; c2 08 00
-    retn 0d35ch                               ; c2 5c d3
+    retn                                      ; c3
     pop sp                                    ; 5c
-    sti                                       ; fb
+    aam 05ch                                  ; d4 5c
+    cld                                       ; fc
     pop sp                                    ; 5c
-    sti                                       ; fb
+    cld                                       ; fc
     pop sp                                    ; 5c
-    sti                                       ; fb
+    cld                                       ; fc
     pop sp                                    ; 5c
-    jmp near 08173h                           ; e9 5e 25
-    pushaw                                    ; 60
-    and ax, 01960h                            ; 25 60 19
-    pop di                                    ; 5f
-    call far [bx+025h]                        ; ff 5f 25
+    jmp far 02660h:0265eh                     ; ea 5e 26 60 26
     pushaw                                    ; 60
-    and ax, 0ff60h                            ; 25 60 ff
-    pop di                                    ; 5f
-    call far [bx+025h]                        ; ff 5f 25
+    sbb bl, byte [byte bx+000h]               ; 1a 5f 00
     pushaw                                    ; 60
-    and ax, 07f60h                            ; 25 60 7f
-    pop di                                    ; 5f
-    call far [bx+025h]                        ; ff 5f 25
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    add byte [byte bx+si+000h], ah            ; 00 60 00
     pushaw                                    ; 60
-    and ax, 0ff60h                            ; 25 60 ff
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    sbb byte [byte bx+000h], 060h             ; 80 5f 00 60
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    add byte [bx+si-04fh], ah                 ; 00 60 b1
     pop di                                    ; 5f
-    mov AL, strict byte 05fh                  ; b0 5f
-    and ax, 02560h                            ; 25 60 25
-    pushaw                                    ; 60
-    db  025h
-    pushaw                                    ; 60
-_int13_harddisk:                             ; 0xf5c3a LB 0x446
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+    db  026h, 060h
+    ; es pushaw                                 ; 26 60
+_int13_harddisk:                             ; 0xf5c3b LB 0x446
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00010h                ; 83 ec 10
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 25 ba
+    call 0166eh                               ; e8 24 ba
     mov si, 00122h                            ; be 22 01
     mov word [bp-004h], ax                    ; 89 46 fc
     xor bx, bx                                ; 31 db
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 06 ba
+    call 01660h                               ; e8 05 ba
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05c69h                           ; 72 05
+    jc short 05c6ah                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05c88h                           ; 72 1f
+    jc short 05c89h                           ; 72 1f
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8609,9 +8616,9 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 f4 bc
+    call 01976h                               ; e8 f3 bc
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 06040h                           ; e9 b8 03
+    jmp near 06041h                           ; e9 b8 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8620,30 +8627,30 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
     mov byte [bp-002h], dl                    ; 88 56 fe
     cmp dl, 010h                              ; 80 fa 10
-    jc short 05cafh                           ; 72 0e
+    jc short 05cb0h                           ; 72 0e
     push ax                                   ; 50
     mov al, byte [bp+017h]                    ; 8a 46 17
     push ax                                   ; 50
     mov ax, 0067eh                            ; b8 7e 06
     push ax                                   ; 50
     mov ax, 006b8h                            ; b8 b8 06
-    jmp short 05c7ah                          ; eb cb
+    jmp short 05c7bh                          ; eb cb
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00018h                ; 3d 18 00
-    jnbe short 05cf8h                         ; 77 3f
+    jnbe short 05cf9h                         ; 77 3f
     mov bx, ax                                ; 89 c3
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx+05c08h]                   ; 2e ff a7 08 5c
+    jmp word [cs:bx+05c09h]                   ; 2e ff a7 09 5c
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc short 05cd0h                          ; 73 08
+    jnc short 05cd1h                          ; 73 08
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 01db8h                               ; e8 e8 c0
-    jmp near 05f02h                           ; e9 2f 02
+    call 01db8h                               ; e8 e7 c0
+    jmp near 05f03h                           ; e9 2f 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 76 b9
+    call 01652h                               ; e8 75 b9
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
     mov dh, al                                ; 88 c6
@@ -8651,11 +8658,11 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 6f b9
+    call 01660h                               ; e8 6e b9
     test cl, cl                               ; 84 c9
-    je short 05d57h                           ; 74 62
-    jmp near 06059h                           ; e9 61 03
-    jmp near 06025h                           ; e9 2a 03
+    je short 05d58h                           ; 74 62
+    jmp near 0605ah                           ; e9 61 03
+    jmp near 06026h                           ; e9 2a 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -8674,13 +8681,13 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     mov word [bp-00ch], ax                    ; 89 46 f4
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, 00080h                            ; 3d 80 00
-    jnbe short 05d31h                         ; 77 04
+    jnbe short 05d32h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 05d5ah                          ; 75 29
+    jne short 05d5bh                          ; 75 29
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 f7 bb
+    call 01933h                               ; e8 f6 bb
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8690,10 +8697,10 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 25 bc
+    call 01976h                               ; e8 24 bc
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 06040h                           ; e9 e9 02
-    jmp near 05f06h                           ; e9 ac 01
+    jmp near 06041h                           ; e9 e9 02
+    jmp near 05f07h                           ; e9 ac 01
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -8706,15 +8713,15 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     mov dx, word [es:bx+02eh]                 ; 26 8b 57 2e
     mov word [bp-010h], dx                    ; 89 56 f0
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    jbe short 05d88h                          ; 76 09
+    jbe short 05d89h                          ; 76 09
     cmp cx, word [bp-00ch]                    ; 3b 4e f4
-    jbe short 05d88h                          ; 76 04
+    jbe short 05d89h                          ; 76 04
     cmp di, dx                                ; 39 d7
-    jbe short 05db9h                          ; 76 31
+    jbe short 05dbah                          ; 76 31
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 a0 bb
+    call 01933h                               ; e8 9f bb
     push di                                   ; 57
     push word [bp-00ch]                       ; ff 76 f4
     push word [bp-00ah]                       ; ff 76 f6
@@ -8729,13 +8736,13 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 c3 bb
+    call 01976h                               ; e8 c2 bb
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 06040h                           ; e9 87 02
+    jmp near 06041h                           ; e9 87 02
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00004h                ; 3d 04 00
-    je short 05de3h                           ; 74 20
+    je short 05de4h                           ; 74 20
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, strict word 0001ch                ; ba 1c 00
     imul dx                                   ; f7 ea
@@ -8743,25 +8750,25 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
     cmp cx, word [es:bx+030h]                 ; 26 3b 4f 30
-    jne short 05dech                          ; 75 14
+    jne short 05dedh                          ; 75 14
     mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    je short 05de6h                           ; 74 05
-    jmp short 05dech                          ; eb 09
-    jmp near 05f02h                           ; e9 1c 01
+    je short 05de7h                           ; 74 05
+    jmp short 05dedh                          ; eb 09
+    jmp near 05f03h                           ; e9 1c 01
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 05e1bh                           ; 72 2f
+    jc short 05e1ch                           ; 72 2f
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 58 42
+    call 0a050h                               ; e8 57 42
     xor bx, bx                                ; 31 db
     add ax, word [bp-00ch]                    ; 03 46 f4
     adc dx, bx                                ; 11 da
     mov bx, word [bp-010h]                    ; 8b 5e f0
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 49 42
+    call 0a050h                               ; e8 48 42
     xor bx, bx                                ; 31 db
     add ax, di                                ; 01 f8
     adc dx, bx                                ; 11 da
@@ -8818,11 +8825,11 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     or bx, ax                                 ; 09 c3
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je short 05f02h                           ; 74 4a
+    je short 05f03h                           ; 74 4a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 70 ba
+    call 01933h                               ; e8 6f ba
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8834,27 +8841,27 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 9b ba
+    call 01976h                               ; e8 9a ba
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 06048h                           ; e9 5f 01
+    jmp near 06049h                           ; e9 5f 01
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 3f ba
+    call 01933h                               ; e8 3e ba
     mov ax, 0077ah                            ; b8 7a 07
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 77 ba
+    call 01976h                               ; e8 76 ba
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 4f b7
+    call 01660h                               ; e8 4e b7
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
@@ -8897,7 +8904,7 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     xor al, bl                                ; 30 d8
     or ax, dx                                 ; 09 d0
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp short 05f02h                          ; eb 83
+    jmp short 05f03h                          ; eb 83
     mov al, byte [bp-002h]                    ; 8a 46 fe
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -8914,12 +8921,12 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 05fa5h                          ; 75 03
-    jmp near 05f02h                           ; e9 5d ff
+    jne short 05fa6h                          ; 75 03
+    jmp near 05f03h                           ; e9 5d ff
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 06048h                           ; e9 98 00
+    jmp near 06049h                           ; e9 98 00
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -8935,10 +8942,10 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-00ch]                    ; 8b 5e f4
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 72 40
+    call 0a050h                               ; e8 71 40
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 6b 40
+    call 0a050h                               ; e8 6a 40
     mov word [bp-008h], ax                    ; 89 46 f8
     mov word [bp-006h], dx                    ; 89 56 fa
     mov word [bp+014h], dx                    ; 89 56 14
@@ -8947,11 +8954,11 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05f06h                           ; e9 07 ff
+    jmp near 05f07h                           ; e9 07 ff
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 29 b9
+    call 01933h                               ; e8 28 b9
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8961,20 +8968,20 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 57 b9
+    call 01976h                               ; e8 56 b9
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05f02h                           ; e9 dd fe
+    jmp near 05f03h                           ; e9 dd fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 03 b9
+    call 01933h                               ; e8 02 b9
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, 0067eh                            ; b8 7e 06
     push ax                                   ; 50
     mov ax, 007c7h                            ; b8 c7 07
-    jmp near 05d49h                           ; e9 09 fd
+    jmp near 05d4ah                           ; e9 09 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8983,50 +8990,51 @@ _int13_harddisk:                             ; 0xf5c3a LB 0x446
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 07 b6
+    call 01660h                               ; e8 06 b6
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05f15h                           ; e9 b5 fe
-    sbb ah, byte [bx+di+04dh]                 ; 1a 61 4d
+    jmp near 05f16h                           ; e9 b5 fe
+    sbb sp, word [bx+di+04eh]                 ; 1b 61 4e
     popaw                                     ; 61
-    dec bp                                    ; 4d
-    popaw                                     ; 61
-    dec bp                                    ; 4d
+    dec si                                    ; 4e
     popaw                                     ; 61
-    pop di                                    ; 5f
-    db  065h, 0c2h, 062h, 04dh
-    ; gs retn 04d62h                            ; 65 c2 62 4d
+    dec si                                    ; 4e
     popaw                                     ; 61
-    enter 05f62h, 065h                        ; c8 62 5f 65
-    xor ah, byte [bx+di+032h]                 ; 32 61 32
+    pushaw                                    ; 60
+    db  065h, 0c3h
+    ; gs retn                                   ; 65 c3
+    bound cx, [bp+061h]                       ; 62 4e 61
+    leave                                     ; c9
+    bound sp, [bx+si+065h]                    ; 62 60 65
+    xor sp, word [bx+di+033h]                 ; 33 61 33
     popaw                                     ; 61
-    xor ah, byte [bx+di+032h]                 ; 32 61 32
+    xor sp, word [bx+di+033h]                 ; 33 61 33
     popaw                                     ; 61
-    jbe short 060e1h                          ; 76 65
-    xor ah, byte [bx+di+032h]                 ; 32 61 32
+    jnbe short 060e2h                         ; 77 65
+    xor sp, word [bx+di+033h]                 ; 33 61 33
     popaw                                     ; 61
-_int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
+_int13_harddisk_ext:                         ; 0xf6081 LB 0x52b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00028h                ; 83 ec 28
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 df b5
+    call 0166eh                               ; e8 de b5
     mov word [bp-018h], ax                    ; 89 46 e8
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 d3 b5
+    call 0166eh                               ; e8 d2 b5
     mov word [bp-008h], 00122h                ; c7 46 f8 22 01
     mov word [bp-006h], ax                    ; 89 46 fa
     xor bx, bx                                ; 31 db
     mov dx, 0008eh                            ; ba 8e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 b2 b5
+    call 01660h                               ; e8 b1 b5
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 060bdh                           ; 72 05
+    jc short 060beh                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 060dch                           ; 72 1f
+    jc short 060ddh                           ; 72 1f
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9038,9 +9046,9 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 a0 b8
+    call 01976h                               ; e8 9f b8
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 0658ch                           ; e9 b0 04
+    jmp near 0658dh                           ; e9 b0 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     les bx, [bp-008h]                         ; c4 5e f8
@@ -9048,41 +9056,41 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov dl, byte [es:bx+00163h]               ; 26 8a 97 63 01
     mov byte [bp-004h], dl                    ; 88 56 fc
     cmp dl, 010h                              ; 80 fa 10
-    jc short 06101h                           ; 72 0e
+    jc short 06102h                           ; 72 0e
     push ax                                   ; 50
     mov al, byte [bp+017h]                    ; 8a 46 17
     push ax                                   ; 50
     mov ax, 007f5h                            ; b8 f5 07
     push ax                                   ; 50
     mov ax, 006b8h                            ; b8 b8 06
-    jmp short 060ceh                          ; eb cd
+    jmp short 060cfh                          ; eb cd
     mov bl, byte [bp+017h]                    ; 8a 5e 17
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00041h                ; 83 eb 41
     cmp bx, strict byte 0000fh                ; 83 fb 0f
-    jnbe short 06132h                         ; 77 24
+    jnbe short 06133h                         ; 77 24
     sal bx, 1                                 ; d1 e3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
-    jmp word [cs:bx+06060h]                   ; 2e ff a7 60 60
+    jmp word [cs:bx+06061h]                   ; 2e ff a7 61 60
     mov word [bp+010h], 0aa55h                ; c7 46 10 55 aa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 030h                               ; 80 cc 30
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 06563h                           ; e9 31 04
+    jmp near 06564h                           ; e9 31 04
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 f6 b7
+    call 01933h                               ; e8 f5 b7
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, 007f5h                            ; b8 f5 07
     push ax                                   ; 50
     mov ax, 007c7h                            ; b8 c7 07
-    jmp near 061eah                           ; e9 9d 00
+    jmp near 061ebh                           ; e9 9d 00
     mov di, word [bp+00ah]                    ; 8b 7e 0a
     mov es, [bp+004h]                         ; 8e 46 04
     mov word [bp-024h], di                    ; 89 7e dc
@@ -9098,7 +9106,7 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     xor ax, ax                                ; 31 c0
     xor bx, bx                                ; 31 db
     mov si, strict word 00020h                ; be 20 00
-    call 0a0b0h                               ; e8 30 3f
+    call 0a0b0h                               ; e8 2f 3f
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov word [bp-010h], bx                    ; 89 5e f0
     mov si, dx                                ; 89 d6
@@ -9115,23 +9123,23 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov al, byte [es:bx+022h]                 ; 26 8a 47 22
     mov dx, word [bp-00eh]                    ; 8b 56 f2
     cmp dx, word [es:bx+03ch]                 ; 26 3b 57 3c
-    jnbe short 061d2h                         ; 77 22
-    jne short 061f8h                          ; 75 46
+    jnbe short 061d3h                         ; 77 22
+    jne short 061f9h                          ; 75 46
     mov dx, word [bp-010h]                    ; 8b 56 f0
     cmp dx, word [es:bx+03ah]                 ; 26 3b 57 3a
-    jnbe short 061d2h                         ; 77 17
+    jnbe short 061d3h                         ; 77 17
     mov dx, word [bp-010h]                    ; 8b 56 f0
     cmp dx, word [es:bx+03ah]                 ; 26 3b 57 3a
-    jne short 061f8h                          ; 75 34
+    jne short 061f9h                          ; 75 34
     cmp cx, word [es:bx+038h]                 ; 26 3b 4f 38
-    jnbe short 061d2h                         ; 77 08
-    jne short 061f8h                          ; 75 2c
+    jnbe short 061d3h                         ; 77 08
+    jne short 061f9h                          ; 75 2c
     cmp si, word [es:bx+036h]                 ; 26 3b 77 36
-    jc short 061f8h                           ; 72 26
+    jc short 061f9h                           ; 72 26
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 56 b7
+    call 01933h                               ; e8 55 b7
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9141,17 +9149,17 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 84 b7
+    call 01976h                               ; e8 83 b7
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 0658ch                           ; e9 94 03
+    jmp near 0658dh                           ; e9 94 03
     mov ah, byte [bp+017h]                    ; 8a 66 17
     mov byte [bp-012h], ah                    ; 88 66 ee
     mov byte [bp-011h], 000h                  ; c6 46 ef 00
     cmp word [bp-012h], strict byte 00044h    ; 83 7e ee 44
-    je short 0620eh                           ; 74 06
+    je short 0620fh                           ; 74 06
     cmp word [bp-012h], strict byte 00047h    ; 83 7e ee 47
-    jne short 06211h                          ; 75 03
-    jmp near 0655fh                           ; e9 4e 03
+    jne short 06212h                          ; 75 03
+    jmp near 06560h                           ; e9 4e 03
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx+018h], strict word 00000h ; 26 c7 47 18 00 00
     mov word [es:bx+01ah], strict word 00000h ; 26 c7 47 1a 00 00
@@ -9189,11 +9197,11 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov bx, word [bp-024h]                    ; 8b 5e dc
     mov word [es:bx+002h], ax                 ; 26 89 47 02
     test dl, dl                               ; 84 d2
-    je short 062e6h                           ; 74 54
+    je short 062e7h                           ; 74 54
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 96 b6
+    call 01933h                               ; e8 95 b6
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9204,14 +9212,14 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 c2 b6
+    call 01976h                               ; e8 c1 b6
     add sp, strict byte 0000ah                ; 83 c4 0a
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
-    jmp near 06594h                           ; e9 d2 02
+    jmp near 06595h                           ; e9 d2 02
     or ah, 0b2h                               ; 80 cc b2
-    jmp near 06594h                           ; e9 cc 02
+    jmp near 06595h                           ; e9 cc 02
     mov bx, word [bp+00ah]                    ; 8b 5e 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
     mov word [bp-00ch], ax                    ; 89 46 f4
@@ -9221,11 +9229,11 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov ax, word [es:bx]                      ; 26 8b 07
     mov word [bp-014h], ax                    ; 89 46 ec
     cmp ax, strict word 0001ah                ; 3d 1a 00
-    jnc short 062e9h                          ; 73 06
-    jmp near 0658ch                           ; e9 a6 02
-    jmp near 0655fh                           ; e9 76 02
-    jnc short 062eeh                          ; 73 03
-    jmp near 06381h                           ; e9 93 00
+    jnc short 062eah                          ; 73 06
+    jmp near 0658dh                           ; e9 a6 02
+    jmp near 06560h                           ; e9 76 02
+    jnc short 062efh                          ; 73 03
+    jmp near 06382h                           ; e9 93 00
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -9263,12 +9271,12 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov bx, word [bp-010h]                    ; 8b 5e f0
     mov dx, si                                ; 89 f2
     mov si, strict word 00020h                ; be 20 00
-    call 0a0a0h                               ; e8 29 3d
+    call 0a0a0h                               ; e8 28 3d
     mov bx, di                                ; 89 fb
     mov word [es:bx+014h], dx                 ; 26 89 57 14
     mov word [es:bx+016h], cx                 ; 26 89 4f 16
     cmp word [bp-014h], strict byte 0001eh    ; 83 7e ec 1e
-    jc short 063f3h                           ; 72 6c
+    jc short 063f4h                           ; 72 6c
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di], strict word 0001eh      ; 26 c7 05 1e 00
     mov ax, word [bp-018h]                    ; 8b 46 e8
@@ -9299,22 +9307,22 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     add bx, ax                                ; 01 c3
     mov al, byte [es:bx+027h]                 ; 26 8a 47 27
     test al, al                               ; 84 c0
-    jne short 063e4h                          ; 75 04
+    jne short 063e5h                          ; 75 04
     xor si, si                                ; 31 f6
-    jmp short 063e7h                          ; eb 03
+    jmp short 063e8h                          ; eb 03
     mov si, strict word 00008h                ; be 08 00
     or si, strict byte 00010h                 ; 83 ce 10
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 063f6h                          ; 75 08
+    jne short 063f7h                          ; 75 08
     mov dx, strict word 00001h                ; ba 01 00
-    jmp short 063f8h                          ; eb 05
-    jmp near 0648eh                           ; e9 98 00
+    jmp short 063f9h                          ; eb 05
+    jmp near 0648fh                           ; e9 98 00
     xor dx, dx                                ; 31 d2
     or si, dx                                 ; 09 d6
     cmp AL, strict byte 003h                  ; 3c 03
-    jne short 06403h                          ; 75 05
+    jne short 06404h                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 06405h                          ; eb 02
+    jmp short 06406h                          ; eb 02
     xor ax, ax                                ; 31 c0
     or si, ax                                 ; 09 c6
     mov ax, word [bp-022h]                    ; 8b 46 de
@@ -9343,25 +9351,25 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov byte [es:bx+00242h], 011h             ; 26 c6 87 42 02 11
     xor bl, bl                                ; 30 db
     xor bh, bh                                ; 30 ff
-    jmp short 0646eh                          ; eb 05
+    jmp short 0646fh                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 06484h                          ; 73 16
+    jnc short 06485h                          ; 73 16
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     add dx, 00356h                            ; 81 c2 56 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 01652h                               ; e8 d4 b1
+    call 01652h                               ; e8 d3 b1
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 06469h                          ; eb e5
+    jmp short 0646ah                          ; eb e5
     neg bl                                    ; f6 db
     les si, [bp-008h]                         ; c4 76 f8
     mov byte [es:si+00243h], bl               ; 26 88 9c 43 02
     cmp word [bp-014h], strict byte 00042h    ; 83 7e ec 42
-    jnc short 06497h                          ; 73 03
-    jmp near 0655fh                           ; e9 c8 00
+    jnc short 06498h                          ; 73 03
+    jmp near 06560h                           ; e9 c8 00
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -9381,7 +9389,7 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov word [es:di+020h], strict word 00024h ; 26 c7 45 20 24 00
     mov word [es:di+022h], strict word 00000h ; 26 c7 45 22 00 00
     test al, al                               ; 84 c0
-    jne short 064e1h                          ; 75 0c
+    jne short 064e2h                          ; 75 0c
     mov word [es:di+024h], 05349h             ; 26 c7 45 24 49 53
     mov word [es:di+026h], 02041h             ; 26 c7 45 26 41 20
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -9390,7 +9398,7 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov word [es:di+02ch], 02020h             ; 26 c7 45 2c 20 20
     mov word [es:di+02eh], 02020h             ; 26 c7 45 2e 20 20
     test al, al                               ; 84 c0
-    jne short 06516h                          ; 75 16
+    jne short 06517h                          ; 75 16
     mov word [es:di+030h], dx                 ; 26 89 55 30
     mov word [es:di+032h], strict word 00000h ; 26 c7 45 32 00 00
     mov word [es:di+034h], strict word 00000h ; 26 c7 45 34 00 00
@@ -9405,19 +9413,19 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     mov word [es:di+03eh], strict word 00000h ; 26 c7 45 3e 00 00
     xor bl, bl                                ; 30 db
     mov BH, strict byte 01eh                  ; b7 1e
-    jmp short 06541h                          ; eb 05
+    jmp short 06542h                          ; eb 05
     cmp bh, 040h                              ; 80 ff 40
-    jnc short 06556h                          ; 73 15
+    jnc short 06557h                          ; 73 15
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, ax                                ; 01 c2
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01652h                               ; e8 02 b1
+    call 01652h                               ; e8 01 b1
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 0653ch                          ; eb e6
+    jmp short 0653dh                          ; eb e6
     neg bl                                    ; f6 db
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+041h], bl                 ; 26 88 5d 41
@@ -9425,20 +9433,20 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     xor bx, bx                                ; 31 db
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 f2 b0
+    call 01660h                               ; e8 f1 b0
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
     cmp ax, strict word 00006h                ; 3d 06 00
-    je short 0655fh                           ; 74 e4
+    je short 06560h                           ; 74 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 0658ch                           ; 72 0c
-    jbe short 0655fh                          ; 76 dd
+    jc short 0658dh                           ; 72 0c
+    jbe short 06560h                          ; 76 dd
     cmp ax, strict word 00003h                ; 3d 03 00
-    jc short 0658ch                           ; 72 05
+    jc short 0658dh                           ; 72 05
     cmp ax, strict word 00004h                ; 3d 04 00
-    jbe short 0655fh                          ; 76 d3
+    jbe short 06560h                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -9447,10 +9455,10 @@ _int13_harddisk_ext:                         ; 0xf6080 LB 0x52b
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 bb b0
+    call 01660h                               ; e8 ba b0
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 06572h                          ; eb c7
-_int14_function:                             ; 0xf65ab LB 0x15c
+    jmp short 06573h                          ; eb c7
+_int14_function:                             ; 0xf65ac LB 0x15c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9458,30 +9466,30 @@ _int14_function:                             ; 0xf65ab LB 0x15c
     mov dx, word [bp+00eh]                    ; 8b 56 0e
     sal dx, 1                                 ; d1 e2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 b3 b0
+    call 0166eh                               ; e8 b2 b0
     mov si, ax                                ; 89 c6
     mov bx, ax                                ; 89 c3
     mov dx, word [bp+00eh]                    ; 8b 56 0e
     add dx, strict byte 0007ch                ; 83 c2 7c
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 87 b0
+    call 01652h                               ; e8 86 b0
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc short 065d7h                          ; 73 04
+    jnc short 065d8h                          ; 73 04
     test si, si                               ; 85 f6
-    jnbe short 065dah                         ; 77 03
-    jmp near 066fdh                           ; e9 23 01
+    jnbe short 065dbh                         ; 77 03
+    jmp near 066feh                           ; e9 23 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 065eeh                           ; 72 0d
-    jbe short 0664eh                          ; 76 6b
+    jc short 065efh                           ; 72 0d
+    jbe short 0664fh                          ; 76 6b
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 06646h                           ; 74 5f
+    je short 06647h                           ; 74 5f
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 06649h                           ; 74 5e
-    jmp near 066f7h                           ; e9 09 01
+    je short 0664ah                           ; 74 5e
+    jmp near 066f8h                           ; e9 09 01
     test al, al                               ; 84 c0
-    jne short 0664bh                          ; 75 59
+    jne short 0664ch                          ; 75 59
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9491,14 +9499,14 @@ _int14_function:                             ; 0xf65ab LB 0x15c
     lea si, [bx+001h]                         ; 8d 77 01
     mov al, byte [bp+012h]                    ; 8a 46 12
     test AL, strict byte 0e0h                 ; a8 e0
-    jne short 06611h                          ; 75 0c
+    jne short 06612h                          ; 75 0c
     mov AL, strict byte 017h                  ; b0 17
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     mov AL, strict byte 004h                  ; b0 04
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
-    jmp short 06628h                          ; eb 17
+    jmp short 06629h                          ; eb 17
     and AL, strict byte 0e0h                  ; 24 e0
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 005h                  ; b1 05
@@ -9525,13 +9533,13 @@ _int14_function:                             ; 0xf65ab LB 0x15c
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 066d8h                           ; e9 92 00
-    jmp near 066e6h                           ; e9 9d 00
-    jmp short 0669ch                          ; eb 51
-    jmp near 066f7h                           ; e9 a9 00
+    jmp near 066d9h                           ; e9 92 00
+    jmp near 066e7h                           ; e9 9d 00
+    jmp short 0669dh                          ; eb 51
+    jmp near 066f8h                           ; e9 a9 00
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 17 b0
+    call 0166eh                               ; e8 16 b0
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
@@ -9539,20 +9547,20 @@ _int14_function:                             ; 0xf65ab LB 0x15c
     ; sub ah, ah                                ; 2a e4
     and ax, strict word 00060h                ; 25 60 00
     cmp ax, strict word 00060h                ; 3d 60 00
-    je short 0667eh                           ; 74 17
+    je short 0667fh                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 0667eh                           ; 74 13
+    je short 0667fh                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 fa af
+    call 0166eh                               ; e8 f9 af
     cmp ax, si                                ; 39 f0
-    je short 06659h                           ; 74 e1
+    je short 0665ah                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 06659h                          ; eb db
+    jmp short 0665ah                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 06688h                           ; 74 06
+    je short 06689h                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -9562,33 +9570,33 @@ _int14_function:                             ; 0xf65ab LB 0x15c
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 066d8h                          ; 75 43
+    jne short 066d9h                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 066d8h                          ; eb 3c
+    jmp short 066d9h                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 c9 af
+    call 0166eh                               ; e8 c8 af
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 066c8h                          ; 75 17
+    jne short 066c9h                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 066c8h                           ; 74 13
+    je short 066c9h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 b0 af
+    call 0166eh                               ; e8 af af
     cmp ax, si                                ; 39 f0
-    je short 066a7h                           ; 74 e5
+    je short 066a8h                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 066a7h                          ; eb df
+    jmp short 066a8h                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 066deh                           ; 74 12
+    je short 066dfh                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -9596,12 +9604,12 @@ _int14_function:                             ; 0xf65ab LB 0x15c
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 06701h                          ; eb 23
+    jmp short 06702h                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 06697h                          ; eb b1
+    jmp short 06698h                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9611,15 +9619,15 @@ _int14_function:                             ; 0xf65ab LB 0x15c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 066d5h                          ; eb de
+    jmp short 066d6h                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 06701h                          ; eb 04
+    jmp short 06702h                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-timer_wait_:                                 ; 0xf6707 LB 0x43
+timer_wait_:                                 ; 0xf6708 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9627,7 +9635,7 @@ timer_wait_:                                 ; 0xf6707 LB 0x43
     push ax                                   ; 50
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0a070h                               ; e8 5b 39
+    call 0a070h                               ; e8 5a 39
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
     mov dx, strict word 00061h                ; ba 61 00
@@ -9639,23 +9647,23 @@ timer_wait_:                                 ; 0xf6707 LB 0x43
     add cx, strict byte 0ffffh                ; 83 c1 ff
     adc bx, strict byte 0ffffh                ; 83 d3 ff
     cmp bx, strict byte 0ffffh                ; 83 fb ff
-    jne short 06734h                          ; 75 05
+    jne short 06735h                          ; 75 05
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 06743h                           ; 74 0f
+    je short 06744h                           ; 74 0f
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 010h                  ; 24 10
     cmp al, byte [bp-006h]                    ; 3a 46 fa
-    jne short 06734h                          ; 75 f3
-    jmp short 06724h                          ; eb e1
+    jne short 06735h                          ; 75 f3
+    jmp short 06725h                          ; eb e1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf674a LB 0x30
+set_enable_a20_:                             ; 0xf674b LB 0x30
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9668,16 +9676,16 @@ set_enable_a20_:                             ; 0xf674a LB 0x30
     ; sub ah, ah                                ; 2a e4
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 06763h                           ; 74 05
+    je short 06764h                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 06766h                          ; eb 03
+    jmp short 06767h                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
     test cl, 002h                             ; f6 c1 02
-    je short 06770h                           ; 74 05
+    je short 06771h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 06772h                          ; eb 02
+    jmp short 06773h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -9685,7 +9693,7 @@ set_enable_a20_:                             ; 0xf674a LB 0x30
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf677a LB 0x88
+set_e820_range_:                             ; 0xf677b LB 0x88
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9715,10 +9723,10 @@ set_e820_range_:                             ; 0xf677a LB 0x88
     pop si                                    ; 5e
     retn 0000ah                               ; c2 0a 00
     db  0ech, 0e9h, 0d8h, 0c1h, 0c0h, 0bfh, 091h, 090h, 089h, 088h, 083h, 052h, 04fh, 041h, 024h, 000h
-    db  00fh, 06bh, 03eh, 068h, 052h, 068h, 0eeh, 068h, 0f4h, 068h, 0f9h, 068h, 0feh, 068h, 0a6h, 069h
-    db  0cah, 069h, 0e7h, 068h, 0e7h, 068h, 094h, 06ah, 0bfh, 06ah, 0d2h, 06ah, 0e1h, 06ah, 0eeh, 068h
-    db  0eah, 06ah
-_int15_function:                             ; 0xf6802 LB 0x343
+    db  010h, 06bh, 03fh, 068h, 053h, 068h, 0efh, 068h, 0f5h, 068h, 0fah, 068h, 0ffh, 068h, 0a7h, 069h
+    db  0cbh, 069h, 0e8h, 068h, 0e8h, 068h, 095h, 06ah, 0c0h, 06ah, 0d3h, 06ah, 0e2h, 06ah, 0efh, 068h
+    db  0ebh, 06ah
+_int15_function:                             ; 0xf6803 LB 0x343
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9727,15 +9735,15 @@ _int15_function:                             ; 0xf6802 LB 0x343
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe short 06848h                         ; 77 35
+    jnbe short 06849h                         ; 77 35
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00011h                ; b9 11 00
-    mov di, 067d0h                            ; bf d0 67
+    mov di, 067d1h                            ; bf d1 67
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+067e0h]               ; 2e 8b b5 e0 67
+    mov si, word [cs:di+067e1h]               ; 2e 8b b5 e1 67
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     mov cx, word [bp+018h]                    ; 8b 4e 18
@@ -9748,31 +9756,31 @@ _int15_function:                             ; 0xf6802 LB 0x343
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    je short 0684bh                           ; 74 03
-    jmp near 06b0fh                           ; e9 c4 02
+    je short 0684ch                           ; 74 03
+    jmp near 06b10h                           ; e9 c4 02
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 06ab6h                           ; e9 64 02
+    jmp near 06ab7h                           ; e9 64 02
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06867h                           ; 72 0e
-    jbe short 0687bh                          ; 76 20
+    jc short 06868h                           ; 72 0e
+    jbe short 0687ch                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 068ach                           ; 74 4c
+    je short 068adh                           ; 74 4c
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 0688bh                           ; 74 26
-    jmp short 068b9h                          ; eb 52
+    je short 0688ch                           ; 74 26
+    jmp short 068bah                          ; eb 52
     test ax, ax                               ; 85 c0
-    jne short 068b9h                          ; 75 4e
+    jne short 068bah                          ; 75 4e
     xor ax, ax                                ; 31 c0
-    call 0674ah                               ; e8 da fe
+    call 0674bh                               ; e8 da fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 068e7h                           ; e9 6c 00
+    jmp near 068e8h                           ; e9 6c 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 0674ah                               ; e8 c9 fe
+    call 0674bh                               ; e8 c9 fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 068e7h                           ; e9 5c 00
+    jmp near 068e8h                           ; e9 5c 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9786,15 +9794,15 @@ _int15_function:                             ; 0xf6802 LB 0x343
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     xor al, dl                                ; 30 d0
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp near 068e7h                           ; e9 3b 00
+    jmp near 068e8h                           ; e9 3b 00
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], ah                    ; 88 66 13
     mov word [bp+00ch], ax                    ; 89 46 0c
-    jmp near 068e7h                           ; e9 2e 00
+    jmp near 068e8h                           ; e9 2e 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 6f b0
+    call 01933h                               ; e8 6e b0
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9802,7 +9810,7 @@ _int15_function:                             ; 0xf6802 LB 0x343
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 a1 b0
+    call 01976h                               ; e8 a0 b0
     add sp, strict byte 00006h                ; 83 c4 06
     or byte [bp+018h], 001h                   ; 80 4e 18 01
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -9815,38 +9823,38 @@ _int15_function:                             ; 0xf6802 LB 0x343
     pop bp                                    ; 5d
     retn                                      ; c3
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp near 069a0h                           ; e9 ac 00
+    jmp near 069a1h                           ; e9 ac 00
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 068e7h                          ; eb ee
+    jmp short 068e8h                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 068e4h                          ; eb e6
+    jmp short 068e5h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 06973h                          ; 75 6f
+    jne short 06974h                          ; 75 6f
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 45 ad
+    call 01652h                               ; e8 44 ad
     test AL, strict byte 001h                 ; a8 01
-    jne short 06970h                          ; 75 5f
+    jne short 06971h                          ; 75 5f
     mov bx, strict word 00001h                ; bb 01 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 43 ad
+    call 01660h                               ; e8 42 ad
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 53 ad
+    call 0167ch                               ; e8 52 ad
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 47 ad
+    call 0167ch                               ; e8 46 ad
     mov bx, word [bp+00eh]                    ; 8b 5e 0e
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 3b ad
+    call 0167ch                               ; e8 3a ad
     mov bx, word [bp+010h]                    ; 8b 5e 10
     mov dx, 0009eh                            ; ba 9e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0167ch                               ; e8 2f ad
+    call 0167ch                               ; e8 2e ad
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9855,26 +9863,26 @@ _int15_function:                             ; 0xf6802 LB 0x343
     and AL, strict byte 0feh                  ; 24 fe
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 4e ad
+    call 016aeh                               ; e8 4d ad
     mov dl, al                                ; 88 c2
     or dl, 040h                               ; 80 ca 40
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 5c ad
-    jmp near 068e7h                           ; e9 77 ff
-    jmp near 06aadh                           ; e9 3a 01
+    call 016c9h                               ; e8 5b ad
+    jmp near 068e8h                           ; e9 77 ff
+    jmp near 06aaeh                           ; e9 3a 01
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 06994h                          ; 75 1c
+    jne short 06995h                          ; 75 1c
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 dd ac
+    call 01660h                               ; e8 dc ac
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 21 ad
+    call 016aeh                               ; e8 20 ad
     mov dl, al                                ; 88 c2
     and dl, 0bfh                              ; 80 e2 bf
-    jmp short 06965h                          ; eb d1
+    jmp short 06966h                          ; eb d1
     mov word [bp+018h], dx                    ; 89 56 18
     mov ax, bx                                ; 89 d8
     xor ah, bh                                ; 30 fc
@@ -9882,47 +9890,47 @@ _int15_function:                             ; 0xf6802 LB 0x343
     dec ax                                    ; 48
     or bx, ax                                 ; 09 c3
     mov word [bp+012h], bx                    ; 89 5e 12
-    jmp near 068e7h                           ; e9 41 ff
+    jmp near 068e8h                           ; e9 41 ff
     mov ax, strict word 00031h                ; b8 31 00
-    call 016aeh                               ; e8 02 ad
+    call 016aeh                               ; e8 01 ad
     mov dh, al                                ; 88 c6
     mov ax, strict word 00030h                ; b8 30 00
-    call 016aeh                               ; e8 fa ac
+    call 016aeh                               ; e8 f9 ac
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
     cmp dx, strict byte 0ffc0h                ; 83 fa c0
-    jbe short 069c3h                          ; 76 05
+    jbe short 069c4h                          ; 76 05
     mov word [bp+012h], strict word 0ffc0h    ; c7 46 12 c0 ff
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
-    jmp near 068e7h                           ; e9 1d ff
+    jmp near 068e8h                           ; e9 1d ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 0674ah                               ; e8 79 fd
+    call 0674bh                               ; e8 79 fd
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 00038h                ; 83 c2 38
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0ffffh                ; bb ff ff
-    call 0167ch                               ; e8 9c ac
+    call 0167ch                               ; e8 9b ac
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ah                ; 83 c2 3a
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ch                               ; e8 8e ac
+    call 0167ch                               ; e8 8d ac
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003ch                ; 83 c2 3c
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, strict word 0000fh                ; bb 0f 00
-    call 01660h                               ; e8 63 ac
+    call 01660h                               ; e8 62 ac
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003dh                ; 83 c2 3d
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov bx, 0009bh                            ; bb 9b 00
-    call 01660h                               ; e8 54 ac
+    call 01660h                               ; e8 53 ac
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, strict byte 0003eh                ; 83 c2 3e
     mov ax, word [bp+014h]                    ; 8b 46 14
     xor bx, bx                                ; 31 db
-    call 0167ch                               ; e8 62 ac
+    call 0167ch                               ; e8 61 ac
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
     out DX, AL                                ; ee
@@ -9951,7 +9959,7 @@ _int15_function:                             ; 0xf6802 LB 0x343
     mov dx, 000a1h                            ; ba a1 00
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 06a58h                               ; e8 00 00
+    call 06a59h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00038h                   ; 6a 38
@@ -9979,77 +9987,79 @@ _int15_function:                             ; 0xf6802 LB 0x343
     push ax                                   ; 50
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 068e7h                           ; e9 53 fe
+    jmp near 068e8h                           ; e9 53 fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 94 ae
+    call 01933h                               ; e8 93 ae
     mov ax, 0086eh                            ; b8 6e 08
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 cc ae
+    call 01976h                               ; e8 cb ae
     add sp, strict byte 00004h                ; 83 c4 04
     or byte [bp+018h], 001h                   ; 80 4e 18 01
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 068e7h                           ; e9 28 fe
+    jmp near 068e8h                           ; e9 28 fe
     mov word [bp+018h], cx                    ; 89 4e 18
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+00ch], 0e6f5h                ; c7 46 0c f5 e6
     mov word [bp+014h], 0f000h                ; c7 46 14 00 f0
-    jmp near 068e7h                           ; e9 15 fe
+    jmp near 068e8h                           ; e9 15 fe
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 93 ab
+    call 0166eh                               ; e8 92 ab
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 069c3h                           ; e9 e2 fe
+    jmp near 069c4h                           ; e9 e2 fe
     mov ax, 0089dh                            ; b8 9d 08
     push ax                                   ; 50
     mov ax, strict word 00008h                ; b8 08 00
-    jmp short 06aa6h                          ; eb bc
+    jmp short 06aa7h                          ; eb bc
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 06b0fh                          ; 75 1f
+    jne short 06b10h                          ; 75 1f
     mov word [bp+012h], ax                    ; 89 46 12
     mov ax, word [bp+00ch]                    ; 8b 46 0c
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06b08h                           ; 72 0b
+    jc short 06b09h                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 06b08h                         ; 77 06
+    jnbe short 06b09h                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 068e7h                           ; e9 df fd
+    jmp near 068e8h                           ; e9 df fd
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 068e7h                           ; e9 d8 fd
+    jmp near 068e8h                           ; e9 d8 fd
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 19 ae
+    call 01933h                               ; e8 18 ae
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     mov ax, 008b4h                            ; b8 b4 08
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 4b ae
+    call 01976h                               ; e8 4a ae
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 06aadh                           ; e9 7c ff
-    scasb                                     ; ae
+    jmp near 06aaeh                           ; e9 7c ff
+    scasw                                     ; af
     insb                                      ; 6c
-    fsubr dword [si+030h]                     ; d8 6c 30
+    fldcw [si+031h]                           ; d9 6c 31
     insw                                      ; 6d
-    push bp                                   ; 55
+    push si                                   ; 56
     insw                                      ; 6d
-    jne short 06ba8h                          ; 75 6d
-    xchg sp, ax                               ; 94
+    jbe short 06ba9h                          ; 76 6d
+    xchg bp, ax                               ; 95
     insw                                      ; 6d
-    mov dx, 0e06dh                            ; ba 6d e0
+    mov bx, 0e16dh                            ; bb 6d e1
     insw                                      ; 6d
-    sbb ax, 0516eh                            ; 1d 6e 51
+    push DS                                   ; 1e
+    outsb                                     ; 6e
+    push dx                                   ; 52
     outsb                                     ; 6e
-_int15_function32:                           ; 0xf6b45 LB 0x39e
+_int15_function32:                           ; 0xf6b46 LB 0x39e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10061,34 +10071,34 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov dx, word [bp+020h]                    ; 8b 56 20
     xor dh, dh                                ; 30 f6
     cmp ax, 000e8h                            ; 3d e8 00
-    je short 06babh                           ; 74 4a
+    je short 06bach                           ; 74 4a
     cmp ax, 000d0h                            ; 3d d0 00
-    je short 06b78h                           ; 74 12
+    je short 06b79h                           ; 74 12
     cmp ax, 00086h                            ; 3d 86 00
-    jne short 06ba9h                          ; 75 3e
+    jne short 06baah                          ; 75 3e
     sti                                       ; fb
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 06707h                               ; e8 92 fb
-    jmp near 06d2ah                           ; e9 b2 01
+    call 06708h                               ; e8 92 fb
+    jmp near 06d2bh                           ; e9 b2 01
     cmp dx, strict byte 0004fh                ; 83 fa 4f
-    jne short 06ba9h                          ; 75 2c
+    jne short 06baah                          ; 75 2c
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne short 06bdfh                          ; 75 5b
+    jne short 06be0h                          ; 75 5b
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne short 06bdfh                          ; 75 54
+    jne short 06be0h                          ; 75 54
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne short 06bdfh                          ; 75 4d
+    jne short 06be0h                          ; 75 4d
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne short 06bdfh                          ; 75 46
+    jne short 06be0h                          ; 75 46
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne short 06bdfh                          ; 75 3e
+    jne short 06be0h                          ; 75 3e
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    je short 06badh                           ; 74 04
-    jmp short 06bdfh                          ; eb 34
-    jmp short 06bd5h                          ; eb 28
+    je short 06baeh                           ; 74 04
+    jmp short 06be0h                          ; eb 34
+    jmp short 06bd6h                          ; eb 28
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, word [bp+014h]                    ; 8b 46 14
     mov word [bp+008h], ax                    ; 89 46 08
@@ -10100,28 +10110,28 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+020h], 03332h                ; c7 46 20 32 33
     mov word [bp+022h], 04941h                ; c7 46 22 41 49
-    jmp near 06d2ah                           ; e9 55 01
+    jmp near 06d2bh                           ; e9 55 01
     cmp dx, strict byte 00020h                ; 83 fa 20
-    je short 06be5h                           ; 74 0b
+    je short 06be6h                           ; 74 0b
     cmp dx, strict byte 00001h                ; 83 fa 01
-    je short 06be2h                           ; 74 03
-    jmp near 06cfdh                           ; e9 1b 01
-    jmp near 06ea3h                           ; e9 be 02
+    je short 06be3h                           ; 74 03
+    jmp near 06cfeh                           ; e9 1b 01
+    jmp near 06ea4h                           ; e9 be 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne short 06bdfh                          ; 75 f3
+    jne short 06be0h                          ; 75 f3
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne short 06bdfh                          ; 75 ec
+    jne short 06be0h                          ; 75 ec
     mov ax, strict word 00035h                ; b8 35 00
-    call 016aeh                               ; e8 b5 aa
+    call 016aeh                               ; e8 b4 aa
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06c02h                               ; e2 fa
+    loop 06c03h                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 016aeh                               ; e8 a0 aa
+    call 016aeh                               ; e8 9f aa
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
     or dx, ax                                 ; 09 c2
@@ -10129,31 +10139,31 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     add bx, bx                                ; 01 db
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 06c28h                           ; 72 06
-    jne short 06c56h                          ; 75 32
+    jc short 06c29h                           ; 72 06
+    jne short 06c57h                          ; 75 32
     test bx, bx                               ; 85 db
-    jnbe short 06c56h                         ; 77 2e
+    jnbe short 06c57h                         ; 77 2e
     mov ax, strict word 00031h                ; b8 31 00
-    call 016aeh                               ; e8 80 aa
+    call 016aeh                               ; e8 7f aa
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     xor dx, dx                                ; 31 d2
     mov cx, strict word 00008h                ; b9 08 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06c37h                               ; e2 fa
+    loop 06c38h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 016aeh                               ; e8 6b aa
+    call 016aeh                               ; e8 6a aa
     xor ah, ah                                ; 30 e4
     or bx, ax                                 ; 09 c3
     mov cx, strict word 0000ah                ; b9 0a 00
     sal bx, 1                                 ; d1 e3
     rcl dx, 1                                 ; d1 d2
-    loop 06c4ah                               ; e2 fa
+    loop 06c4bh                               ; e2 fa
     add bx, strict byte 00000h                ; 83 c3 00
     adc dx, strict byte 00010h                ; 83 d2 10
     mov ax, strict word 00062h                ; b8 62 00
-    call 016aeh                               ; e8 52 aa
+    call 016aeh                               ; e8 51 aa
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
     xor al, al                                ; 30 c0
@@ -10161,28 +10171,28 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov cx, strict word 00008h                ; b9 08 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 06c69h                               ; e2 f8
+    loop 06c6ah                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 016aeh                               ; e8 37 aa
+    call 016aeh                               ; e8 36 aa
     xor ah, ah                                ; 30 e4
     or word [bp-00ah], ax                     ; 09 46 f6
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     mov word [bp-008h], ax                    ; 89 46 f8
     mov word [bp-00ah], strict word 00000h    ; c7 46 f6 00 00
     mov ax, strict word 00063h                ; b8 63 00
-    call 016aeh                               ; e8 21 aa
+    call 016aeh                               ; e8 20 aa
     mov byte [bp-004h], al                    ; 88 46 fc
     mov byte [bp-006h], al                    ; 88 46 fa
     mov ax, word [bp+014h]                    ; 8b 46 14
     cmp ax, strict word 00009h                ; 3d 09 00
-    jnbe short 06cfdh                         ; 77 62
+    jnbe short 06cfeh                         ; 77 62
     mov si, ax                                ; 89 c6
     sal si, 1                                 ; d1 e6
     mov ax, bx                                ; 89 d8
     add ax, strict word 00000h                ; 05 00 00
     mov cx, dx                                ; 89 d1
     adc cx, strict byte 0ffffh                ; 83 d1 ff
-    jmp word [cs:si+06b31h]                   ; 2e ff a4 31 6b
+    jmp word [cs:si+06b32h]                   ; 2e ff a4 32 6b
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10196,10 +10206,10 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 0677ah                               ; e8 af fa
+    call 0677bh                               ; e8 af fa
     mov word [bp+014h], strict word 00001h    ; c7 46 14 01 00
     mov word [bp+016h], strict word 00000h    ; c7 46 16 00 00
-    jmp near 06e88h                           ; e9 b0 01
+    jmp near 06e89h                           ; e9 b0 01
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10213,20 +10223,20 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     mov bx, 0fc00h                            ; bb 00 fc
     mov cx, strict word 00009h                ; b9 09 00
-    call 0677ah                               ; e8 84 fa
+    call 0677bh                               ; e8 84 fa
     mov word [bp+014h], strict word 00002h    ; c7 46 14 02 00
-    jmp short 06cd0h                          ; eb d3
+    jmp short 06cd1h                          ; eb d3
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 2b ac
+    call 01933h                               ; e8 2a ac
     push word [bp+014h]                       ; ff 76 14
     push word [bp+020h]                       ; ff 76 20
     mov ax, 008b4h                            ; b8 b4 08
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 5d ac
+    call 01976h                               ; e8 5c ac
     add sp, strict byte 00008h                ; 83 c4 08
     or byte [bp+028h], 001h                   ; 80 4e 28 01
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -10250,9 +10260,9 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 0677ah                               ; e8 2d fa
+    call 0677bh                               ; e8 2d fa
     mov word [bp+014h], strict word 00003h    ; c7 46 14 03 00
-    jmp near 06cd0h                           ; e9 7b ff
+    jmp near 06cd1h                           ; e9 7b ff
     mov dx, strict word 00001h                ; ba 01 00
     push dx                                   ; 52
     xor dx, dx                                ; 31 d2
@@ -10264,9 +10274,9 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 0677ah                               ; e8 0d fa
+    call 0677bh                               ; e8 0d fa
     mov word [bp+014h], strict word 00004h    ; c7 46 14 04 00
-    jmp near 06cd0h                           ; e9 5b ff
+    jmp near 06cd1h                           ; e9 5b ff
     mov si, strict word 00003h                ; be 03 00
     push si                                   ; 56
     xor si, si                                ; 31 f6
@@ -10278,9 +10288,9 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov si, word [bp+024h]                    ; 8b 76 24
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 0677ah                               ; e8 ee f9
+    call 0677bh                               ; e8 ee f9
     mov word [bp+014h], strict word 00005h    ; c7 46 14 05 00
-    jmp near 06cd0h                           ; e9 3c ff
+    jmp near 06cd1h                           ; e9 3c ff
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10294,9 +10304,9 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fec0h                            ; b9 c0 fe
-    call 0677ah                               ; e8 c8 f9
+    call 0677bh                               ; e8 c8 f9
     mov word [bp+014h], strict word 00006h    ; c7 46 14 06 00
-    jmp near 06cd0h                           ; e9 16 ff
+    jmp near 06cd1h                           ; e9 16 ff
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10310,9 +10320,9 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fee0h                            ; b9 e0 fe
-    call 0677ah                               ; e8 a2 f9
+    call 0677bh                               ; e8 a2 f9
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 06cd0h                           ; e9 f0 fe
+    jmp near 06cd1h                           ; e9 f0 fe
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10324,19 +10334,19 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 0677ah                               ; e8 82 f9
+    call 0677bh                               ; e8 82 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06e05h                          ; 75 07
+    jne short 06e06h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06e15h                           ; 74 10
+    je short 06e16h                           ; 74 10
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06cd0h                           ; e9 c3 fe
+    jmp near 06cd1h                           ; e9 c3 fe
     mov word [bp+014h], strict word 00008h    ; c7 46 14 08 00
-    jmp near 06cd0h                           ; e9 bb fe
+    jmp near 06cd1h                           ; e9 bb fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06e88h                          ; eb 6b
+    jmp short 06e89h                          ; eb 6b
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10348,21 +10358,21 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 0677ah                               ; e8 46 f9
+    call 0677bh                               ; e8 46 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06e41h                          ; 75 07
+    jne short 06e42h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06e49h                           ; 74 08
+    je short 06e4ah                           ; 74 08
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06cd0h                           ; e9 87 fe
+    jmp near 06cd1h                           ; e9 87 fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06e88h                          ; eb 37
+    jmp short 06e89h                          ; eb 37
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06e5dh                          ; 75 06
+    jne short 06e5eh                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 06e88h                           ; 74 2b
+    je short 06e89h                           ; 74 2b
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
     mov al, byte [bp-006h]                    ; 8a 46 fa
@@ -10378,7 +10388,7 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 0677ah                               ; e8 fa f8
+    call 0677bh                               ; e8 fa f8
     xor ax, ax                                ; 31 c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
@@ -10387,30 +10397,30 @@ _int15_function32:                           ; 0xf6b45 LB 0x39e
     mov word [bp+01ch], strict word 00014h    ; c7 46 1c 14 00
     mov word [bp+01eh], strict word 00000h    ; c7 46 1e 00 00
     and byte [bp+028h], 0feh                  ; 80 66 28 fe
-    jmp near 06d2ah                           ; e9 87 fe
+    jmp near 06d2bh                           ; e9 87 fe
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 016aeh                               ; e8 02 a8
+    call 016aeh                               ; e8 01 a8
     mov dh, al                                ; 88 c6
     mov ax, strict word 00030h                ; b8 30 00
-    call 016aeh                               ; e8 fa a7
+    call 016aeh                               ; e8 f9 a7
     mov dl, al                                ; 88 c2
     mov word [bp+01ch], dx                    ; 89 56 1c
     cmp dx, 03c00h                            ; 81 fa 00 3c
-    jbe short 06ec4h                          ; 76 05
+    jbe short 06ec5h                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 016aeh                               ; e8 e4 a7
+    call 016aeh                               ; e8 e3 a7
     mov dh, al                                ; 88 c6
     mov ax, strict word 00034h                ; b8 34 00
-    call 016aeh                               ; e8 dc a7
+    call 016aeh                               ; e8 db a7
     mov dl, al                                ; 88 c2
     mov word [bp+018h], dx                    ; 89 56 18
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov word [bp+020h], ax                    ; 89 46 20
     mov word [bp+014h], dx                    ; 89 56 14
-    jmp near 06d2ah                           ; e9 47 fe
-_inv_op_handler:                             ; 0xf6ee3 LB 0x18f
+    jmp near 06d2bh                           ; e9 47 fe
+_inv_op_handler:                             ; 0xf6ee4 LB 0x18f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10419,12 +10429,12 @@ _inv_op_handler:                             ; 0xf6ee3 LB 0x18f
     push ax                                   ; 50
     les bx, [bp+018h]                         ; c4 5e 18
     cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
-    jne short 06ef9h                          ; 75 06
+    jne short 06efah                          ; 75 06
     inc word [bp+018h]                        ; ff 46 18
-    jmp near 0706bh                           ; e9 72 01
+    jmp near 0706ch                           ; e9 72 01
     cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
-    je short 06f03h                           ; 74 03
-    jmp near 07067h                           ; e9 64 01
+    je short 06f04h                           ; 74 03
+    jmp near 07068h                           ; e9 64 01
     mov si, 00800h                            ; be 00 08
     xor ax, ax                                ; 31 c0
     mov word [bp-008h], ax                    ; 89 46 f8
@@ -10453,11 +10463,11 @@ _inv_op_handler:                             ; 0xf6ee3 LB 0x18f
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f54h                               ; e2 fa
+    loop 06f55h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f62h                          ; 75 04
+    jne short 06f63h                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f67h                           ; 74 05
+    je short 06f68h                           ; 74 05
     mov word [bp-006h], strict word 00001h    ; c7 46 fa 01 00
     mov es, [bp-008h]                         ; 8e 46 f8
     mov bl, byte [es:si+04ah]                 ; 26 8a 5c 4a
@@ -10468,11 +10478,11 @@ _inv_op_handler:                             ; 0xf6ee3 LB 0x18f
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f7dh                               ; e2 fa
+    loop 06f7eh                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f8bh                          ; 75 04
+    jne short 06f8ch                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f8fh                           ; 74 04
+    je short 06f90h                           ; 74 04
     or byte [bp-006h], 002h                   ; 80 4e fa 02
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
@@ -10522,10 +10532,10 @@ _inv_op_handler:                             ; 0xf6ee3 LB 0x18f
     lmsw ax                                   ; 0f 01 f0
     mov ax, strict word 00008h                ; b8 08 00
     test cx, strict word 00001h               ; f7 c1 01 00
-    je near 07024h                            ; 0f 84 02 00
+    je near 07025h                            ; 0f 84 02 00
     mov es, ax                                ; 8e c0
     test cx, strict word 00002h               ; f7 c1 02 00
-    je near 0704ch                            ; 0f 84 20 00
+    je near 0704dh                            ; 0f 84 20 00
     mov bx, word [word ss:00000h]             ; 36 8b 1e 00 00
     mov word [word ss:00008h], bx             ; 36 89 1e 08 00
     mov bx, word [word ss:00002h]             ; 36 8b 1e 02 00
@@ -10542,144 +10552,144 @@ _inv_op_handler:                             ; 0xf6ee3 LB 0x18f
     sub sp, strict byte 00006h                ; 83 ec 06
     mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
     iret                                      ; cf
-    jmp short 0706bh                          ; eb 04
+    jmp short 0706ch                          ; eb 04
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 07068h                          ; eb fd
+    jmp short 07069h                          ; eb fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf7072 LB 0x28
+init_rtc_:                                   ; 0xf7073 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016c9h                               ; e8 4a a6
+    call 016c9h                               ; e8 49 a6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 41 a6
+    call 016c9h                               ; e8 40 a6
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016aeh                               ; e8 20 a6
+    call 016aeh                               ; e8 1f a6
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 016aeh                               ; e8 1a a6
+    call 016aeh                               ; e8 19 a6
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf709a LB 0x21
+rtc_updating_:                               ; 0xf709b LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 070b2h                           ; 74 0e
+    je short 070b3h                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016aeh                               ; e8 04 a6
+    call 016aeh                               ; e8 03 a6
     test AL, strict byte 080h                 ; a8 80
-    jne short 070a1h                          ; 75 f3
+    jne short 070a2h                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 070b5h                          ; eb 03
+    jmp short 070b6h                          ; eb 03
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-_int70_function:                             ; 0xf70bb LB 0xbf
+_int70_function:                             ; 0xf70bc LB 0xbf
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push ax                                   ; 50
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 e8 a5
+    call 016aeh                               ; e8 e7 a5
     mov bl, al                                ; 88 c3
     mov byte [bp-004h], al                    ; 88 46 fc
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016aeh                               ; e8 dd a5
+    call 016aeh                               ; e8 dc a5
     mov dl, al                                ; 88 c2
     test bl, 060h                             ; f6 c3 60
-    jne short 070dbh                          ; 75 03
-    jmp near 07161h                           ; e9 86 00
+    jne short 070dch                          ; 75 03
+    jmp near 07162h                           ; e9 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 070e3h                           ; 74 04
+    je short 070e4h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dl, 040h                             ; f6 c2 40
-    je short 0714bh                           ; 74 63
+    je short 0714ch                           ; 74 63
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 61 a5
+    call 01652h                               ; e8 60 a5
     test al, al                               ; 84 c0
-    je short 07161h                           ; 74 6c
+    je short 07162h                           ; 74 6c
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0168ah                               ; e8 8c a5
+    call 0168ah                               ; e8 8b a5
     test dx, dx                               ; 85 d2
-    jne short 0714dh                          ; 75 4b
+    jne short 0714eh                          ; 75 4b
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 0714dh                          ; 73 46
+    jnc short 0714eh                          ; 73 46
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 5e a5
+    call 0166eh                               ; e8 5d a5
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 53 a5
+    call 0166eh                               ; e8 52 a5
     mov cx, ax                                ; 89 c1
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 38 a5
+    call 01660h                               ; e8 37 a5
     mov dl, byte [bp-004h]                    ; 8a 56 fc
     and dl, 037h                              ; 80 e2 37
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 93 a5
+    call 016c9h                               ; e8 92 a5
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01652h                               ; e8 15 a5
+    call 01652h                               ; e8 14 a5
     mov bl, al                                ; 88 c3
     or bl, 080h                               ; 80 cb 80
     xor bh, bh                                ; 30 ff
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01660h                               ; e8 15 a5
-    jmp short 07161h                          ; eb 14
+    call 01660h                               ; e8 14 a5
+    jmp short 07162h                          ; eb 14
     mov bx, ax                                ; 89 c3
     add bx, 0fc2fh                            ; 81 c3 2f fc
     mov cx, dx                                ; 89 d1
     adc cx, strict byte 0ffffh                ; 83 d1 ff
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0169ch                               ; e8 3b a5
-    call 0e030h                               ; e8 cc 6e
+    call 0169ch                               ; e8 3a a5
+    call 0e030h                               ; e8 cb 6e
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    nop                                       ; 90
-    jno short 07124h                          ; 71 b7
-    jno short 0714bh                          ; 71 dc
-    jno short 07189h                          ; 71 18
-    jc short 071ddh                           ; 72 6a
-    jc short 07116h                           ; 72 a1
-    jc short 0715fh                           ; 72 e8
-    jc short 071bch                           ; 72 43
+    xchg cx, ax                               ; 91
+    jno short 07126h                          ; 71 b8
+    jno short 0714dh                          ; 71 dd
+    jno short 0718bh                          ; 71 19
+    jc short 071dfh                           ; 72 6b
+    jc short 07118h                           ; 72 a2
+    jc short 07161h                           ; 72 e9
+    jc short 071beh                           ; 72 44
     db  073h
-_int1a_function:                             ; 0xf717a LB 0x1d9
+_int1a_function:                             ; 0xf717b LB 0x1d9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sti                                       ; fb
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 007h                  ; 3c 07
-    jnbe short 071e3h                         ; 77 5e
+    jnbe short 071e4h                         ; 77 5e
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx+0716ah]                   ; 2e ff a7 6a 71
+    jmp word [cs:bx+0716bh]                   ; 2e ff a7 6b 71
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10694,7 +10704,7 @@ _int1a_function:                             ; 0xf717a LB 0x1d9
     mov byte [bp+012h], al                    ; 88 46 12
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
-    jmp short 071e3h                          ; eb 2c
+    jmp short 071e4h                          ; eb 2c
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10708,23 +10718,23 @@ _int1a_function:                             ; 0xf717a LB 0x1d9
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 071e3h                          ; eb 07
-    call 0709ah                               ; e8 bb fe
+    jmp short 071e4h                          ; eb 07
+    call 0709bh                               ; e8 bb fe
     test ax, ax                               ; 85 c0
-    je short 071e6h                           ; 74 03
-    jmp near 07214h                           ; e9 2e 00
+    je short 071e7h                           ; 74 03
+    jmp near 07215h                           ; e9 2e 00
     xor ax, ax                                ; 31 c0
-    call 016aeh                               ; e8 c3 a4
+    call 016aeh                               ; e8 c2 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 016aeh                               ; e8 ba a4
+    call 016aeh                               ; e8 b9 a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 016aeh                               ; e8 b1 a4
+    call 016aeh                               ; e8 b0 a4
     mov dl, al                                ; 88 c2
     mov byte [bp+011h], al                    ; 88 46 11
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 a6 a4
+    call 016aeh                               ; e8 a5 a4
     and AL, strict byte 001h                  ; 24 01
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov byte [bp+013h], 000h                  ; c6 46 13 00
@@ -10732,24 +10742,24 @@ _int1a_function:                             ; 0xf717a LB 0x1d9
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 0709ah                               ; e8 7f fe
+    call 0709bh                               ; e8 7f fe
     test ax, ax                               ; 85 c0
-    je short 07222h                           ; 74 03
-    call 07072h                               ; e8 50 fe
+    je short 07223h                           ; 74 03
+    call 07073h                               ; e8 50 fe
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     xor ax, ax                                ; 31 c0
-    call 016c9h                               ; e8 9d a4
+    call 016c9h                               ; e8 9c a4
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00002h                ; b8 02 00
-    call 016c9h                               ; e8 92 a4
+    call 016c9h                               ; e8 91 a4
     mov dl, byte [bp+011h]                    ; 8a 56 11
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00004h                ; b8 04 00
-    call 016c9h                               ; e8 87 a4
+    call 016c9h                               ; e8 86 a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 66 a4
+    call 016aeh                               ; e8 65 a4
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
     or bl, 002h                               ; 80 cb 02
@@ -10759,78 +10769,78 @@ _int1a_function:                             ; 0xf717a LB 0x1d9
     mov dl, bl                                ; 88 da
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 68 a4
+    call 016c9h                               ; e8 67 a4
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp short 07214h                          ; eb aa
+    jmp short 07215h                          ; eb aa
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 0709ah                               ; e8 29 fe
+    call 0709bh                               ; e8 29 fe
     test ax, ax                               ; 85 c0
-    je short 07277h                           ; 74 02
-    jmp short 07214h                          ; eb 9d
+    je short 07278h                           ; 74 02
+    jmp short 07215h                          ; eb 9d
     mov ax, strict word 00009h                ; b8 09 00
-    call 016aeh                               ; e8 31 a4
+    call 016aeh                               ; e8 30 a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 016aeh                               ; e8 28 a4
+    call 016aeh                               ; e8 27 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 016aeh                               ; e8 1f a4
+    call 016aeh                               ; e8 1e a4
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 016aeh                               ; e8 16 a4
+    call 016aeh                               ; e8 15 a4
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 07214h                           ; e9 73 ff
-    call 0709ah                               ; e8 f6 fd
+    jmp near 07215h                           ; e9 73 ff
+    call 0709bh                               ; e8 f6 fd
     test ax, ax                               ; 85 c0
-    je short 072aeh                           ; 74 06
-    call 07072h                               ; e8 c7 fd
-    jmp near 07214h                           ; e9 66 ff
+    je short 072afh                           ; 74 06
+    call 07073h                               ; e8 c7 fd
+    jmp near 07215h                           ; e9 66 ff
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00009h                ; b8 09 00
-    call 016c9h                               ; e8 10 a4
+    call 016c9h                               ; e8 0f a4
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00008h                ; b8 08 00
-    call 016c9h                               ; e8 05 a4
+    call 016c9h                               ; e8 04 a4
     mov dl, byte [bp+00eh]                    ; 8a 56 0e
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00007h                ; b8 07 00
-    call 016c9h                               ; e8 fa a3
+    call 016c9h                               ; e8 f9 a3
     mov dl, byte [bp+011h]                    ; 8a 56 11
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00032h                ; b8 32 00
-    call 016c9h                               ; e8 ef a3
+    call 016c9h                               ; e8 ee a3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 ce a3
+    call 016aeh                               ; e8 cd a3
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 07257h                           ; e9 6f ff
+    jmp near 07258h                           ; e9 6f ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 c0 a3
+    call 016aeh                               ; e8 bf a3
     mov bl, al                                ; 88 c3
     mov word [bp+012h], strict word 00000h    ; c7 46 12 00 00
     test AL, strict byte 020h                 ; a8 20
-    je short 072fch                           ; 74 03
-    jmp near 07214h                           ; e9 18 ff
-    call 0709ah                               ; e8 9b fd
+    je short 072fdh                           ; 74 03
+    jmp near 07215h                           ; e9 18 ff
+    call 0709bh                               ; e8 9b fd
     test ax, ax                               ; 85 c0
-    je short 07306h                           ; 74 03
-    call 07072h                               ; e8 6c fd
+    je short 07307h                           ; 74 03
+    call 07073h                               ; e8 6c fd
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00001h                ; b8 01 00
-    call 016c9h                               ; e8 b8 a3
+    call 016c9h                               ; e8 b7 a3
     mov dl, byte [bp+010h]                    ; 8a 56 10
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00003h                ; b8 03 00
-    call 016c9h                               ; e8 ad a3
+    call 016c9h                               ; e8 ac a3
     mov dl, byte [bp+011h]                    ; 8a 56 11
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00005h                ; b8 05 00
-    call 016c9h                               ; e8 a2 a3
+    call 016c9h                               ; e8 a1 a3
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10842,15 +10852,15 @@ _int1a_function:                             ; 0xf717a LB 0x1d9
     or dl, 020h                               ; 80 ca 20
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 89 a3
-    jmp near 07214h                           ; e9 d1 fe
+    call 016c9h                               ; e8 88 a3
+    jmp near 07215h                           ; e9 d1 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 65 a3
+    call 016aeh                               ; e8 64 a3
     mov bl, al                                ; 88 c3
     mov dl, al                                ; 88 c2
     and dl, 057h                              ; 80 e2 57
-    jmp near 07259h                           ; e9 06 ff
-send_to_mouse_ctrl_:                         ; 0xf7353 LB 0x38
+    jmp near 0725ah                           ; e9 06 ff
+send_to_mouse_ctrl_:                         ; 0xf7354 LB 0x38
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10861,14 +10871,14 @@ send_to_mouse_ctrl_:                         ; 0xf7353 LB 0x38
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 07376h                           ; 74 12
+    je short 07377h                           ; 74 12
     mov ax, 008eeh                            ; b8 ee 08
     push ax                                   ; 50
     mov ax, 01168h                            ; b8 68 11
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 03 a6
+    call 01976h                               ; e8 02 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
     mov dx, strict word 00064h                ; ba 64 00
@@ -10882,7 +10892,7 @@ send_to_mouse_ctrl_:                         ; 0xf7353 LB 0x38
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf738b LB 0x5d
+get_mouse_data_:                             ; 0xf738c LB 0x5d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10897,9 +10907,9 @@ get_mouse_data_:                             ; 0xf738b LB 0x5d
     ; sub ah, ah                                ; 2a e4
     and ax, strict word 00021h                ; 25 21 00
     cmp ax, strict word 00021h                ; 3d 21 00
-    je short 073ceh                           ; 74 28
+    je short 073cfh                           ; 74 28
     test cx, cx                               ; 85 c9
-    je short 073ceh                           ; 74 24
+    je short 073cfh                           ; 74 24
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10916,13 +10926,13 @@ get_mouse_data_:                             ; 0xf738b LB 0x5d
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cmp dx, ax                                ; 39 c2
-    je short 073b5h                           ; 74 ea
+    je short 073b6h                           ; 74 ea
     dec cx                                    ; 49
-    jmp short 07398h                          ; eb ca
+    jmp short 07399h                          ; eb ca
     test cx, cx                               ; 85 c9
-    jne short 073d6h                          ; 75 04
+    jne short 073d7h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 073e1h                          ; eb 0b
+    jmp short 073e2h                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10934,7 +10944,7 @@ get_mouse_data_:                             ; 0xf738b LB 0x5d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf73e8 LB 0x36
+set_kbd_command_byte_:                       ; 0xf73e9 LB 0x36
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10945,14 +10955,14 @@ set_kbd_command_byte_:                       ; 0xf73e8 LB 0x36
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0740bh                           ; 74 12
+    je short 0740ch                           ; 74 12
     mov ax, 008f8h                            ; b8 f8 08
     push ax                                   ; 50
     mov ax, 01168h                            ; b8 68 11
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 6e a5
+    call 01976h                               ; e8 6d a5
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -10965,13 +10975,13 @@ set_kbd_command_byte_:                       ; 0xf73e8 LB 0x36
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf741e LB 0xd2
+_int74_function:                             ; 0xf741f LB 0xd2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     sub sp, strict byte 00008h                ; 83 ec 08
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 41 a2
+    call 0166eh                               ; e8 40 a2
     mov cx, ax                                ; 89 c1
     mov word [bp+004h], strict word 00000h    ; c7 46 04 00 00
     mov dx, strict word 00064h                ; ba 64 00
@@ -10980,7 +10990,7 @@ _int74_function:                             ; 0xf741e LB 0xd2
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne short 07462h                          ; 75 22
+    jne short 07463h                          ; 75 22
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10988,15 +10998,15 @@ _int74_function:                             ; 0xf741e LB 0xd2
     mov bl, al                                ; 88 c3
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 02 a2
+    call 01652h                               ; e8 01 a2
     mov byte [bp-002h], al                    ; 88 46 fe
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 f7 a1
+    call 01652h                               ; e8 f6 a1
     mov byte [bp-006h], al                    ; 88 46 fa
     test AL, strict byte 080h                 ; a8 80
-    jne short 07465h                          ; 75 03
-    jmp near 074dch                           ; e9 77 00
+    jne short 07466h                          ; 75 03
+    jmp near 074ddh                           ; e9 77 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 007h                  ; 24 07
     mov byte [bp-004h], al                    ; 88 46 fc
@@ -11010,112 +11020,112 @@ _int74_function:                             ; 0xf741e LB 0xd2
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 01660h                               ; e8 d8 a1
+    call 01660h                               ; e8 d7 a1
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp al, byte [bp-004h]                    ; 3a 46 fc
-    jc short 074cch                           ; 72 3c
+    jc short 074cdh                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 ba a1
+    call 01652h                               ; e8 b9 a1
     xor ah, ah                                ; 30 e4
     mov word [bp+00ch], ax                    ; 89 46 0c
     mov dx, strict word 00029h                ; ba 29 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 ad a1
+    call 01652h                               ; e8 ac a1
     xor ah, ah                                ; 30 e4
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov dx, strict word 0002ah                ; ba 2a 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 a0 a1
+    call 01652h                               ; e8 9f a1
     xor ah, ah                                ; 30 e4
     mov word [bp+008h], ax                    ; 89 46 08
     xor al, al                                ; 30 c0
     mov word [bp+006h], ax                    ; 89 46 06
     mov byte [bp-002h], ah                    ; 88 66 fe
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 074cfh                           ; 74 0a
+    je short 074d0h                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 074cfh                          ; eb 03
+    jmp short 074d0h                          ; eb 03
     inc byte [bp-002h]                        ; fe 46 fe
     mov bl, byte [bp-002h]                    ; 8a 5e fe
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01660h                               ; e8 84 a1
+    call 01660h                               ; e8 83 a1
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    xor dh, byte [di-052h]                    ; 32 75 ae
-    jne short 07513h                          ; 75 2e
-    jbe short 074aah                          ; 76 c3
-    jbe short 0751eh                          ; 76 35
-    jnbe short 07564h                         ; 77 79
-    jne short 0754ah                          ; 75 5d
-    jnbe short 07519h                         ; 77 2a
+    xor si, word [di-051h]                    ; 33 75 af
+    jne short 07515h                          ; 75 2f
+    jbe short 074ach                          ; 76 c4
+    jbe short 07520h                          ; 76 36
+    jnbe short 07566h                         ; 77 7a
+    jne short 0754ch                          ; 75 5e
+    jnbe short 0751bh                         ; 77 2b
     db  078h
-_int15_function_mouse:                       ; 0xf74f0 LB 0x3a0
+_int15_function_mouse:                       ; 0xf74f1 LB 0x3a0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     sub sp, strict byte 00006h                ; 83 ec 06
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 6e a1
+    call 0166eh                               ; e8 6d a1
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 07513h                          ; 76 0b
+    jbe short 07514h                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 0788ah                           ; e9 77 03
+    jmp near 0788bh                           ; e9 77 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 073e8h                               ; e8 cf fe
+    call 073e9h                               ; e8 cf fe
     and word [bp+018h], strict byte 0fffeh    ; 83 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov bl, byte [bp+012h]                    ; 8a 5e 12
     cmp bl, 007h                              ; 80 fb 07
-    jnbe short 07587h                         ; 77 5e
+    jnbe short 07588h                         ; 77 5e
     xor bh, bh                                ; 30 ff
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx+074e0h]                   ; 2e ff a7 e0 74
+    jmp word [cs:bx+074e1h]                   ; 2e ff a7 e1 74
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe short 0758ah                         ; 77 52
+    jnbe short 0758bh                         ; 77 52
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 12 a1
+    call 01652h                               ; e8 11 a1
     test AL, strict byte 080h                 ; a8 80
-    jne short 0754fh                          ; 75 0b
+    jne short 07550h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 07884h                           ; e9 35 03
+    jmp near 07885h                           ; e9 35 03
     cmp byte [bp+00dh], 000h                  ; 80 7e 0d 00
-    jne short 07559h                          ; 75 04
+    jne short 0755ah                          ; 75 04
     mov AL, strict byte 0f5h                  ; b0 f5
-    jmp short 0755bh                          ; eb 02
+    jmp short 0755ch                          ; eb 02
     mov AL, strict byte 0f4h                  ; b0 f4
     xor ah, ah                                ; 30 e4
-    call 07353h                               ; e8 f3 fd
+    call 07354h                               ; e8 f3 fd
     test al, al                               ; 84 c0
-    jne short 0758dh                          ; 75 29
+    jne short 0758eh                          ; 75 29
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 1f fe
+    call 0738ch                               ; e8 1f fe
     test al, al                               ; 84 c0
-    je short 07576h                           ; 74 06
+    je short 07577h                           ; 74 06
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    jne short 0758dh                          ; 75 17
-    jmp near 07884h                           ; e9 0b 03
+    jne short 0758eh                          ; 75 17
+    jmp near 07885h                           ; e9 0b 03
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 07584h                           ; 72 04
+    jc short 07585h                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 07590h                          ; 76 0c
-    jmp near 0772bh                           ; e9 a4 01
-    jmp near 0786eh                           ; e9 e4 02
-    jmp near 0787ch                           ; e9 ef 02
-    jmp near 07802h                           ; e9 72 02
+    jbe short 07591h                          ; 76 0c
+    jmp near 0772ch                           ; e9 a4 01
+    jmp near 0786fh                           ; e9 e4 02
+    jmp near 0787dh                           ; e9 ef 02
+    jmp near 07803h                           ; e9 72 02
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 ba a0
+    call 01652h                               ; e8 b9 a0
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
     ; dec ah                                    ; fe cc
@@ -11125,31 +11135,31 @@ _int15_function_mouse:                       ; 0xf74f0 LB 0x3a0
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01660h                               ; e8 b2 a0
+    call 01660h                               ; e8 b1 a0
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 9c a0
+    call 01652h                               ; e8 9b a0
     mov bl, al                                ; 88 c3
     and bl, 0f8h                              ; 80 e3 f8
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01660h                               ; e8 9b a0
+    call 01660h                               ; e8 9a a0
     mov ax, 000ffh                            ; b8 ff 00
-    call 07353h                               ; e8 88 fd
+    call 07354h                               ; e8 88 fd
     test al, al                               ; 84 c0
-    jne short 0758dh                          ; 75 be
+    jne short 0758eh                          ; 75 be
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0738bh                               ; e8 b4 fd
+    call 0738ch                               ; e8 b4 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0feh                  ; 80 7e f8 fe
-    jne short 075e9h                          ; 75 0a
+    jne short 075eah                          ; 75 0a
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp short 07576h                          ; eb 8d
+    jmp short 07577h                          ; eb 8d
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07603h                           ; 74 14
+    je short 07604h                           ; 74 14
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11157,91 +11167,91 @@ _int15_function_mouse:                       ; 0xf74f0 LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 76 a3
+    call 01976h                               ; e8 75 a3
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 0758dh                          ; 75 86
+    jne short 0758eh                          ; 75 86
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 7c fd
+    call 0738ch                               ; e8 7c fd
     test al, al                               ; 84 c0
-    jne short 07669h                          ; 75 56
+    jne short 0766ah                          ; 75 56
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0738bh                               ; e8 70 fd
+    call 0738ch                               ; e8 70 fd
     test al, al                               ; 84 c0
-    jne short 07669h                          ; 75 4a
+    jne short 0766ah                          ; 75 4a
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+00ch], al                    ; 88 46 0c
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [bp+00dh], al                    ; 88 46 0d
-    jmp near 07884h                           ; e9 56 02
+    jmp near 07885h                           ; e9 56 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 07645h                           ; 72 10
-    jbe short 07663h                          ; 76 2c
+    jc short 07646h                           ; 72 10
+    jbe short 07664h                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 07678h                           ; 74 3d
+    je short 07679h                           ; 74 3d
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 07672h                           ; 74 33
+    je short 07673h                           ; 74 33
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 0766ch                           ; 74 29
-    jmp short 0767eh                          ; eb 39
+    je short 0766dh                           ; 74 29
+    jmp short 0767fh                          ; eb 39
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0765dh                           ; 74 14
+    je short 0765eh                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 07657h                           ; 74 0a
+    je short 07658h                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 0767eh                          ; 75 2d
+    jne short 0767fh                          ; 75 2d
     mov byte [bp-006h], 00ah                  ; c6 46 fa 0a
-    jmp short 07682h                          ; eb 2b
+    jmp short 07683h                          ; eb 2b
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 07682h                          ; eb 25
+    jmp short 07683h                          ; eb 25
     mov byte [bp-006h], 028h                  ; c6 46 fa 28
-    jmp short 07682h                          ; eb 1f
+    jmp short 07683h                          ; eb 1f
     mov byte [bp-006h], 03ch                  ; c6 46 fa 3c
-    jmp short 07682h                          ; eb 19
-    jmp near 07802h                           ; e9 96 01
+    jmp short 07683h                          ; eb 19
+    jmp near 07803h                           ; e9 96 01
     mov byte [bp-006h], 050h                  ; c6 46 fa 50
-    jmp short 07682h                          ; eb 10
+    jmp short 07683h                          ; eb 10
     mov byte [bp-006h], 064h                  ; c6 46 fa 64
-    jmp short 07682h                          ; eb 0a
+    jmp short 07683h                          ; eb 0a
     mov byte [bp-006h], 0c8h                  ; c6 46 fa c8
-    jmp short 07682h                          ; eb 04
+    jmp short 07683h                          ; eb 04
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jbe short 076b8h                          ; 76 30
+    jbe short 076b9h                          ; 76 30
     mov ax, 000f3h                            ; b8 f3 00
-    call 07353h                               ; e8 c5 fc
+    call 07354h                               ; e8 c5 fc
     test al, al                               ; 84 c0
-    jne short 076adh                          ; 75 1b
+    jne short 076aeh                          ; 75 1b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0738bh                               ; e8 f1 fc
+    call 0738ch                               ; e8 f1 fc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 07353h                               ; e8 b1 fc
+    call 07354h                               ; e8 b1 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0738bh                               ; e8 e1 fc
-    jmp near 07884h                           ; e9 d7 01
+    call 0738ch                               ; e8 e1 fc
+    jmp near 07885h                           ; e9 d7 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07884h                           ; e9 cc 01
+    jmp near 07885h                           ; e9 cc 01
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp near 07884h                           ; e9 c1 01
+    jmp near 07885h                           ; e9 c1 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 0772bh                          ; 73 62
+    jnc short 0772ch                          ; 73 62
     mov ax, 000e8h                            ; b8 e8 00
-    call 07353h                               ; e8 84 fc
+    call 07354h                               ; e8 84 fc
     test al, al                               ; 84 c0
-    jne short 07721h                          ; 75 4e
+    jne short 07722h                          ; 75 4e
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 b0 fc
+    call 0738ch                               ; e8 b0 fc
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 076f5h                           ; 74 14
+    je short 076f6h                           ; 74 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11249,16 +11259,16 @@ _int15_function_mouse:                       ; 0xf74f0 LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 84 a2
+    call 01976h                               ; e8 83 a2
     add sp, strict byte 00006h                ; 83 c4 06
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     xor ah, ah                                ; 30 e4
-    call 07353h                               ; e8 56 fc
+    call 07354h                               ; e8 56 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 86 fc
+    call 0738ch                               ; e8 86 fc
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 0775ah                           ; 74 4f
+    je short 0775bh                           ; 74 4f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11266,46 +11276,46 @@ _int15_function_mouse:                       ; 0xf74f0 LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 5a a2
+    call 01976h                               ; e8 59 a2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 0775ah                          ; eb 39
+    jmp short 0775bh                          ; eb 39
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 0775ah                          ; eb 2f
+    jmp short 0775bh                          ; eb 2f
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp short 0775ah                          ; eb 25
+    jmp short 0775bh                          ; eb 25
     mov ax, 000f2h                            ; b8 f2 00
-    call 07353h                               ; e8 18 fc
+    call 07354h                               ; e8 18 fc
     test al, al                               ; 84 c0
-    jne short 07752h                          ; 75 13
+    jne short 07753h                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 44 fc
+    call 0738ch                               ; e8 44 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0738bh                               ; e8 3c fc
-    jmp near 07625h                           ; e9 d3 fe
+    call 0738ch                               ; e8 3c fc
+    jmp near 07626h                           ; e9 d3 fe
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp near 07884h                           ; e9 27 01
+    jmp near 07885h                           ; e9 27 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 0776dh                          ; 76 09
+    jbe short 0776eh                          ; 76 09
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 0776bh                          ; 76 03
-    jmp near 0780ch                           ; e9 a1 00
-    jmp short 077d7h                          ; eb 6a
+    jbe short 0776ch                          ; 76 03
+    jmp near 0780dh                           ; e9 a1 00
+    jmp short 077d8h                          ; eb 6a
     mov ax, 000e9h                            ; b8 e9 00
-    call 07353h                               ; e8 e0 fb
+    call 07354h                               ; e8 e0 fb
     test al, al                               ; 84 c0
-    jne short 077e0h                          ; 75 69
+    jne short 077e1h                          ; 75 69
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 0c fc
+    call 0738ch                               ; e8 0c fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 0779bh                           ; 74 14
+    je short 0779ch                           ; 74 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11313,53 +11323,53 @@ _int15_function_mouse:                       ; 0xf74f0 LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 de a1
+    call 01976h                               ; e8 dd a1
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 07802h                          ; 75 63
+    jne short 07803h                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 e4 fb
+    call 0738ch                               ; e8 e4 fb
     test al, al                               ; 84 c0
-    jne short 07802h                          ; 75 57
+    jne short 07803h                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0738bh                               ; e8 d8 fb
+    call 0738ch                               ; e8 d8 fb
     test al, al                               ; 84 c0
-    jne short 07802h                          ; 75 4b
+    jne short 07803h                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0738bh                               ; e8 cc fb
+    call 0738ch                               ; e8 cc fb
     test al, al                               ; 84 c0
-    jne short 07802h                          ; 75 3f
+    jne short 07803h                          ; 75 3f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     mov byte [bp+00ch], al                    ; 88 46 0c
     mov al, byte [bp-004h]                    ; 8a 46 fc
     mov byte [bp+010h], al                    ; 88 46 10
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp short 0775ah                          ; eb 83
+    jmp short 0775bh                          ; eb 83
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 077e2h                          ; 75 07
+    jne short 077e3h                          ; 75 07
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 077e5h                          ; eb 05
-    jmp short 07802h                          ; eb 20
+    jmp short 077e6h                          ; eb 05
+    jmp short 07803h                          ; eb 20
     mov ax, 000e7h                            ; b8 e7 00
-    call 07353h                               ; e8 6b fb
+    call 07354h                               ; e8 6b fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 077feh                          ; 75 10
+    jne short 077ffh                          ; 75 10
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0738bh                               ; e8 95 fb
+    call 0738ch                               ; e8 95 fb
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 077feh                           ; 74 02
+    je short 077ffh                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je short 0786ch                           ; 74 6a
+    je short 0786dh                           ; 74 6a
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 0786ch                          ; eb 60
+    jmp short 0786dh                          ; eb 60
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11367,54 +11377,54 @@ _int15_function_mouse:                       ; 0xf74f0 LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 59 a1
+    call 01976h                               ; e8 58 a1
     add sp, strict byte 00006h                ; 83 c4 06
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp short 07884h                          ; eb 5a
+    jmp short 07885h                          ; eb 5a
     mov si, word [bp+00ch]                    ; 8b 76 0c
     mov bx, si                                ; 89 f3
     mov dx, strict word 00022h                ; ba 22 00
     mov ax, cx                                ; 89 c8
-    call 0167ch                               ; e8 45 9e
+    call 0167ch                               ; e8 44 9e
     mov bx, word [bp+014h]                    ; 8b 5e 14
     mov dx, strict word 00024h                ; ba 24 00
     mov ax, cx                                ; 89 c8
-    call 0167ch                               ; e8 3a 9e
+    call 0167ch                               ; e8 39 9e
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 08 9e
+    call 01652h                               ; e8 07 9e
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 0785eh                          ; 75 0e
+    jne short 0785fh                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 0785eh                          ; 75 08
+    jne short 0785fh                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 07860h                           ; 74 06
+    je short 07861h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 07860h                          ; eb 02
+    jmp short 07861h                          ; eb 02
     or AL, strict byte 080h                   ; 0c 80
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01660h                               ; e8 f4 9d
-    jmp short 07884h                          ; eb 16
+    call 01660h                               ; e8 f3 9d
+    jmp short 07885h                          ; eb 16
     mov ax, 00974h                            ; b8 74 09
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 fd a0
+    call 01976h                               ; e8 fc a0
     add sp, strict byte 00004h                ; 83 c4 04
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
     mov ax, strict word 00047h                ; b8 47 00
-    call 073e8h                               ; e8 5e fb
+    call 073e9h                               ; e8 5e fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf7890 LB 0xac
+_int17_function:                             ; 0xf7891 LB 0xac
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11424,25 +11434,25 @@ _int17_function:                             ; 0xf7890 LB 0xac
     sal dx, 1                                 ; d1 e2
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 ca 9d
+    call 0166eh                               ; e8 c9 9d
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc short 078bah                          ; 73 0c
+    jnc short 078bbh                          ; 73 0c
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc short 078bah                          ; 73 04
+    jnc short 078bbh                          ; 73 04
     test bx, bx                               ; 85 db
-    jnbe short 078bdh                         ; 77 03
-    jmp near 07932h                           ; e9 75 00
+    jnbe short 078beh                         ; 77 03
+    jmp near 07933h                           ; e9 75 00
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00078h                ; 83 c2 78
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 8a 9d
+    call 01652h                               ; e8 89 9d
     mov ch, al                                ; 88 c5
     xor cl, cl                                ; 30 c9
     cmp byte [bp+013h], 000h                  ; 80 7e 13 00
-    jne short 078feh                          ; 75 2c
+    jne short 078ffh                          ; 75 2c
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11462,13 +11472,13 @@ _int17_function:                             ; 0xf7890 LB 0xac
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 078feh                           ; 74 07
+    je short 078ffh                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 078feh                           ; 74 03
+    je short 078ffh                           ; 74 03
     dec cx                                    ; 49
-    jmp short 078edh                          ; eb ef
+    jmp short 078eeh                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 07919h                          ; 75 15
+    jne short 0791ah                          ; 75 15
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -11487,16 +11497,16 @@ _int17_function:                             ; 0xf7890 LB 0xac
     xor AL, strict byte 048h                  ; 34 48
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 0792ch                          ; 75 04
+    jne short 0792dh                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 07936h                          ; eb 04
+    jmp short 07937h                          ; eb 04
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-wait_:                                       ; 0xf793c LB 0xb2
+wait_:                                       ; 0xf793d LB 0xb2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11514,28 +11524,28 @@ wait_:                                       ; 0xf793c LB 0xb2
     xor cx, cx                                ; 31 c9
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 0168ah                               ; e8 2b 9d
+    call 0168ah                               ; e8 2a 9d
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov bx, dx                                ; 89 d3
     hlt                                       ; f4
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 0168ah                               ; e8 1d 9d
+    call 0168ah                               ; e8 1c 9d
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 0797dh                         ; 77 07
-    jne short 07984h                          ; 75 0c
+    jnbe short 0797eh                         ; 77 07
+    jne short 07985h                          ; 75 0c
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jbe short 07984h                          ; 76 07
+    jbe short 07985h                          ; 76 07
     sub ax, word [bp-00eh]                    ; 2b 46 f2
     sbb dx, bx                                ; 19 da
-    jmp short 0798fh                          ; eb 0b
+    jmp short 07990h                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 0798fh                           ; 72 07
-    jne short 07993h                          ; 75 09
+    jc short 07990h                           ; 72 07
+    jne short 07994h                          ; 75 09
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jnc short 07993h                          ; 73 04
+    jnc short 07994h                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -11543,13 +11553,13 @@ wait_:                                       ; 0xf793c LB 0xb2
     mov bx, di                                ; 89 fb
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je short 079a7h                           ; 74 05
+    je short 079a8h                           ; 74 05
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 079a9h                           ; e9 02 00
+    jmp near 079aah                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 079d3h                           ; 74 26
+    je short 079d4h                           ; 74 26
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     int 016h                                  ; cd 16
@@ -11562,17 +11572,17 @@ wait_:                                       ; 0xf793c LB 0xb2
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 b0 9f
+    call 01976h                               ; e8 af 9f
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 079d3h                           ; 74 04
+    je short 079d4h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 079e5h                          ; eb 12
+    jmp short 079e6h                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 07964h                         ; 7f 8d
-    jne short 079ddh                          ; 75 04
+    jnle short 07965h                         ; 7f 8d
+    jne short 079deh                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 07964h                         ; 77 87
+    jnbe short 07965h                         ; 77 87
     mov ax, word [bp-010h]                    ; 8b 46 f0
     push ax                                   ; 50
     popfw                                     ; 9d
@@ -11584,7 +11594,7 @@ wait_:                                       ; 0xf793c LB 0xb2
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf79ee LB 0x16
+read_logo_byte_:                             ; 0xf79ef LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11599,7 +11609,7 @@ read_logo_byte_:                             ; 0xf79ee LB 0x16
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf7a04 LB 0x14
+read_logo_word_:                             ; 0xf7a05 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11612,7 +11622,7 @@ read_logo_word_:                             ; 0xf7a04 LB 0x14
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
+print_detected_harddisks_:                   ; 0xf7a19 LB 0x15a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11622,33 +11632,33 @@ print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
     sub sp, strict byte 00006h                ; 83 ec 06
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 43 9c
+    call 0166eh                               ; e8 42 9c
     mov si, ax                                ; 89 c6
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     xor ch, ch                                ; 30 ed
     mov byte [bp-00ch], ch                    ; 88 6e f4
     mov dx, 00304h                            ; ba 04 03
-    call 01652h                               ; e8 16 9c
+    call 01652h                               ; e8 15 9c
     mov byte [bp-00ah], al                    ; 88 46 f6
     xor cl, cl                                ; 30 c9
     cmp cl, byte [bp-00ah]                    ; 3a 4e f6
-    jnc short 07aa4h                          ; 73 5e
+    jnc short 07aa5h                          ; 73 5e
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     add dx, 00305h                            ; 81 c2 05 03
     mov ax, si                                ; 89 f0
-    call 01652h                               ; e8 fd 9b
+    call 01652h                               ; e8 fc 9b
     mov bl, al                                ; 88 c3
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 07a86h                           ; 72 2b
+    jc short 07a87h                           ; 72 2b
     test ch, ch                               ; 84 ed
-    jne short 07a6fh                          ; 75 10
+    jne short 07a70h                          ; 75 10
     mov ax, 009a7h                            ; b8 a7 09
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 0c 9f
+    call 01976h                               ; e8 0b 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
     mov al, cl                                ; 88 c8
@@ -11659,43 +11669,43 @@ print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 f6 9e
+    call 01976h                               ; e8 f5 9e
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07b38h                           ; e9 b2 00
+    jmp near 07b39h                           ; e9 b2 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 07aa7h                           ; 72 1d
+    jc short 07aa8h                           ; 72 1d
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07aa2h                          ; 75 12
+    jne short 07aa3h                          ; 75 12
     mov ax, 009cfh                            ; b8 cf 09
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 db 9e
+    call 01976h                               ; e8 da 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07a6fh                          ; eb cb
-    jmp near 07b3dh                           ; e9 96 00
+    jmp short 07a70h                          ; eb cb
+    jmp near 07b3eh                           ; e9 96 00
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 07ac5h                          ; 73 1a
+    jnc short 07ac6h                          ; 73 1a
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 07ac5h                          ; 75 14
+    jne short 07ac6h                          ; 75 14
     mov ax, 009e4h                            ; b8 e4 09
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 ba 9e
+    call 01976h                               ; e8 b9 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07adeh                          ; eb 19
+    jmp short 07adfh                          ; eb 19
     cmp bl, 004h                              ; 80 fb 04
-    jc short 07adeh                           ; 72 14
+    jc short 07adfh                           ; 72 14
     test ch, ch                               ; 84 ed
-    jne short 07adeh                          ; 75 10
+    jne short 07adfh                          ; 75 10
     mov ax, 009f6h                            ; b8 f6 09
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 9d 9e
+    call 01976h                               ; e8 9c 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
     mov al, cl                                ; 88 c8
@@ -11706,10 +11716,10 @@ print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 87 9e
+    call 01976h                               ; e8 86 9e
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bl, 004h                              ; 80 fb 04
-    jc short 07afah                           ; 72 03
+    jc short 07afbh                           ; 72 03
     sub bl, 004h                              ; 80 eb 04
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
@@ -11718,14 +11728,14 @@ print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07b0ch                           ; 74 05
+    je short 07b0dh                           ; 74 05
     mov ax, 00a14h                            ; b8 14 0a
-    jmp short 07b0fh                          ; eb 03
+    jmp short 07b10h                          ; eb 03
     mov ax, 00a1fh                            ; b8 1f 0a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 5f 9e
+    call 01976h                               ; e8 5e 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
@@ -11733,34 +11743,34 @@ print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
     cwd                                       ; 99
     idiv bx                                   ; f7 fb
     test dx, dx                               ; 85 d2
-    je short 07b2dh                           ; 74 05
+    je short 07b2eh                           ; 74 05
     mov ax, 00a28h                            ; b8 28 0a
-    jmp short 07b30h                          ; eb 03
+    jmp short 07b31h                          ; eb 03
     mov ax, 00a2eh                            ; b8 2e 0a
     push ax                                   ; 50
     push bx                                   ; 53
-    call 01976h                               ; e8 41 9e
+    call 01976h                               ; e8 40 9e
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
-    jmp near 07a41h                           ; e9 04 ff
+    jmp near 07a42h                           ; e9 04 ff
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 07b5bh                          ; 75 18
+    jne short 07b5ch                          ; 75 18
     test ch, ch                               ; 84 ed
-    jne short 07b5bh                          ; 75 14
+    jne short 07b5ch                          ; 75 14
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07b5bh                          ; 75 0e
+    jne short 07b5ch                          ; 75 0e
     mov ax, 00a35h                            ; b8 35 0a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 1e 9e
+    call 01976h                               ; e8 1d 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov ax, 00a49h                            ; b8 49 0a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 10 9e
+    call 01976h                               ; e8 0f 9e
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop si                                    ; 5e
@@ -11769,7 +11779,7 @@ print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf7b72 LB 0x28
+get_boot_drive_:                             ; 0xf7b73 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11777,12 +11787,12 @@ get_boot_drive_:                             ; 0xf7b72 LB 0x28
     mov bl, al                                ; 88 c3
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 ec 9a
+    call 0166eh                               ; e8 eb 9a
     mov dx, 00304h                            ; ba 04 03
-    call 01652h                               ; e8 ca 9a
+    call 01652h                               ; e8 c9 9a
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 07b91h                           ; 72 02
+    jc short 07b92h                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11790,7 +11800,7 @@ get_boot_drive_:                             ; 0xf7b72 LB 0x28
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf7b9a LB 0x240
+show_logo_:                                  ; 0xf7b9b LB 0x240
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11801,7 +11811,7 @@ show_logo_:                                  ; 0xf7b9a LB 0x240
     sub sp, strict byte 0000eh                ; 83 ec 0e
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 c0 9a
+    call 0166eh                               ; e8 bf 9a
     mov si, ax                                ; 89 c6
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     xor cx, cx                                ; 31 c9
@@ -11813,9 +11823,9 @@ show_logo_:                                  ; 0xf7b9a LB 0x240
     out strict byte 040h, AL                  ; e6 40
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 07a04h                               ; e8 3b fe
+    call 07a05h                               ; e8 3b fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne short 07be0h                          ; 75 12
+    jne short 07be1h                          ; 75 12
     push SS                                   ; 16
     pop ES                                    ; 07
     lea di, [bp-018h]                         ; 8d 7e e8
@@ -11823,125 +11833,125 @@ show_logo_:                                  ; 0xf7b9a LB 0x240
     int 010h                                  ; cd 10
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    je short 07be3h                           ; 74 03
-    jmp near 07ca9h                           ; e9 c6 00
+    je short 07be4h                           ; 74 03
+    jmp near 07caah                           ; e9 c6 00
     mov al, cl                                ; 88 c8
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 079eeh                               ; e8 02 fe
+    call 079efh                               ; e8 02 fe
     mov bl, al                                ; 88 c3
     mov byte [bp-014h], al                    ; 88 46 ec
     mov al, cl                                ; 88 c8
     add AL, strict byte 005h                  ; 04 05
     xor ah, ah                                ; 30 e4
-    call 079eeh                               ; e8 f4 fd
+    call 079efh                               ; e8 f4 fd
     mov bh, al                                ; 88 c7
     mov byte [bp-012h], al                    ; 88 46 ee
     mov al, cl                                ; 88 c8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 07a04h                               ; e8 fc fd
+    call 07a05h                               ; e8 fc fd
     mov dx, ax                                ; 89 c2
     mov word [bp-016h], ax                    ; 89 46 ea
     mov al, cl                                ; 88 c8
     add AL, strict byte 006h                  ; 04 06
     xor ah, ah                                ; 30 e4
-    call 079eeh                               ; e8 d8 fd
+    call 079efh                               ; e8 d8 fd
     mov byte [bp-010h], al                    ; 88 46 f0
     test bl, bl                               ; 84 db
-    jne short 07c25h                          ; 75 08
+    jne short 07c26h                          ; 75 08
     test bh, bh                               ; 84 ff
-    jne short 07c25h                          ; 75 04
+    jne short 07c26h                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 07be0h                           ; 74 bb
+    je short 07be1h                           ; 74 bb
     mov bx, 00142h                            ; bb 42 01
     mov ax, 04f02h                            ; b8 02 4f
     int 010h                                  ; cd 10
     cmp byte [bp-014h], 000h                  ; 80 7e ec 00
-    je short 07c58h                           ; 74 25
+    je short 07c59h                           ; 74 25
     xor cx, cx                                ; 31 c9
-    jmp short 07c3dh                          ; eb 06
+    jmp short 07c3eh                          ; eb 06
     inc cx                                    ; 41
     cmp cx, strict byte 00010h                ; 83 f9 10
-    jnbe short 07c5fh                         ; 77 22
+    jnbe short 07c60h                         ; 77 22
     mov ax, cx                                ; 89 c8
     or ah, 002h                               ; 80 cc 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 0793ch                               ; e8 ee fc
+    call 0793dh                               ; e8 ee fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c37h                          ; 75 e5
+    jne short 07c38h                          ; 75 e5
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07c5fh                          ; eb 07
+    jmp short 07c60h                          ; eb 07
     mov ax, 00210h                            ; b8 10 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07c7ah                          ; 75 15
+    jne short 07c7bh                          ; 75 15
     mov CL, strict byte 004h                  ; b1 04
     mov ax, word [bp-016h]                    ; 8b 46 ea
     shr ax, CL                                ; d3 e8
     mov dx, strict word 00001h                ; ba 01 00
-    call 0793ch                               ; e8 ca fc
+    call 0793dh                               ; e8 ca fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c7ah                          ; 75 04
+    jne short 07c7bh                          ; 75 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    je short 07ca9h                           ; 74 29
+    je short 07caah                           ; 74 29
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07ca9h                          ; 75 23
+    jne short 07caah                          ; 75 23
     mov cx, strict word 00010h                ; b9 10 00
-    jmp short 07c90h                          ; eb 05
+    jmp short 07c91h                          ; eb 05
     dec cx                                    ; 49
     test cx, cx                               ; 85 c9
-    jbe short 07ca9h                          ; 76 19
+    jbe short 07caah                          ; 76 19
     mov ax, cx                                ; 89 c8
     or ah, 002h                               ; 80 cc 02
     mov dx, 003b8h                            ; ba b8 03
     out DX, ax                                ; ef
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00001h                ; b8 01 00
-    call 0793ch                               ; e8 9b fc
+    call 0793dh                               ; e8 9b fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c8bh                          ; 75 e6
+    jne short 07c8ch                          ; 75 e6
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     xor bx, bx                                ; 31 db
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 01660h                               ; e8 ad 99
+    call 01660h                               ; e8 ac 99
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    je short 07cd3h                           ; 74 14
+    je short 07cd4h                           ; 74 14
     cmp byte [bp-014h], 000h                  ; 80 7e ec 00
-    jne short 07d01h                          ; 75 3c
+    jne short 07d02h                          ; 75 3c
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jne short 07d01h                          ; 75 36
+    jne short 07d02h                          ; 75 36
     cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
-    je short 07cd6h                           ; 74 05
-    jmp short 07d01h                          ; eb 2e
-    jmp near 07dbdh                           ; e9 e7 00
+    je short 07cd7h                           ; 74 05
+    jmp short 07d02h                          ; eb 2e
+    jmp near 07dbeh                           ; e9 e7 00
     cmp byte [bp-010h], 002h                  ; 80 7e f0 02
-    jne short 07ceah                          ; 75 0e
+    jne short 07cebh                          ; 75 0e
     mov ax, 00a4bh                            ; b8 4b 0a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 8f 9c
+    call 01976h                               ; e8 8e 9c
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07d01h                          ; 75 11
+    jne short 07d02h                          ; 75 11
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 0793ch                               ; e8 43 fc
+    call 0793dh                               ; e8 43 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07d01h                          ; 75 04
+    jne short 07d02h                          ; 75 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 07cd3h                           ; 74 cc
+    je short 07cd4h                           ; 74 cc
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     mov ax, 00100h                            ; b8 00 01
     mov cx, 01000h                            ; b9 00 10
@@ -11962,59 +11972,59 @@ show_logo_:                                  ; 0xf7b9a LB 0x240
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 43 9c
+    call 01976h                               ; e8 42 9c
     add sp, strict byte 00004h                ; 83 c4 04
-    call 07a18h                               ; e8 df fc
+    call 07a19h                               ; e8 df fc
     mov ax, 00ab1h                            ; b8 b1 0a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 32 9c
+    call 01976h                               ; e8 31 9c
     add sp, strict byte 00004h                ; 83 c4 04
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0793ch                               ; e8 ec fb
+    call 0793dh                               ; e8 ec fb
     mov cl, al                                ; 88 c1
     test al, al                               ; 84 c0
-    je short 07d47h                           ; 74 f1
+    je short 07d48h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 07daah                           ; 74 50
+    je short 07dabh                           ; 74 50
     cmp cl, 002h                              ; 80 f9 02
-    jc short 07d83h                           ; 72 24
+    jc short 07d84h                           ; 72 24
     cmp cl, 009h                              ; 80 f9 09
-    jnbe short 07d83h                         ; 77 1f
+    jnbe short 07d84h                         ; 77 1f
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 07b72h                               ; e8 07 fe
+    call 07b73h                               ; e8 07 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 07d71h                          ; 75 02
-    jmp short 07d47h                          ; eb d6
+    jne short 07d72h                          ; 75 02
+    jmp short 07d48h                          ; eb d6
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, si                                ; 89 f0
-    call 01660h                               ; e8 e3 98
+    call 01660h                               ; e8 e2 98
     mov byte [bp-00eh], 002h                  ; c6 46 f2 02
-    jmp short 07daah                          ; eb 27
+    jmp short 07dabh                          ; eb 27
     cmp cl, 02eh                              ; 80 f9 2e
-    je short 07d98h                           ; 74 10
+    je short 07d99h                           ; 74 10
     cmp cl, 026h                              ; 80 f9 26
-    je short 07d9eh                           ; 74 11
+    je short 07d9fh                           ; 74 11
     cmp cl, 021h                              ; 80 f9 21
-    jne short 07da4h                          ; 75 12
+    jne short 07da5h                          ; 75 12
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07daah                          ; eb 12
+    jmp short 07dabh                          ; eb 12
     mov byte [bp-00eh], 003h                  ; c6 46 f2 03
-    jmp short 07daah                          ; eb 0c
+    jmp short 07dabh                          ; eb 0c
     mov byte [bp-00eh], 004h                  ; c6 46 f2 04
-    jmp short 07daah                          ; eb 06
+    jmp short 07dabh                          ; eb 06
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 07d47h                           ; 74 9d
+    je short 07d48h                           ; 74 9d
     mov bl, byte [bp-00eh]                    ; 8a 5e f2
     xor bh, bh                                ; 30 ff
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, si                                ; 89 f0
-    call 01660h                               ; e8 a9 98
+    call 01660h                               ; e8 a8 98
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
@@ -12027,7 +12037,7 @@ show_logo_:                                  ; 0xf7b9a LB 0x240
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0ede3h                               ; e8 15 70
+    call 0ede3h                               ; e8 14 70
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -12038,7 +12048,7 @@ show_logo_:                                  ; 0xf7b9a LB 0x240
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf7dda LB 0x72
+delay_boot_:                                 ; 0xf7ddb LB 0x72
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12048,7 +12058,7 @@ delay_boot_:                                 ; 0xf7dda LB 0x72
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
     test ax, ax                               ; 85 c0
-    je short 07e42h                           ; 74 5a
+    je short 07e43h                           ; 74 5a
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
     mov AL, strict byte 0d3h                  ; b0 d3
@@ -12060,27 +12070,27 @@ delay_boot_:                                 ; 0xf7dda LB 0x72
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 76 9b
+    call 01976h                               ; e8 75 9b
     add sp, strict byte 00006h                ; 83 c4 06
     test bx, bx                               ; 85 db
-    jbe short 07e21h                          ; 76 1a
+    jbe short 07e22h                          ; 76 1a
     push bx                                   ; 53
     mov ax, 00b19h                            ; b8 19 0b
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 63 9b
+    call 01976h                               ; e8 62 9b
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 0793ch                               ; e8 1e fb
+    call 0793dh                               ; e8 1e fb
     dec bx                                    ; 4b
-    jmp short 07e03h                          ; eb e2
+    jmp short 07e04h                          ; eb e2
     mov bx, 00a49h                            ; bb 49 0a
     push bx                                   ; 53
     mov bx, strict word 00002h                ; bb 02 00
     push bx                                   ; 53
-    call 01976h                               ; e8 4a 9b
+    call 01976h                               ; e8 49 9b
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -12091,7 +12101,7 @@ delay_boot_:                                 ; 0xf7dda LB 0x72
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0ede3h                               ; e8 a3 6f
+    call 0ede3h                               ; e8 a2 6f
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -12102,7 +12112,7 @@ delay_boot_:                                 ; 0xf7dda LB 0x72
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
+scsi_cmd_data_in_:                           ; 0xf7e4d LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12118,12 +12128,12 @@ scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07e62h                          ; 75 f7
+    jne short 07e63h                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07e76h                          ; 75 04
+    jne short 07e77h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07e78h                          ; eb 02
+    jmp short 07e79h                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
     mov ax, bx                                ; 89 d8
@@ -12131,7 +12141,7 @@ scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e82h                               ; e2 fa
+    loop 07e83h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, di                                 ; 09 f9
@@ -12149,29 +12159,29 @@ scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07ea7h                               ; e2 fa
+    loop 07ea8h                               ; e2 fa
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     mov al, byte [bp+004h]                    ; 8a 46 04
     xor ah, ah                                ; 30 e4
     cmp cx, ax                                ; 39 c1
-    jnc short 07ec9h                          ; 73 0e
+    jnc short 07ecah                          ; 73 0e
     les di, [bp-00ah]                         ; c4 7e f6
     add di, cx                                ; 01 cf
     mov al, byte [es:di]                      ; 26 8a 05
     mov dx, si                                ; 89 f2
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07eb2h                          ; eb e9
+    jmp short 07eb3h                          ; eb e9
     mov dx, si                                ; 89 f2
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07ec9h                          ; 75 f7
+    jne short 07ecah                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07ee4h                           ; 74 0e
+    je short 07ee5h                           ; 74 0e
     lea dx, [si+003h]                         ; 8d 54 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12179,12 +12189,12 @@ scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov di, strict word 00004h                ; bf 04 00
-    jmp short 07f16h                          ; eb 32
+    jmp short 07f17h                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07ef3h                          ; 75 06
+    jne short 07ef4h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07f0dh                          ; 76 1a
+    jbe short 07f0eh                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -12193,7 +12203,7 @@ scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07ee4h                          ; eb d7
+    jmp short 07ee5h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -12204,7 +12214,7 @@ scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
+scsi_cmd_data_out_:                          ; 0xf7f22 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12220,12 +12230,12 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07f37h                          ; 75 f7
+    jne short 07f38h                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07f4bh                          ; 75 04
+    jne short 07f4ch                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07f4dh                          ; eb 02
+    jmp short 07f4eh                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     mov ax, bx                                ; 89 d8
@@ -12233,7 +12243,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07f57h                               ; e2 fa
+    loop 07f58h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, si                                 ; 09 f1
@@ -12251,26 +12261,26 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07f7ch                               ; e2 fa
+    loop 07f7dh                               ; e2 fa
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     mov al, byte [bp+004h]                    ; 8a 46 04
     xor ah, ah                                ; 30 e4
     cmp cx, ax                                ; 39 c1
-    jnc short 07f9eh                          ; 73 0e
+    jnc short 07f9fh                          ; 73 0e
     les si, [bp-00ah]                         ; c4 76 f6
     add si, cx                                ; 01 ce
     mov al, byte [es:si]                      ; 26 8a 04
     mov dx, di                                ; 89 fa
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 07f87h                          ; eb e9
+    jmp short 07f88h                          ; eb e9
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07fadh                          ; 75 06
+    jne short 07faeh                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07fc8h                          ; 76 1b
+    jbe short 07fc9h                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12280,7 +12290,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07f9eh                          ; eb d6
+    jmp short 07f9fh                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12290,9 +12300,9 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07fd0h                          ; 75 f7
+    jne short 07fd1h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07febh                           ; 74 0e
+    je short 07fech                           ; 74 0e
     lea dx, [di+003h]                         ; 8d 55 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12300,14 +12310,14 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 07fedh                          ; eb 02
+    jmp short 07feeh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
- at scsi_read_sectors:                          ; 0xf7ff6 LB 0xe9
+ at scsi_read_sectors:                          ; 0xf7ff7 LB 0xe9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12319,7 +12329,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     sub AL, strict byte 008h                  ; 2c 08
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 004h                  ; 3c 04
-    jbe short 08026h                          ; 76 15
+    jbe short 08027h                          ; 76 15
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, 00b1eh                            ; b8 1e 0b
@@ -12328,7 +12338,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 53 99
+    call 01976h                               ; e8 52 99
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
@@ -12369,7 +12379,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     mov cx, strict word 00009h                ; b9 09 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 08091h                               ; e2 f8
+    loop 08092h                               ; e2 f8
     push word [bp-008h]                       ; ff 76 f8
     push word [bp-00ah]                       ; ff 76 f6
     push word [es:si+00ah]                    ; 26 ff 74 0a
@@ -12380,10 +12390,10 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07e4ch                               ; e8 95 fd
+    call 07e4dh                               ; e8 95 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 080d2h                          ; 75 15
+    jne short 080d3h                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov dx, word [bp-00ah]                    ; 8b 56 f6
@@ -12397,7 +12407,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at scsi_write_sectors:                         ; 0xf80df LB 0xe9
+ at scsi_write_sectors:                         ; 0xf80e0 LB 0xe9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12409,7 +12419,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     sub AL, strict byte 008h                  ; 2c 08
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 004h                  ; 3c 04
-    jbe short 0810fh                          ; 76 15
+    jbe short 08110h                          ; 76 15
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, 00b4fh                            ; b8 4f 0b
@@ -12418,7 +12428,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 6a 98
+    call 01976h                               ; e8 69 98
     add sp, strict byte 00008h                ; 83 c4 08
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, word [es:si+00eh]                 ; 26 8b 7c 0e
@@ -12459,7 +12469,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     mov cx, strict word 00009h                ; b9 09 00
     sal word [bp-00ah], 1                     ; d1 66 f6
     rcl word [bp-008h], 1                     ; d1 56 f8
-    loop 0817ah                               ; e2 f8
+    loop 0817bh                               ; e2 f8
     push word [bp-008h]                       ; ff 76 f8
     push word [bp-00ah]                       ; ff 76 f6
     push word [es:si+00ah]                    ; 26 ff 74 0a
@@ -12470,10 +12480,10 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07f21h                               ; e8 81 fd
+    call 07f22h                               ; e8 81 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 081bbh                          ; 75 15
+    jne short 081bch                          ; 75 15
     mov es, [bp+006h]                         ; 8e 46 06
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov dx, word [bp-00ah]                    ; 8b 56 f6
@@ -12487,7 +12497,7 @@ scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
+scsi_cmd_packet_:                            ; 0xf81c9 LB 0x170
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12499,25 +12509,25 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     mov word [bp-00ah], cx                    ; 89 4e f6
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 8a 94
+    call 0166eh                               ; e8 89 94
     mov si, 00122h                            ; be 22 01
     mov word [bp-00ch], ax                    ; 89 46 f4
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 08213h                          ; 75 23
+    jne short 08214h                          ; 75 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 38 97
+    call 01933h                               ; e8 37 97
     mov ax, 00b62h                            ; b8 62 0b
     push ax                                   ; 50
     mov ax, 00b72h                            ; b8 72 0b
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 6c 97
+    call 01976h                               ; e8 6b 97
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 0832dh                           ; e9 1a 01
+    jmp near 0832eh                           ; e9 1a 01
     sub di, strict byte 00008h                ; 83 ef 08
     sal di, 1                                 ; d1 e7
     sal di, 1                                 ; d1 e7
@@ -12532,7 +12542,7 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 08230h                          ; 75 f7
+    jne short 08231h                          ; 75 f7
     xor dx, bx                                ; 31 da
     mov ax, word [bp+006h]                    ; 8b 46 06
     add ax, word [bp+004h]                    ; 03 46 04
@@ -12548,7 +12558,7 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0825bh                               ; e2 fa
+    loop 0825ch                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     mov cl, byte [bp-006h]                    ; 8a 4e fa
     xor ch, ch                                ; 30 ed
@@ -12567,14 +12577,14 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 08283h                               ; e2 fa
+    loop 08284h                               ; e2 fa
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     xor cx, cx                                ; 31 c9
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cmp cx, ax                                ; 39 c1
-    jnc short 082a8h                          ; 73 11
+    jnc short 082a9h                          ; 73 11
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [bp-00eh]                    ; 8b 7e f2
     add di, cx                                ; 01 cf
@@ -12582,15 +12592,15 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 0828eh                          ; eb e6
+    jmp short 0828fh                          ; eb e6
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 082a8h                          ; 75 f7
+    jne short 082a9h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 082c3h                           ; 74 0e
+    je short 082c4h                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12598,14 +12608,14 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 0832dh                          ; eb 6a
+    jmp short 0832eh                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 082d2h                           ; 74 08
+    je short 082d3h                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 082cfh                               ; e2 fd
+    loop 082d0h                               ; e2 fd
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov word [es:si+01ah], ax                 ; 26 89 44 1a
@@ -12613,9 +12623,9 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     mov word [es:si+01ch], ax                 ; 26 89 44 1c
     lea ax, [bx+001h]                         ; 8d 47 01
     cmp word [bp+008h], strict byte 00000h    ; 83 7e 08 00
-    jne short 082f3h                          ; 75 07
+    jne short 082f4h                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 08310h                          ; 76 1d
+    jbe short 08311h                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+00ch]                         ; c4 7e 0c
@@ -12625,17 +12635,17 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 082e3h                          ; eb d3
+    jmp short 082e4h                          ; eb d3
     mov dx, ax                                ; 89 c2
     mov cx, word [bp+006h]                    ; 8b 4e 06
     les di, [bp+00ch]                         ; c4 7e 0c
     rep insb                                  ; f3 6c
     mov es, [bp-00ch]                         ; 8e 46 f4
     cmp word [es:si+020h], strict byte 00000h ; 26 83 7c 20 00
-    je short 0832bh                           ; 74 07
+    je short 0832ch                           ; 74 07
     mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     in AL, DX                                 ; ec
-    loop 08328h                               ; e2 fd
+    loop 08329h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12643,7 +12653,7 @@ scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
+scsi_enumerate_attached_devices_:            ; 0xf8339 LB 0x4cb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12655,19 +12665,19 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 20 93
+    call 0166eh                               ; e8 1f 93
     mov di, 00122h                            ; bf 22 01
     mov word [bp-016h], ax                    ; 89 46 ea
     mov word [bp-014h], strict word 00000h    ; c7 46 ec 00 00
-    jmp near 08776h                           ; e9 1a 04
+    jmp near 08777h                           ; e9 1a 04
     cmp AL, strict byte 004h                  ; 3c 04
-    jc short 08363h                           ; 72 03
-    jmp near 087f9h                           ; e9 96 04
+    jc short 08364h                           ; 72 03
+    jmp near 087fah                           ; e9 96 04
     mov cx, strict word 00010h                ; b9 10 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-048h]                         ; 8d 46 b8
-    call 0a0c0h                               ; e8 50 1d
+    call 0a0c0h                               ; e8 4f 1d
     mov byte [bp-048h], 09eh                  ; c6 46 b8 9e
     mov byte [bp-047h], 010h                  ; c6 46 b9 10
     mov byte [bp-03bh], 020h                  ; c6 46 c5 20
@@ -12685,16 +12695,16 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov cx, ss                                ; 8c d1
     lea bx, [bp-048h]                         ; 8d 5e b8
     mov ax, word [bp-0024ah]                  ; 8b 86 b6 fd
-    call 07e4ch                               ; e8 ae fa
+    call 07e4dh                               ; e8 ae fa
     test al, al                               ; 84 c0
-    je short 083b4h                           ; 74 12
+    je short 083b5h                           ; 74 12
     mov ax, 00b92h                            ; b8 92 0b
     push ax                                   ; 50
     mov ax, 00bcbh                            ; b8 cb 0b
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 c5 95
+    call 01976h                               ; e8 c4 95
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp-00242h]                  ; 8b 86 be fd
     mov bx, word [bp-00244h]                  ; 8b 9e bc fd
@@ -12726,7 +12736,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08402h                               ; e2 fa
+    loop 08403h                               ; e2 fa
     or bx, ax                                 ; 09 c3
     or dx, si                                 ; 09 f2
     mov al, byte [bp-0023dh]                  ; 8a 86 c3 fd
@@ -12734,13 +12744,13 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     or bx, ax                                 ; 09 c3
     mov word [bp-01ch], bx                    ; 89 5e e4
     test dx, dx                               ; 85 d2
-    jne short 08421h                          ; 75 06
+    jne short 08422h                          ; 75 06
     cmp bx, 00200h                            ; 81 fb 00 02
-    je short 08444h                           ; 74 23
+    je short 08445h                           ; 74 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 07 95
+    call 01933h                               ; e8 06 95
     push dx                                   ; 52
     push word [bp-01ch]                       ; ff 76 e4
     push word [bp-014h]                       ; ff 76 ec
@@ -12748,43 +12758,43 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 38 95
+    call 01976h                               ; e8 37 95
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 0876ah                           ; e9 26 03
+    jmp near 0876bh                           ; e9 26 03
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08457h                           ; 72 0c
-    jbe short 0845fh                          ; 76 12
+    jc short 08458h                           ; 72 0c
+    jbe short 08460h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08467h                           ; 74 16
+    je short 08468h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 08463h                           ; 74 0e
-    jmp short 084aeh                          ; eb 57
+    je short 08464h                           ; 74 0e
+    jmp short 084afh                          ; eb 57
     test al, al                               ; 84 c0
-    jne short 084aeh                          ; 75 53
+    jne short 084afh                          ; 75 53
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 08469h                          ; eb 0a
+    jmp short 0846ah                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 08469h                          ; eb 06
+    jmp short 0846ah                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 08469h                          ; eb 02
+    jmp short 0846ah                          ; eb 02
     mov BL, strict byte 0a8h                  ; b3 a8
     mov cl, bl                                ; 88 d9
     add cl, 007h                              ; 80 c1 07
     xor ch, ch                                ; 30 ed
     mov ax, cx                                ; 89 c8
-    call 016aeh                               ; e8 39 92
+    call 016aeh                               ; e8 38 92
     test al, al                               ; 84 c0
-    je short 084aeh                           ; 74 35
+    je short 084afh                           ; 74 35
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 2c 92
+    call 016aeh                               ; e8 2b 92
     mov dh, al                                ; 88 c6
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 23 92
+    call 016aeh                               ; e8 22 92
     mov ah, dh                                ; 88 f4
     cwd                                       ; 99
     mov si, ax                                ; 89 c6
@@ -12792,42 +12802,42 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 12 92
+    call 016aeh                               ; e8 11 92
     xor ah, ah                                ; 30 e4
     mov word [bp-028h], ax                    ; 89 46 d8
     mov ax, cx                                ; 89 c8
-    call 016aeh                               ; e8 08 92
+    call 016aeh                               ; e8 07 92
     xor ah, ah                                ; 30 e4
     mov word [bp-01ah], ax                    ; 89 46 e6
-    jmp near 0859bh                           ; e9 ed 00
+    jmp near 0859ch                           ; e9 ed 00
     mov ax, word [bp-020h]                    ; 8b 46 e0
     mov bx, word [bp-022h]                    ; 8b 5e de
     mov cx, word [bp-012h]                    ; 8b 4e ee
     mov dx, word [bp-024h]                    ; 8b 56 dc
     mov si, strict word 0000ch                ; be 0c 00
-    call 0a0a0h                               ; e8 e0 1b
+    call 0a0a0h                               ; e8 df 1b
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov word [bp-02ch], bx                    ; 89 5e d4
     mov word [bp-010h], cx                    ; 89 4e f0
     mov word [bp-018h], dx                    ; 89 56 e8
     mov ax, word [bp-020h]                    ; 8b 46 e0
     test ax, ax                               ; 85 c0
-    jnbe short 084e8h                         ; 77 15
-    je short 084d8h                           ; 74 03
-    jmp near 0855bh                           ; e9 83 00
+    jnbe short 084e9h                         ; 77 15
+    je short 084d9h                           ; 74 03
+    jmp near 0855ch                           ; e9 83 00
     cmp word [bp-022h], strict byte 00000h    ; 83 7e de 00
-    jnbe short 084e8h                         ; 77 0a
-    jne short 084d5h                          ; 75 f5
+    jnbe short 084e9h                         ; 77 0a
+    jne short 084d6h                          ; 75 f5
     cmp word [bp-012h], strict byte 00040h    ; 83 7e ee 40
-    jnbe short 084e8h                         ; 77 02
-    jne short 0855bh                          ; 75 73
+    jnbe short 084e9h                         ; 77 02
+    jne short 0855ch                          ; 75 73
     mov word [bp-028h], 000ffh                ; c7 46 d8 ff 00
     mov word [bp-01ah], strict word 0003fh    ; c7 46 e6 3f 00
     mov bx, word [bp-022h]                    ; 8b 5e de
     mov cx, word [bp-012h]                    ; 8b 4e ee
     mov dx, word [bp-024h]                    ; 8b 56 dc
     mov si, strict word 00006h                ; be 06 00
-    call 0a0a0h                               ; e8 9f 1b
+    call 0a0a0h                               ; e8 9e 1b
     mov si, word [bp-018h]                    ; 8b 76 e8
     add si, dx                                ; 01 d6
     mov word [bp-01eh], si                    ; 89 76 e2
@@ -12845,7 +12855,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov cx, word [bp-036h]                    ; 8b 4e ca
     mov dx, si                                ; 89 f2
     mov si, strict word 00008h                ; be 08 00
-    call 0a0a0h                               ; e8 6f 1b
+    call 0a0a0h                               ; e8 6e 1b
     mov word [bp-02eh], bx                    ; 89 5e d2
     mov word [bp-030h], cx                    ; 89 4e d0
     mov word [bp-032h], dx                    ; 89 56 ce
@@ -12854,32 +12864,32 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov cx, word [bp-036h]                    ; 8b 4e ca
     mov dx, word [bp-01eh]                    ; 8b 56 e2
     mov si, strict word 00010h                ; be 10 00
-    call 0a0a0h                               ; e8 54 1b
+    call 0a0a0h                               ; e8 53 1b
     mov si, word [bp-032h]                    ; 8b 76 ce
     add si, dx                                ; 01 d6
     adc cx, word [bp-030h]                    ; 13 4e d0
     mov ax, word [bp-02eh]                    ; 8b 46 d2
     adc ax, bx                                ; 11 d8
-    jmp short 08598h                          ; eb 3d
+    jmp short 08599h                          ; eb 3d
     test ax, ax                               ; 85 c0
-    jnbe short 08571h                         ; 77 12
-    jne short 0857dh                          ; 75 1c
+    jnbe short 08572h                         ; 77 12
+    jne short 0857eh                          ; 75 1c
     cmp word [bp-022h], strict byte 00000h    ; 83 7e de 00
-    jnbe short 08571h                         ; 77 0a
-    jne short 0857dh                          ; 75 14
+    jnbe short 08572h                         ; 77 0a
+    jne short 0857eh                          ; 75 14
     cmp word [bp-012h], strict byte 00020h    ; 83 7e ee 20
-    jnbe short 08571h                         ; 77 02
-    jne short 0857dh                          ; 75 0c
+    jnbe short 08572h                         ; 77 02
+    jne short 0857eh                          ; 75 0c
     mov word [bp-028h], 00080h                ; c7 46 d8 80 00
     mov word [bp-01ah], strict word 00020h    ; c7 46 e6 20 00
-    jmp short 08596h                          ; eb 19
+    jmp short 08597h                          ; eb 19
     mov word [bp-028h], strict word 00040h    ; c7 46 d8 40 00
     mov word [bp-01ah], strict word 00020h    ; c7 46 e6 20 00
     mov bx, word [bp-022h]                    ; 8b 5e de
     mov cx, word [bp-012h]                    ; 8b 4e ee
     mov dx, word [bp-024h]                    ; 8b 56 dc
     mov si, strict word 0000bh                ; be 0b 00
-    call 0a0a0h                               ; e8 0a 1b
+    call 0a0a0h                               ; e8 09 1b
     mov si, dx                                ; 89 d6
     mov word [bp-026h], cx                    ; 89 4e da
     mov al, byte [bp-00ch]                    ; 8a 46 f4
@@ -12916,18 +12926,18 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov word [es:bx+034h], ax                 ; 26 89 47 34
     cmp word [bp-026h], strict byte 00000h    ; 83 7e da 00
-    jne short 08612h                          ; 75 06
+    jne short 08613h                          ; 75 06
     cmp si, 00400h                            ; 81 fe 00 04
-    jbe short 08620h                          ; 76 0e
+    jbe short 08621h                          ; 76 0e
     mov word [es:bx+02ch], 00400h             ; 26 c7 47 2c 00 04
     mov word [es:bx+032h], 00400h             ; 26 c7 47 32 00 04
-    jmp short 08628h                          ; eb 08
+    jmp short 08629h                          ; eb 08
     mov word [es:bx+02ch], si                 ; 26 89 77 2c
     mov word [es:bx+032h], si                 ; 26 89 77 32
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 00 93
+    call 01933h                               ; e8 ff 92
     push word [bp-020h]                       ; ff 76 e0
     push word [bp-022h]                       ; ff 76 de
     push word [bp-012h]                       ; ff 76 ee
@@ -12944,7 +12954,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 19 93
+    call 01976h                               ; e8 18 93
     add sp, strict byte 00018h                ; 83 c4 18
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
@@ -12973,20 +12983,20 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov byte [es:di+001e2h], al               ; 26 88 85 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 9f 8f
+    call 01652h                               ; e8 9e 8f
     mov bl, al                                ; 88 c3
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 9e 8f
+    call 01660h                               ; e8 9d 8f
     inc byte [bp-00ch]                        ; fe 46 f4
-    jmp near 0875fh                           ; e9 97 00
+    jmp near 08760h                           ; e9 97 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 60 92
+    call 01933h                               ; e8 5f 92
     push word [bp-014h]                       ; ff 76 ec
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
@@ -12995,15 +13005,15 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 8f 92
+    call 01976h                               ; e8 8e 92
     add sp, strict byte 00008h                ; 83 c4 08
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     add AL, strict byte 008h                  ; 04 08
     mov byte [bp-00eh], al                    ; 88 46 f2
     test byte [bp-00247h], 080h               ; f6 86 b9 fd 80
-    je short 086feh                           ; 74 05
+    je short 086ffh                           ; 74 05
     mov cx, strict word 00001h                ; b9 01 00
-    jmp short 08700h                          ; eb 02
+    jmp short 08701h                          ; eb 02
     xor cx, cx                                ; 31 c9
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
@@ -13041,8 +13051,8 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov byte [es:di+0022ch], al               ; 26 88 85 2c 02
     inc word [bp-014h]                        ; ff 46 ec
     cmp word [bp-014h], strict byte 00010h    ; 83 7e ec 10
-    jl short 08776h                           ; 7c 03
-    jmp near 087f9h                           ; e9 83 00
+    jl short 08777h                           ; 7c 03
+    jmp near 087fah                           ; e9 83 00
     mov byte [bp-048h], 012h                  ; c6 46 b8 12
     xor al, al                                ; 30 c0
     mov byte [bp-047h], al                    ; 88 46 b9
@@ -13064,34 +13074,34 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     mov cx, ss                                ; 8c d1
     lea bx, [bp-048h]                         ; 8d 5e b8
     mov ax, word [bp-0024ah]                  ; 8b 86 b6 fd
-    call 07e4ch                               ; e8 9e f6
+    call 07e4dh                               ; e8 9e f6
     test al, al                               ; 84 c0
-    je short 087c4h                           ; 74 12
+    je short 087c5h                           ; 74 12
     mov ax, 00b92h                            ; b8 92 0b
     push ax                                   ; 50
     mov ax, 00bb2h                            ; b8 b2 0b
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 b5 91
+    call 01976h                               ; e8 b4 91
     add sp, strict byte 00006h                ; 83 c4 06
     mov es, [bp-016h]                         ; 8e 46 ea
     mov al, byte [es:di+0022ch]               ; 26 8a 85 2c 02
     mov byte [bp-00ch], al                    ; 88 46 f4
     test byte [bp-00248h], 0e0h               ; f6 86 b8 fd e0
-    jne short 087e0h                          ; 75 0a
+    jne short 087e1h                          ; 75 0a
     test byte [bp-00248h], 01fh               ; f6 86 b8 fd 1f
-    jne short 087e0h                          ; 75 03
-    jmp near 0835ch                           ; e9 7c fb
+    jne short 087e1h                          ; 75 03
+    jmp near 0835dh                           ; e9 7c fb
     test byte [bp-00248h], 0e0h               ; f6 86 b8 fd e0
-    je short 087eah                           ; 74 03
-    jmp near 0875fh                           ; e9 75 ff
+    je short 087ebh                           ; 74 03
+    jmp near 08760h                           ; e9 75 ff
     mov al, byte [bp-00248h]                  ; 8a 86 b8 fd
     and AL, strict byte 01fh                  ; 24 1f
     cmp AL, strict byte 005h                  ; 3c 05
-    jne short 087f7h                          ; 75 03
-    jmp near 086c8h                           ; e9 d1 fe
-    jmp short 087e7h                          ; eb ee
+    jne short 087f8h                          ; 75 03
+    jmp near 086c9h                           ; e9 d1 fe
+    jmp short 087e8h                          ; eb ee
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -13100,12 +13110,12 @@ scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf8803 LB 0x66
+_scsi_init:                                  ; 0xf8804 LB 0x66
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 5f 8e
+    call 0166eh                               ; e8 5e 8e
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
     mov byte [es:bx+0022ch], 000h             ; 26 c6 87 2c 02 00
@@ -13116,12 +13126,12 @@ _scsi_init:                                  ; 0xf8803 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08833h                          ; 75 0c
+    jne short 08834h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 08338h                               ; e8 05 fb
+    call 08339h                               ; e8 05 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
     out DX, AL                                ; ee
@@ -13129,12 +13139,12 @@ _scsi_init:                                  ; 0xf8803 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 0884ch                          ; 75 0c
+    jne short 0884dh                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 08338h                               ; e8 ec fa
+    call 08339h                               ; e8 ec fa
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
     out DX, AL                                ; ee
@@ -13142,16 +13152,16 @@ _scsi_init:                                  ; 0xf8803 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08865h                          ; 75 0c
+    jne short 08866h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 08338h                               ; e8 d3 fa
+    call 08339h                               ; e8 d3 fa
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf8869 LB 0x1c
+ahci_ctrl_extract_bits_:                     ; 0xf886a LB 0x1c
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13160,14 +13170,14 @@ ahci_ctrl_extract_bits_:                     ; 0xf8869 LB 0x1c
     and dx, cx                                ; 21 ca
     mov cl, byte [bp+006h]                    ; 8a 4e 06
     xor ch, ch                                ; 30 ed
-    jcxz 08880h                               ; e3 06
+    jcxz 08881h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0887ah                               ; e2 fa
+    loop 0887bh                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf8885 LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf8886 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -13178,7 +13188,7 @@ ahci_addr_to_phys_:                          ; 0xf8885 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08893h                               ; e2 fa
+    loop 08894h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -13186,7 +13196,7 @@ ahci_addr_to_phys_:                          ; 0xf8885 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf88a3 LB 0x159
+ahci_port_cmd_sync_:                         ; 0xf88a4 LB 0x159
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13201,8 +13211,8 @@ ahci_port_cmd_sync_:                         ; 0xf88a3 LB 0x159
     mov byte [bp-008h], al                    ; 88 46 f8
     mov bx, word [es:si+00260h]               ; 26 8b 9c 60 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 088c6h                          ; 75 03
-    jmp near 089f4h                           ; e9 2e 01
+    jne short 088c7h                          ; 75 03
+    jmp near 089f5h                           ; e9 2e 01
     mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
     xor ah, ah                                ; 30 e4
     xor di, di                                ; 31 ff
@@ -13215,7 +13225,7 @@ ahci_port_cmd_sync_:                         ; 0xf88a3 LB 0x159
     mov word [es:si+006h], strict word 00000h ; 26 c7 44 06 00 00
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov dx, cx                                ; 89 ca
-    call 08885h                               ; e8 92 ff
+    call 08886h                               ; e8 92 ff
     mov es, cx                                ; 8e c1
     mov word [es:si+008h], ax                 ; 26 89 44 08
     mov word [es:si+00ah], dx                 ; 26 89 54 0a
@@ -13283,14 +13293,14 @@ ahci_port_cmd_sync_:                         ; 0xf88a3 LB 0x159
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dh, 040h                             ; f6 c6 40
-    jne short 08986h                          ; 75 04
+    jne short 08987h                          ; 75 04
     test AL, strict byte 001h                 ; a8 01
-    je short 0898ah                           ; 74 04
+    je short 0898bh                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0898ch                          ; eb 02
+    jmp short 0898dh                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 08958h                           ; 74 c8
+    je short 08959h                           ; 74 c8
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -13347,7 +13357,7 @@ ahci_port_cmd_sync_:                         ; 0xf88a3 LB 0x159
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf89fc LB 0x262
+ahci_cmd_data_:                              ; 0xf89fd LB 0x262
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13372,7 +13382,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     xor bx, bx                                ; 31 db
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0a0c0h                               ; e8 86 16
+    call 0a0c0h                               ; e8 85 16
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+00080h], 08027h           ; 26 c7 85 80 00 27 80
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -13390,7 +13400,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00008h                ; be 08 00
-    call 0a0a0h                               ; e8 22 16
+    call 0a0a0h                               ; e8 21 16
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00085h], dl               ; 26 88 95 85 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13401,7 +13411,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00010h                ; be 10 00
-    call 0a0a0h                               ; e8 fc 15
+    call 0a0a0h                               ; e8 fb 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00086h], dl               ; 26 88 95 86 00
     mov byte [es:di+00087h], 040h             ; 26 c6 85 87 00 40
@@ -13413,7 +13423,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00018h                ; be 18 00
-    call 0a0a0h                               ; e8 d0 15
+    call 0a0a0h                               ; e8 cf 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00088h], dl               ; 26 88 95 88 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13424,7 +13434,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00020h                ; be 20 00
-    call 0a0a0h                               ; e8 aa 15
+    call 0a0a0h                               ; e8 a9 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+00089h], dl               ; 26 88 95 89 00
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13435,7 +13445,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     mov cx, word [es:si+002h]                 ; 26 8b 4c 02
     mov dx, word [es:si]                      ; 26 8b 14
     mov si, strict word 00028h                ; be 28 00
-    call 0a0a0h                               ; e8 84 15
+    call 0a0a0h                               ; e8 83 15
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+0008ah], dl               ; 26 88 95 8a 00
     mov byte [es:di+0008bh], 000h             ; 26 c6 85 8b 00 00
@@ -13448,7 +13458,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-012h]                    ; 8b 5e ee
     xor cx, cx                                ; 31 c9
-    call 0a050h                               ; e8 02 15
+    call 0a050h                               ; e8 01 15
     push dx                                   ; 52
     push ax                                   ; 50
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13458,7 +13468,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     mov ax, 0026ah                            ; b8 6a 02
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09fa5h                               ; e8 3b 14
+    call 09fa6h                               ; e8 3b 14
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov dx, word [es:di+0027eh]               ; 26 8b 95 7e 02
     add dx, strict byte 0ffffh                ; 83 c2 ff
@@ -13482,7 +13492,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     mov bx, si                                ; 89 f3
     mov ax, word [es:bx+020h]                 ; 26 8b 47 20
     test ax, ax                               ; 85 c0
-    je short 08bfah                           ; 74 39
+    je short 08bfbh                           ; 74 39
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bl, byte [es:di+00263h]               ; 26 8a 9d 63 02
@@ -13500,35 +13510,35 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     inc byte [es:di+00263h]                   ; 26 fe 85 63 02
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp AL, strict byte 035h                  ; 3c 35
-    jne short 08c07h                          ; 75 06
+    jne short 08c08h                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 08c1eh                          ; eb 17
+    jmp short 08c1fh                          ; eb 17
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 08c1ah                          ; 75 0f
+    jne short 08c1bh                          ; 75 0f
     or byte [bp-008h], 020h                   ; 80 4e f8 20
     les bx, [bp-00eh]                         ; c4 5e f2
     or byte [es:bx+00083h], 001h              ; 26 80 8f 83 00 01
-    jmp short 08c1eh                          ; eb 04
+    jmp short 08c1fh                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     or byte [bp-008h], 005h                   ; 80 4e f8 05
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, word [bp-00ch]                    ; 8b 56 f4
-    call 088a3h                               ; e8 73 fc
+    call 088a4h                               ; e8 73 fc
     mov cx, word [bp-00ch]                    ; 8b 4e f4
     mov bx, word [bp-00eh]                    ; 8b 5e f2
     add bx, 00240h                            ; 81 c3 40 02
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     add ax, 0026ah                            ; 05 6a 02
     mov dx, cx                                ; 89 ca
-    call 0a01ch                               ; e8 d7 13
+    call 0a01dh                               ; e8 d7 13
     mov es, cx                                ; 8e c1
     mov al, byte [es:bx+003h]                 ; 26 8a 47 03
     test al, al                               ; 84 c0
-    je short 08c54h                           ; 74 05
+    je short 08c55h                           ; 74 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08c56h                          ; eb 02
+    jmp short 08c57h                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -13536,7 +13546,7 @@ ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf8c5e LB 0x183
+ahci_port_deinit_current_:                   ; 0xf8c5f LB 0x183
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -13551,7 +13561,7 @@ ahci_port_deinit_current_:                   ; 0xf8c5e LB 0x183
     mov al, byte [es:di+00262h]               ; 26 8a 85 62 02
     mov byte [bp-00ah], al                    ; 88 46 f6
     cmp AL, strict byte 0ffh                  ; 3c ff
-    je short 08ce1h                           ; 74 61
+    je short 08ce2h                           ; 74 61
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
     sal ax, CL                                ; d3 e0
@@ -13597,28 +13607,28 @@ ahci_port_deinit_current_:                   ; 0xf8c5e LB 0x183
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08ce4h                           ; 74 07
+    je short 08ce5h                           ; 74 07
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08ce6h                          ; eb 05
-    jmp near 08dd8h                           ; e9 f4 00
+    jmp short 08ce7h                          ; eb 05
+    jmp near 08dd9h                           ; e9 f4 00
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08cb3h                           ; 74 c9
+    je short 08cb4h                           ; 74 c9
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00eh]                    ; 8b 56 f2
-    call 0a0c0h                               ; e8 c9 13
+    call 0a0c0h                               ; e8 c8 13
     lea ax, [di+00080h]                       ; 8d 85 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00eh]                    ; 8b 56 f2
-    call 0a0c0h                               ; e8 ba 13
+    call 0a0c0h                               ; e8 b9 13
     lea ax, [di+00200h]                       ; 8d 85 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00eh]                    ; 8b 56 f2
-    call 0a0c0h                               ; e8 ab 13
+    call 0a0c0h                               ; e8 aa 13
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -13724,7 +13734,7 @@ ahci_port_deinit_current_:                   ; 0xf8c5e LB 0x183
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8de1 LB 0x250
+ahci_port_init_:                             ; 0xf8de2 LB 0x250
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13734,7 +13744,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     mov si, ax                                ; 89 c6
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 08c5eh                               ; e8 69 fe
+    call 08c5fh                               ; e8 69 fe
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -13785,28 +13795,28 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08e68h                           ; 74 04
+    je short 08e69h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08e6ah                          ; eb 02
+    jmp short 08e6bh                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08e32h                           ; 74 c4
+    je short 08e33h                           ; 74 c4
     mov cx, strict word 00020h                ; b9 20 00
     xor bx, bx                                ; 31 db
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0a0c0h                               ; e8 45 12
+    call 0a0c0h                               ; e8 44 12
     lea ax, [si+00080h]                       ; 8d 84 80 00
     mov cx, strict word 00040h                ; b9 40 00
     xor bx, bx                                ; 31 db
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0a0c0h                               ; e8 36 12
+    call 0a0c0h                               ; e8 35 12
     lea di, [si+00200h]                       ; 8d bc 00 02
     mov cx, strict word 00060h                ; b9 60 00
     xor bx, bx                                ; 31 db
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0a0c0h                               ; e8 25 12
+    call 0a0c0h                               ; e8 24 12
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     mov CL, strict byte 007h                  ; b1 07
@@ -13825,7 +13835,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     out DX, eax                               ; 66 ef
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08885h                               ; e8 bb f9
+    call 08886h                               ; e8 bb f9
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     add di, strict byte 00004h                ; 83 c7 04
@@ -13870,7 +13880,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     out DX, eax                               ; 66 ef
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08885h                               ; e8 4f f9
+    call 08886h                               ; e8 4f f9
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [es:si+00260h]               ; 26 8b bc 60 02
     add di, strict byte 00004h                ; 83 c7 04
@@ -13975,7 +13985,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
- at ahci_read_sectors:                          ; 0xf9031 LB 0xaa
+ at ahci_read_sectors:                          ; 0xf9032 LB 0xaa
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13986,7 +13996,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     mov di, ax                                ; 89 c7
     sub di, strict byte 0000ch                ; 83 ef 0c
     cmp di, strict byte 00004h                ; 83 ff 04
-    jbe short 0905ch                          ; 76 13
+    jbe short 0905dh                          ; 76 13
     push di                                   ; 57
     mov ax, 00c62h                            ; b8 62 0c
     push ax                                   ; 50
@@ -13994,7 +14004,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 1d 89
+    call 01976h                               ; e8 1c 89
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     les si, [bp+004h]                         ; c4 76 04
@@ -14008,11 +14018,11 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08de1h                               ; e8 5a fd
+    call 08de2h                               ; e8 5a fd
     mov bx, strict word 00025h                ; bb 25 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp+006h]                    ; 8b 56 06
-    call 089fch                               ; e8 6a f9
+    call 089fdh                               ; e8 6a f9
     mov bx, ax                                ; 89 c3
     mov es, [bp+006h]                         ; 8e 46 06
     mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
@@ -14042,7 +14052,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at ahci_write_sectors:                         ; 0xf90db LB 0x88
+ at ahci_write_sectors:                         ; 0xf90dc LB 0x88
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14054,7 +14064,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 0000ch                ; 83 eb 0c
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 09109h                          ; 76 13
+    jbe short 0910ah                          ; 76 13
     push bx                                   ; 53
     mov ax, 00c93h                            ; b8 93 0c
     push ax                                   ; 50
@@ -14062,7 +14072,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 70 88
+    call 01976h                               ; e8 6f 88
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
     mov es, cx                                ; 8e c1
@@ -14076,11 +14086,11 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08de1h                               ; e8 af fc
+    call 08de2h                               ; e8 af fc
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 089fch                               ; e8 c0 f8
+    call 089fdh                               ; e8 c0 f8
     mov dx, ax                                ; 89 c2
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
@@ -14095,7 +14105,7 @@ ahci_port_init_:                             ; 0xf8de1 LB 0x250
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
+ahci_cmd_packet_:                            ; 0xf9164 LB 0x18c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14107,33 +14117,33 @@ ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
     mov word [bp-010h], cx                    ; 89 4e f0
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 f0 84
+    call 0166eh                               ; e8 ef 84
     mov si, 00122h                            ; be 22 01
     mov word [bp-008h], ax                    ; 89 46 f8
     cmp byte [bp+00ah], 002h                  ; 80 7e 0a 02
-    jne short 091adh                          ; 75 23
+    jne short 091aeh                          ; 75 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 9e 87
+    call 01933h                               ; e8 9d 87
     mov ax, 00ca6h                            ; b8 a6 0c
     push ax                                   ; 50
     mov ax, 00cb6h                            ; b8 b6 0c
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 d2 87
+    call 01976h                               ; e8 d1 87
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 092e6h                           ; e9 39 01
+    jmp near 092e7h                           ; e9 39 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 091a7h                          ; 75 f4
+    jne short 091a8h                          ; 75 f4
     mov bx, word [bp+006h]                    ; 8b 5e 06
     mov di, word [bp+008h]                    ; 8b 7e 08
     mov cx, strict word 00008h                ; b9 08 00
     sal bx, 1                                 ; d1 e3
     rcl di, 1                                 ; d1 d7
-    loop 091bch                               ; e2 fa
+    loop 091bdh                               ; e2 fa
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si], bx                      ; 26 89 1c
     mov word [es:si+002h], di                 ; 26 89 7c 02
@@ -14147,7 +14157,7 @@ ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 0a070h                               ; e8 7b 0e
+    call 0a070h                               ; e8 7a 0e
     mov word [es:si+00eh], ax                 ; 26 89 44 0e
     xor di, di                                ; 31 ff
     mov ax, word [es:si+00232h]               ; 26 8b 84 32 02
@@ -14165,7 +14175,7 @@ ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08de1h                               ; e8 af fb
+    call 08de2h                               ; e8 af fb
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -14173,14 +14183,14 @@ ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov ax, 000c0h                            ; b8 c0 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0a0d0h                               ; e8 89 0e
+    call 0a0d0h                               ; e8 88 0e
     mov es, [bp-008h]                         ; 8e 46 f8
     mov word [es:si+018h], di                 ; 26 89 7c 18
     mov word [es:si+01ah], di                 ; 26 89 7c 1a
     mov word [es:si+01ch], di                 ; 26 89 7c 1c
     mov ax, word [es:si+01eh]                 ; 26 8b 44 1e
     test ax, ax                               ; 85 c0
-    je short 09285h                           ; 74 27
+    je short 09286h                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+0010ch], ax               ; 26 89 85 0c 01
@@ -14193,7 +14203,7 @@ ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
     mov bx, 000a0h                            ; bb a0 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 089fch                               ; e8 6c f7
+    call 089fdh                               ; e8 6c f7
     les bx, [bp-00eh]                         ; c4 5e f2
     mov dx, word [es:bx+004h]                 ; 26 8b 57 04
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
@@ -14220,16 +14230,16 @@ ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
     mov es, [bp-00ch]                         ; 8e 46 f4
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
     or ax, word [es:bx+004h]                  ; 26 0b 47 04
-    jne short 092e4h                          ; 75 05
+    jne short 092e5h                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 092e6h                          ; eb 02
+    jmp short 092e7h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
+ahci_port_detect_device_:                    ; 0xf92f0 LB 0x4fe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14245,10 +14255,10 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov byte [bp-01fh], al                    ; 88 46 e1
     mov bx, word [bp-020h]                    ; 8b 5e e0
     mov ax, si                                ; 89 f0
-    call 08de1h                               ; e8 ce fa
+    call 08de2h                               ; e8 ce fa
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 52 83
+    call 0166eh                               ; e8 51 83
     mov word [bp-01ah], 00122h                ; c7 46 e6 22 01
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov CL, strict byte 007h                  ; b1 07
@@ -14320,10 +14330,10 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     push bx                                   ; 53
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 08869h                               ; e8 9f f4
+    call 0886ah                               ; e8 9f f4
     test ax, ax                               ; 85 c0
-    jne short 093d1h                          ; 75 03
-    jmp near 097e5h                           ; e9 14 04
+    jne short 093d2h                          ; 75 03
+    jmp near 097e6h                           ; e9 14 04
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -14355,18 +14365,18 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 08869h                               ; e8 4d f4
+    call 0886ah                               ; e8 4d f4
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 093d1h                           ; 74 b0
+    je short 093d2h                           ; 74 b0
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
     mov dx, word [bp-01ch]                    ; 8b 56 e4
-    call 08869h                               ; e8 38 f4
+    call 0886ah                               ; e8 38 f4
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne short 093ceh                          ; 75 98
+    jne short 093cfh                          ; 75 98
     mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00130h                            ; 05 30 01
     cwd                                       ; 99
@@ -14394,8 +14404,8 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov al, byte [es:bx+00231h]               ; 26 8a 87 31 02
     mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 004h                  ; 3c 04
-    jc short 09480h                           ; 72 03
-    jmp near 097e5h                           ; e9 65 03
+    jc short 09481h                           ; 72 03
+    jmp near 097e6h                           ; e9 65 03
     mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00118h                            ; 05 18 01
     mov es, [bp-010h]                         ; 8e 46 f0
@@ -14447,9 +14457,9 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov cl, byte [bp-00ch]                    ; 8a 4e f4
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne short 0954bh                          ; 75 55
+    jne short 0954ch                          ; 75 55
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne short 0954bh                          ; 75 4f
+    jne short 0954ch                          ; 75 4f
     mov es, [bp-00eh]                         ; 8e 46 f2
     mov bx, word [bp-01ah]                    ; 8b 5e e6
     mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
@@ -14464,13 +14474,13 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov bx, 000ech                            ; bb ec 00
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov dx, es                                ; 8c c2
-    call 089fch                               ; e8 c0 f4
+    call 089fdh                               ; e8 c0 f4
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 0954eh                           ; 74 08
+    je short 0954fh                           ; 74 08
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 09550h                          ; eb 05
-    jmp near 09720h                           ; e9 d2 01
+    jmp short 09551h                          ; eb 05
+    jmp near 09721h                           ; e9 d2 01
     xor ax, ax                                ; 31 c0
     mov cl, al                                ; 88 c1
     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
@@ -14486,9 +14496,9 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov word [bp-01eh], ax                    ; 89 46 e2
     mov word [bp-012h], ax                    ; 89 46 ee
     cmp di, 00fffh                            ; 81 ff ff 0f
-    jne short 0959fh                          ; 75 1f
+    jne short 095a0h                          ; 75 1f
     cmp word [bp-014h], strict byte 0ffffh    ; 83 7e ec ff
-    jne short 0959fh                          ; 75 19
+    jne short 095a0h                          ; 75 19
     mov ax, word [bp-0015ch]                  ; 8b 86 a4 fe
     mov word [bp-012h], ax                    ; 89 46 ee
     mov ax, word [bp-0015eh]                  ; 8b 86 a2 fe
@@ -14528,62 +14538,62 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov word [es:si+034h], ax                 ; 26 89 44 34
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 0961ch                           ; 72 0c
-    jbe short 09624h                          ; 76 12
+    jc short 0961dh                           ; 72 0c
+    jbe short 09625h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 0962ch                           ; 74 16
+    je short 0962dh                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 09628h                           ; 74 0e
-    jmp short 0966fh                          ; eb 53
+    je short 09629h                           ; 74 0e
+    jmp short 09670h                          ; eb 53
     test al, al                               ; 84 c0
-    jne short 0966fh                          ; 75 4f
+    jne short 09670h                          ; 75 4f
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 0962eh                          ; eb 0a
+    jmp short 0962fh                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 0962eh                          ; eb 06
+    jmp short 0962fh                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 0962eh                          ; eb 02
+    jmp short 0962fh                          ; eb 02
     mov DL, strict byte 058h                  ; b2 58
     mov bl, dl                                ; 88 d3
     add bl, 007h                              ; 80 c3 07
     xor bh, bh                                ; 30 ff
     mov ax, bx                                ; 89 d8
-    call 016aeh                               ; e8 74 80
+    call 016aeh                               ; e8 73 80
     test al, al                               ; 84 c0
-    je short 0966fh                           ; 74 31
+    je short 09670h                           ; 74 31
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 67 80
+    call 016aeh                               ; e8 66 80
     mov ch, al                                ; 88 c5
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 5e 80
+    call 016aeh                               ; e8 5d 80
     mov ah, ch                                ; 88 ec
     mov word [bp-028h], ax                    ; 89 46 d8
     mov al, dl                                ; 88 d0
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 50 80
+    call 016aeh                               ; e8 4f 80
     xor ah, ah                                ; 30 e4
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov ax, bx                                ; 89 d8
-    call 016aeh                               ; e8 46 80
+    call 016aeh                               ; e8 45 80
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp short 09681h                          ; eb 12
+    jmp short 09682h                          ; eb 12
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-01eh]                       ; ff 76 e2
     push di                                   ; 57
     push word [bp-014h]                       ; ff 76 ec
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02ah]                         ; 8d 46 d6
-    call 05b4fh                               ; e8 ce c4
+    call 05b50h                               ; e8 ce c4
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 a7 82
+    call 01933h                               ; e8 a6 82
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-01eh]                       ; ff 76 e2
     push di                                   ; 57
@@ -14606,7 +14616,7 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 b6 82
+    call 01976h                               ; e8 b5 82
     add sp, strict byte 0001ch                ; 83 c4 1c
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
@@ -14638,19 +14648,19 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov byte [es:bx+001e2h], dl               ; 26 88 97 e2 01
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 44 7f
+    call 01652h                               ; e8 43 7f
     mov bl, al                                ; 88 c3
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00075h                ; ba 75 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 43 7f
-    jmp near 097d4h                           ; e9 b4 00
+    call 01660h                               ; e8 42 7f
+    jmp near 097d5h                           ; e9 b4 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne short 0977bh                          ; 75 55
+    jne short 0977ch                          ; 75 55
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne short 0977bh                          ; 75 4f
+    jne short 0977ch                          ; 75 4f
     mov es, [bp-00eh]                         ; 8e 46 f2
     mov bx, word [bp-01ah]                    ; 8b 5e e6
     mov word [es:bx+006h], strict word 00000h ; 26 c7 47 06 00 00
@@ -14665,13 +14675,13 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     mov bx, 000a1h                            ; bb a1 00
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov dx, es                                ; 8c c2
-    call 089fch                               ; e8 90 f2
+    call 089fdh                               ; e8 90 f2
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 0977dh                           ; 74 07
+    je short 0977eh                           ; 74 07
     mov cx, strict word 00001h                ; b9 01 00
-    jmp short 0977fh                          ; eb 04
-    jmp short 097d4h                          ; eb 57
+    jmp short 09780h                          ; eb 04
+    jmp short 097d5h                          ; eb 57
     xor cx, cx                                ; 31 c9
     mov bl, byte [bp-00ch]                    ; 8a 5e f4
     xor bh, bh                                ; 30 ff
@@ -14711,7 +14721,7 @@ ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf97ed LB 0x43
+ahci_mem_alloc_:                             ; 0xf97ee LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14721,25 +14731,25 @@ ahci_mem_alloc_:                             ; 0xf97ed LB 0x43
     push di                                   ; 57
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0166eh                               ; e8 71 7e
+    call 0166eh                               ; e8 70 7e
     test ax, ax                               ; 85 c0
-    je short 09826h                           ; 74 25
+    je short 09827h                           ; 74 25
     dec ax                                    ; 48
     mov bx, ax                                ; 89 c3
     xor dx, dx                                ; 31 d2
     mov cx, strict word 0000ah                ; b9 0a 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09809h                               ; e2 fa
+    loop 0980ah                               ; e2 fa
     mov si, ax                                ; 89 c6
     mov di, dx                                ; 89 d7
     mov cx, strict word 00004h                ; b9 04 00
     shr di, 1                                 ; d1 ef
     rcr si, 1                                 ; d1 de
-    loop 09816h                               ; e2 fa
+    loop 09817h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0167ch                               ; e8 58 7e
+    call 0167ch                               ; e8 57 7e
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14749,7 +14759,7 @@ ahci_mem_alloc_:                             ; 0xf97ed LB 0x43
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf9830 LB 0x16e
+ahci_hba_init_:                              ; 0xf9831 LB 0x16e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14761,7 +14771,7 @@ ahci_hba_init_:                              ; 0xf9830 LB 0x16e
     mov si, ax                                ; 89 c6
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 28 7e
+    call 0166eh                               ; e8 27 7e
     mov bx, 00122h                            ; bb 22 01
     mov di, ax                                ; 89 c7
     mov ax, strict word 00010h                ; b8 10 00
@@ -14778,11 +14788,11 @@ ahci_hba_init_:                              ; 0xf9830 LB 0x16e
     ; mov dx, ax                                ; 8b d0
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 097edh                               ; e8 83 ff
+    call 097eeh                               ; e8 83 ff
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    jne short 09874h                          ; 75 03
-    jmp near 0997dh                           ; e9 09 01
+    jne short 09875h                          ; 75 03
+    jmp near 0997eh                           ; e9 09 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov es, di                                ; 8e c7
     mov word [es:bx+00232h], ax               ; 26 89 87 32 02
@@ -14832,7 +14842,7 @@ ahci_hba_init_:                              ; 0xf9830 LB 0x16e
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 098ceh                          ; 75 de
+    jne short 098cfh                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14851,33 +14861,33 @@ ahci_hba_init_:                              ; 0xf9830 LB 0x16e
     push bx                                   ; 53
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 08869h                               ; e8 54 ef
+    call 0886ah                               ; e8 54 ef
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     mov byte [bp-00eh], al                    ; 88 46 f2
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
-    jmp short 09941h                          ; eb 21
+    jmp short 09942h                          ; eb 21
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 09938h                           ; 74 12
+    je short 09939h                           ; 74 12
     mov bl, byte [bp-00ch]                    ; 8a 5e f4
     xor bh, bh                                ; 30 ff
     xor ax, ax                                ; 31 c0
     mov dx, word [bp-010h]                    ; 8b 56 f0
-    call 092efh                               ; e8 bc f9
+    call 092f0h                               ; e8 bc f9
     dec byte [bp-00eh]                        ; fe 4e f2
-    je short 0997bh                           ; 74 43
+    je short 0997ch                           ; 74 43
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
-    jnc short 0997bh                          ; 73 3a
+    jnc short 0997ch                          ; 73 3a
     mov cl, byte [bp-00ch]                    ; 8a 4e f4
     xor ch, ch                                ; 30 ed
     mov bx, strict word 00001h                ; bb 01 00
     xor di, di                                ; 31 ff
-    jcxz 09953h                               ; e3 06
+    jcxz 09954h                               ; e3 06
     sal bx, 1                                 ; d1 e3
     rcl di, 1                                 ; d1 d7
-    loop 0994dh                               ; e2 fa
+    loop 0994eh                               ; e2 fa
     mov ax, strict word 0000ch                ; b8 0c 00
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14893,11 +14903,11 @@ ahci_hba_init_:                              ; 0xf9830 LB 0x16e
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 09977h                          ; 75 04
+    jne short 09978h                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 09920h                           ; 74 a9
+    je short 09921h                           ; 74 a9
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 09922h                          ; eb a7
+    jmp short 09923h                          ; eb a7
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14907,29 +14917,29 @@ ahci_hba_init_:                              ; 0xf9830 LB 0x16e
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 083h, 09ah, 061h, 09ah, 067h, 09ah, 06dh, 09ah, 073h
-    db  09ah, 079h, 09ah, 07fh, 09ah, 083h, 09ah
-_ahci_init:                                  ; 0xf999e LB 0x11a
+    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 084h, 09ah, 062h, 09ah, 068h, 09ah, 06eh, 09ah, 074h
+    db  09ah, 07ah, 09ah, 080h, 09ah, 084h, 09ah
+_ahci_init:                                  ; 0xf999f LB 0x11a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
     sub sp, strict byte 0000eh                ; 83 ec 0e
     mov ax, 00601h                            ; b8 01 06
     mov dx, strict word 00001h                ; ba 01 00
-    call 09ed7h                               ; e8 29 05
+    call 09ed8h                               ; e8 29 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je short 099feh                           ; 74 49
+    je short 099ffh                           ; 74 49
     mov al, ah                                ; 88 e0
     mov byte [bp-006h], ah                    ; 88 66 fa
     mov byte [bp-008h], dl                    ; 88 56 f8
     xor dh, ah                                ; 30 e6
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 09edfh                               ; e8 18 05
+    call 09ee0h                               ; e8 18 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 09a01h                           ; 74 34
+    je short 09a02h                           ; 74 34
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -14940,19 +14950,19 @@ _ahci_init:                                  ; 0xf999e LB 0x11a
     mov byte [bp-00fh], bh                    ; 88 7e f1
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 09edfh                               ; e8 f3 04
+    call 09ee0h                               ; e8 f3 04
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 09a01h                           ; 74 11
+    je short 09a02h                           ; 74 11
     mov bl, cl                                ; 88 cb
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
     xor bh, bh                                ; 30 ff
     mov dx, word [bp-00ch]                    ; 8b 56 f4
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    jmp short 099c4h                          ; eb c6
-    jmp near 09ab2h                           ; e9 b1 00
+    jmp short 099c5h                          ; eb c6
+    jmp near 09ab3h                           ; e9 b1 00
     test cl, cl                               ; 84 c9
-    je short 099feh                           ; 74 f9
+    je short 099ffh                           ; 74 f9
     add cl, 002h                              ; 80 c1 02
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
@@ -14964,40 +14974,40 @@ _ahci_init:                                  ; 0xf999e LB 0x11a
     mov byte [bp-009h], bh                    ; 88 7e f7
     mov dx, word [bp-00eh]                    ; 8b 56 f2
     mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 09edfh                               ; e8 b8 04
+    call 09ee0h                               ; e8 b8 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 099feh                          ; 75 d3
+    jne short 099ffh                          ; 75 d3
     mov byte [bp-004h], 000h                  ; c6 46 fc 00
     mov bl, cl                                ; 88 cb
     add bl, 002h                              ; 80 c3 02
     xor bh, bh                                ; 30 ff
     mov dx, word [bp-00eh]                    ; 8b 56 f2
     mov ax, word [bp-00ah]                    ; 8b 46 f6
-    call 09f06h                               ; e8 c7 04
+    call 09f07h                               ; e8 c7 04
     mov dx, ax                                ; 89 c2
     and ax, strict word 0000fh                ; 25 0f 00
     sub ax, strict word 00004h                ; 2d 04 00
     cmp ax, strict word 0000bh                ; 3d 0b 00
-    jnbe short 09a83h                         ; 77 37
+    jnbe short 09a84h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 09987h                            ; bf 87 99
+    mov di, 09988h                            ; bf 88 99
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-06672h]               ; 2e 8b 85 8e 99
+    mov ax, word [cs:di-06671h]               ; 2e 8b 85 8f 99
     jmp ax                                    ; ff e0
     mov byte [bp-004h], 010h                  ; c6 46 fc 10
-    jmp short 09a83h                          ; eb 1c
+    jmp short 09a84h                          ; eb 1c
     mov byte [bp-004h], 014h                  ; c6 46 fc 14
-    jmp short 09a83h                          ; eb 16
+    jmp short 09a84h                          ; eb 16
     mov byte [bp-004h], 018h                  ; c6 46 fc 18
-    jmp short 09a83h                          ; eb 10
+    jmp short 09a84h                          ; eb 10
     mov byte [bp-004h], 01ch                  ; c6 46 fc 1c
-    jmp short 09a83h                          ; eb 0a
+    jmp short 09a84h                          ; eb 0a
     mov byte [bp-004h], 020h                  ; c6 46 fc 20
-    jmp short 09a83h                          ; eb 04
+    jmp short 09a84h                          ; eb 04
     mov byte [bp-004h], 024h                  ; c6 46 fc 24
     mov CL, strict byte 004h                  ; b1 04
     mov ax, dx                                ; 89 d0
@@ -15007,64 +15017,57 @@ _ahci_init:                                  ; 0xf999e LB 0x11a
     sal cx, 1                                 ; d1 e1
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test al, al                               ; 84 c0
-    je short 09ab2h                           ; 74 1c
+    je short 09ab3h                           ; 74 1c
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dl, byte [bp-008h]                    ; 8a 56 f8
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 09f2bh                               ; e8 84 04
+    call 09f2ch                               ; e8 84 04
     test AL, strict byte 001h                 ; a8 01
-    je short 09ab2h                           ; 74 07
+    je short 09ab3h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, cx                                ; 01 c8
-    call 09830h                               ; e8 7e fd
+    call 09831h                               ; e8 7e fd
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf9ab8 LB 0x39
+apm_out_str_:                                ; 0xf9ab9 LB 0x39
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     mov bx, ax                                ; 89 c3
     cmp byte [bx], 000h                       ; 80 3f 00
-    je short 09acdh                           ; 74 0a
+    je short 09aceh                           ; 74 0a
     mov al, byte [bx]                         ; 8a 07
     out DX, AL                                ; ee
     inc bx                                    ; 43
     mov al, byte [bx]                         ; 8a 07
     db  00ah, 0c0h
     ; or al, al                                 ; 0a c0
-    jne short 09ac5h                          ; 75 f8
+    jne short 09ac6h                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    adc bl, byte [bp+di-06463h]               ; 12 9b 9d 9b
-    and AL, strict byte 09bh                  ; 24 9b
-    aas                                       ; 3f
+    adc bx, word [bp+di-06462h]               ; 13 9b 9e 9b
+    and ax, 0409bh                            ; 25 9b 40
     wait                                      ; 9b
-    popfw                                     ; 9d
-    wait                                      ; 9b
-    push strict byte 0ff9bh                   ; 6a 9b
-    popfw                                     ; 9d
-    wait                                      ; 9b
-    mov word [06f9bh], ax                     ; a3 9b 6f
-    wait                                      ; 9b
-    outsw                                     ; 6f
-    wait                                      ; 9b
-    outsw                                     ; 6f
-    wait                                      ; 9b
-    loop 09a86h                               ; e2 9b
-    outsw                                     ; 6f
+    sahf                                      ; 9e
     wait                                      ; 9b
-    outsw                                     ; 6f
+    imul bx, word [bp+di-06462h], strict byte 0ffa4h ; 6b 9b 9e 9b a4
     wait                                      ; 9b
-    db  0dbh
+    jo short 09a81h                           ; 70 9b
+    jo short 09a83h                           ; 70 9b
+    jo short 09a85h                           ; 70 9b
+    jcxz 09a87h                               ; e3 9b
+    jo short 09a89h                           ; 70 9b
+    jo short 09a8bh                           ; 70 9b
+    db  0dch
     wait                                      ; 9b
-_apm_function:                               ; 0xf9af1 LB 0xf6
+_apm_function:                               ; 0xf9af2 LB 0xf6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15072,23 +15075,23 @@ _apm_function:                               ; 0xf9af1 LB 0xf6
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0000eh                ; 3d 0e 00
-    jnbe short 09b6fh                         ; 77 6c
+    jnbe short 09b70h                         ; 77 6c
     mov bx, ax                                ; 89 c3
     sal bx, 1                                 ; d1 e3
     mov dx, word [bp+018h]                    ; 8b 56 18
     or dl, 001h                               ; 80 ca 01
-    jmp word [cs:bx-0652dh]                   ; 2e ff a7 d3 9a
+    jmp word [cs:bx-0652ch]                   ; 2e ff a7 d4 9a
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
     mov word [bp+00ch], 0504dh                ; c7 46 0c 4d 50
     mov word [bp+010h], strict word 00003h    ; c7 46 10 03 00
-    jmp near 09b9dh                           ; e9 79 00
+    jmp near 09b9eh                           ; e9 79 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0a144h                ; c7 46 0c 44 a1
     mov word [bp+010h], 0f000h                ; c7 46 10 00 f0
     mov ax, strict word 0fff0h                ; b8 f0 ff
     mov word [bp+006h], ax                    ; 89 46 06
     mov word [bp+004h], ax                    ; 89 46 04
-    jmp near 09b9dh                           ; e9 5e 00
+    jmp near 09b9eh                           ; e9 5e 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
     mov word [bp+00ch], 0da40h                ; c7 46 0c 40 da
     mov ax, 0f000h                            ; b8 00 f0
@@ -15101,21 +15104,21 @@ _apm_function:                               ; 0xf9af1 LB 0xf6
     sal ebx, 010h                             ; 66 c1 e3 10
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 09b9dh                           ; e9 33 00
+    jmp near 09b9eh                           ; e9 33 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 09b9dh                           ; e9 2e 00
+    jmp near 09b9eh                           ; e9 2e 00
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 b9 7d
+    call 01933h                               ; e8 b8 7d
     push word [bp+00ch]                       ; ff 76 0c
     push word [bp+012h]                       ; ff 76 12
     mov ax, 00d29h                            ; b8 29 0d
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 eb 7d
+    call 01976h                               ; e8 ea 7d
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -15127,30 +15130,30 @@ _apm_function:                               ; 0xf9af1 LB 0xf6
     pop bp                                    ; 5d
     retn                                      ; c3
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 09bc8h                           ; 74 1f
+    je short 09bc9h                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 09bc0h                           ; 74 11
+    je short 09bc1h                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 09bd0h                          ; 75 1b
+    jne short 09bd1h                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d10h                            ; b8 10 0d
-    call 09ab8h                               ; e8 fa fe
-    jmp short 09b9dh                          ; eb dd
+    call 09ab9h                               ; e8 fa fe
+    jmp short 09b9eh                          ; eb dd
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d18h                            ; b8 18 0d
-    jmp short 09bbbh                          ; eb f3
+    jmp short 09bbch                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d20h                            ; b8 20 0d
-    jmp short 09bbbh                          ; eb eb
+    jmp short 09bbch                          ; eb eb
     or ah, 00ah                               ; 80 cc 0a
     mov word [bp+012h], ax                    ; 89 46 12
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 09b9dh                          ; eb c2
+    jmp short 09b9eh                          ; eb c2
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 09b9dh                          ; eb bb
+    jmp short 09b9eh                          ; eb bb
     or ah, 080h                               ; 80 cc 80
-    jmp short 09bd3h                          ; eb ec
-pci16_select_reg_:                           ; 0xf9be7 LB 0x24
+    jmp short 09bd4h                          ; eb ec
+pci16_select_reg_:                           ; 0xf9be8 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -15167,7 +15170,7 @@ pci16_select_reg_:                           ; 0xf9be7 LB 0x24
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf9c0b LB 0xf7
+pci16_find_device_:                          ; 0xf9c0c LB 0xf7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15181,49 +15184,49 @@ pci16_find_device_:                          ; 0xf9c0b LB 0xf7
     xor bx, bx                                ; 31 db
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     test bl, 007h                             ; f6 c3 07
-    jne short 09c53h                          ; 75 2d
+    jne short 09c54h                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 09be7h                               ; e8 b9 ff
+    call 09be8h                               ; e8 b9 ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp-008h], al                    ; 88 46 f8
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 09c41h                          ; 75 06
+    jne short 09c42h                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 09cd3h                           ; e9 92 00
+    jmp near 09cd4h                           ; e9 92 00
     test byte [bp-008h], 080h                 ; f6 46 f8 80
-    je short 09c4eh                           ; 74 07
+    je short 09c4fh                           ; 74 07
     mov word [bp-00eh], strict word 00001h    ; c7 46 f2 01 00
-    jmp short 09c53h                          ; eb 05
+    jmp short 09c54h                          ; eb 05
     mov word [bp-00eh], strict word 00008h    ; c7 46 f2 08 00
     mov al, byte [bp-008h]                    ; 8a 46 f8
     and AL, strict byte 007h                  ; 24 07
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 09c7ah                          ; 75 1e
+    jne short 09c7bh                          ; 75 1e
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
     test ax, ax                               ; 85 c0
-    jne short 09c7ah                          ; 75 16
+    jne short 09c7bh                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 09be7h                               ; e8 7b ff
+    call 09be8h                               ; e8 7b ff
     mov dx, 00cfeh                            ; ba fe 0c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp al, byte [bp-006h]                    ; 3a 46 fa
-    jbe short 09c7ah                          ; 76 03
+    jbe short 09c7bh                          ; 76 03
     mov byte [bp-006h], al                    ; 88 46 fa
     test di, di                               ; 85 ff
-    je short 09c83h                           ; 74 05
+    je short 09c84h                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 09c85h                          ; eb 02
+    jmp short 09c86h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 09be7h                               ; e8 5d ff
+    call 09be8h                               ; e8 5d ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -15234,51 +15237,51 @@ pci16_find_device_:                          ; 0xf9c0b LB 0xf7
     mov word [bp-010h], dx                    ; 89 56 f0
     mov word [bp-00ch], strict word 00000h    ; c7 46 f4 00 00
     test di, di                               ; 85 ff
-    je short 09cb4h                           ; 74 0f
+    je short 09cb5h                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 09ca8h                               ; e2 fa
+    loop 09ca9h                               ; e2 fa
     mov word [bp-00ah], ax                    ; 89 46 f6
     mov word [bp-010h], dx                    ; 89 56 f0
     mov ax, word [bp-010h]                    ; 8b 46 f0
     cmp ax, word [bp-014h]                    ; 3b 46 ec
-    jne short 09cc4h                          ; 75 08
+    jne short 09cc5h                          ; 75 08
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 09ccah                           ; 74 06
+    je short 09ccbh                           ; 74 06
     cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
-    je short 09cd0h                           ; 74 06
+    je short 09cd1h                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 09ce3h                           ; 74 13
+    je short 09ce4h                           ; 74 13
     add bx, word [bp-00eh]                    ; 03 5e f2
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
     mov dl, byte [bp-006h]                    ; 8a 56 fa
     xor dh, dh                                ; 30 f6
     cmp ax, dx                                ; 39 d0
-    jnbe short 09ce3h                         ; 77 03
-    jmp near 09c21h                           ; e9 3e ff
+    jnbe short 09ce4h                         ; 77 03
+    jmp near 09c22h                           ; e9 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 09cech                          ; 75 04
+    jne short 09cedh                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 09cefh                          ; eb 03
+    jmp short 09cf0h                          ; eb 03
     mov ax, strict word 0ffffh                ; b8 ff ff
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    jcxz 09c95h                               ; e3 9d
-    cld                                       ; fc
+    in AL, strict byte 09dh                   ; e4 9d
+    std                                       ; fd
     popfw                                     ; 9d
-    push CS                                   ; 0e
+    db  00fh, 09eh, 023h
+    ; setle byte [bp+di]                        ; 0f 9e 23
     sahf                                      ; 9e
-    and bl, byte [bp-061cch]                  ; 22 9e 34 9e
-    inc di                                    ; 47
+    xor ax, 0489eh                            ; 35 9e 48
     sahf                                      ; 9e
-_pci16_function:                             ; 0xf9d02 LB 0x1d5
+_pci16_function:                             ; 0xf9d03 LB 0x1d5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15292,73 +15295,73 @@ _pci16_function:                             ; 0xf9d02 LB 0x1d5
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 09d34h                           ; 72 13
-    jbe short 09d87h                          ; 76 64
+    jc short 09d35h                           ; 72 13
+    jbe short 09d88h                          ; 76 64
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je short 09d8fh                           ; 74 67
+    je short 09d90h                           ; 74 67
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc short 09d3eh                           ; 72 11
+    jc short 09d3fh                           ; 72 11
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe short 09d92h                          ; 76 60
-    jmp short 09d3eh                          ; eb 0a
+    jbe short 09d93h                          ; 76 60
+    jmp short 09d3fh                          ; eb 0a
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 09d5dh                           ; 74 24
+    je short 09d5eh                           ; 74 24
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 09d41h                           ; 74 03
-    jmp near 09ea0h                           ; e9 5f 01
+    je short 09d42h                           ; 74 03
+    jmp near 09ea1h                           ; e9 5f 01
     mov word [bp+020h], strict word 00001h    ; c7 46 20 01 00
     mov word [bp+014h], 00210h                ; c7 46 14 10 02
     mov word [bp+01ch], strict word 00000h    ; c7 46 1c 00 00
     mov word [bp+018h], 04350h                ; c7 46 18 50 43
     mov word [bp+01ah], 02049h                ; c7 46 1a 49 20
-    jmp near 09ed0h                           ; e9 73 01
+    jmp near 09ed1h                           ; e9 73 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 09d69h                          ; 75 06
+    jne short 09d6ah                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 09ec9h                           ; e9 60 01
+    jmp near 09ecah                           ; e9 60 01
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor cx, cx                                ; 31 c9
-    call 09c0bh                               ; e8 94 fe
+    call 09c0ch                               ; e8 94 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09d89h                          ; 75 0d
+    jne short 09d8ah                          ; 75 0d
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09ec9h                           ; e9 42 01
-    jmp short 09d94h                          ; eb 0b
+    jmp near 09ecah                           ; e9 42 01
+    jmp short 09d95h                          ; eb 0b
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09ed0h                           ; e9 41 01
-    jmp near 09e5bh                           ; e9 c9 00
-    jmp short 09db9h                          ; eb 25
+    jmp near 09ed1h                           ; e9 41 01
+    jmp near 09e5ch                           ; e9 c9 00
+    jmp short 09dbah                          ; eb 25
     mov bx, word [bp+008h]                    ; 8b 5e 08
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+01eh]                    ; 8b 56 1e
     mov cx, strict word 00001h                ; b9 01 00
-    call 09c0bh                               ; e8 68 fe
+    call 09c0ch                               ; e8 68 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09db3h                          ; 75 0b
+    jne short 09db4h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09ec9h                           ; e9 16 01
+    jmp near 09ecah                           ; e9 16 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09ed0h                           ; e9 17 01
+    jmp near 09ed1h                           ; e9 17 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 09dc6h                           ; 72 06
+    jc short 09dc7h                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 09ec9h                           ; e9 03 01
+    jmp near 09ecah                           ; e9 03 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 09be7h                               ; e8 18 fe
+    call 09be8h                               ; e8 18 fe
     mov bx, word [bp+020h]                    ; 8b 5e 20
     xor bh, bh                                ; 30 ff
     sub bx, strict byte 00008h                ; 83 eb 08
     cmp bx, strict byte 00005h                ; 83 fb 05
-    jnbe short 09e44h                         ; 77 68
+    jnbe short 09e45h                         ; 77 68
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx-0630ah]                   ; 2e ff a7 f6 9c
+    jmp word [cs:bx-06309h]                   ; 2e ff a7 f7 9c
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -15369,14 +15372,14 @@ _pci16_function:                             ; 0xf9d02 LB 0x1d5
     ; sub ah, ah                                ; 2a e4
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp short 09e44h                          ; eb 48
+    jmp short 09e45h                          ; eb 48
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 002h                              ; 80 e2 02
     add dx, 00cfch                            ; 81 c2 fc 0c
     in ax, DX                                 ; ed
     mov word [bp+01ch], ax                    ; 89 46 1c
-    jmp short 09e44h                          ; eb 36
+    jmp short 09e45h                          ; eb 36
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -15385,21 +15388,21 @@ _pci16_function:                             ; 0xf9d02 LB 0x1d5
     xchg dx, ax                               ; 92
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp short 09e44h                          ; eb 22
+    jmp short 09e45h                          ; eb 22
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 003h                              ; 80 e2 03
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, AL                                ; ee
-    jmp short 09e44h                          ; eb 10
+    jmp short 09e45h                          ; eb 10
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov dx, word [bp+004h]                    ; 8b 56 04
     xor dh, dh                                ; 30 f6
     and dl, 002h                              ; 80 e2 02
     add dx, 00cfch                            ; 81 c2 fc 0c
     out DX, ax                                ; ef
-    jmp near 09ed0h                           ; e9 89 00
+    jmp near 09ed1h                           ; e9 89 00
     mov ax, word [bp+01ch]                    ; 8b 46 1c
     mov cx, word [bp+01eh]                    ; 8b 4e 1e
     mov dx, 00cfch                            ; ba fc 0c
@@ -15408,20 +15411,20 @@ _pci16_function:                             ; 0xf9d02 LB 0x1d5
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09ed0h                          ; eb 75
+    jmp short 09ed1h                          ; eb 75
     mov bx, word [bp+004h]                    ; 8b 5e 04
     mov es, [bp+026h]                         ; 8e 46 26
     mov word [bp-008h], bx                    ; 89 5e f8
     mov [bp-006h], es                         ; 8c 46 fa
     mov cx, word [0f4a0h]                     ; 8b 0e a0 f4
     cmp cx, word [es:bx]                      ; 26 3b 0f
-    jbe short 09e81h                          ; 76 11
+    jbe short 09e82h                          ; 76 11
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 089h                               ; 80 cc 89
     mov word [bp+020h], ax                    ; 89 46 20
     or word [bp+02ch], strict byte 00001h     ; 83 4e 2c 01
-    jmp short 09e95h                          ; eb 14
+    jmp short 09e96h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
     mov dx, ds                                ; 8c da
@@ -15433,11 +15436,11 @@ _pci16_function:                             ; 0xf9d02 LB 0x1d5
     mov ax, word [0f4a0h]                     ; a1 a0 f4
     les bx, [bp-008h]                         ; c4 5e f8
     mov word [es:bx], ax                      ; 26 89 07
-    jmp short 09ed0h                          ; eb 30
+    jmp short 09ed1h                          ; eb 30
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 88 7a
+    call 01933h                               ; e8 87 7a
     mov ax, word [bp+014h]                    ; 8b 46 14
     push ax                                   ; 50
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -15446,7 +15449,7 @@ _pci16_function:                             ; 0xf9d02 LB 0x1d5
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 b8 7a
+    call 01976h                               ; e8 b7 7a
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -15458,13 +15461,13 @@ _pci16_function:                             ; 0xf9d02 LB 0x1d5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf9ed7 LB 0x8
+pci_find_classcode_:                         ; 0xf9ed8 LB 0x8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov ax, strict word 0ffffh                ; b8 ff ff
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf9edf LB 0x27
+pci_read_config_byte_:                       ; 0xf9ee0 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15487,7 +15490,7 @@ pci_read_config_byte_:                       ; 0xf9edf LB 0x27
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf9f06 LB 0x25
+pci_read_config_word_:                       ; 0xf9f07 LB 0x25
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15509,7 +15512,7 @@ pci_read_config_word_:                       ; 0xf9f06 LB 0x25
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf9f2b LB 0x3f
+pci_read_config_dword_:                      ; 0xf9f2c LB 0x3f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15524,7 +15527,7 @@ pci_read_config_dword_:                      ; 0xf9f2b LB 0x3f
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    jne short 09f5bh                          ; 75 14
+    jne short 09f5ch                          ; 75 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
@@ -15534,9 +15537,9 @@ pci_read_config_dword_:                      ; 0xf9f2b LB 0x3f
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    je short 09f60h                           ; 74 05
+    je short 09f61h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 09f62h                          ; eb 02
+    jmp short 09f63h                          ; eb 02
     xor ax, ax                                ; 31 c0
     cwd                                       ; 99
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -15544,7 +15547,7 @@ pci_read_config_dword_:                      ; 0xf9f2b LB 0x3f
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf9f6a LB 0x1d
+vds_is_present_:                             ; 0xf9f6b LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -15552,7 +15555,7 @@ vds_is_present_:                             ; 0xf9f6a LB 0x1d
     mov ax, strict word 00040h                ; b8 40 00
     mov es, ax                                ; 8e c0
     test byte [es:bx], 020h                   ; 26 f6 07 20
-    je short 09f82h                           ; 74 06
+    je short 09f83h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
     pop bx                                    ; 5b
@@ -15561,7 +15564,7 @@ vds_is_present_:                             ; 0xf9f6a LB 0x1d
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf9f87 LB 0x1e
+vds_real_to_lin_:                            ; 0xf9f88 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -15572,7 +15575,7 @@ vds_real_to_lin_:                            ; 0xf9f87 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09f95h                               ; e2 fa
+    loop 09f96h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -15580,7 +15583,7 @@ vds_real_to_lin_:                            ; 0xf9f87 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9fa5 LB 0x77
+vds_build_sg_list_:                          ; 0xf9fa6 LB 0x77
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15594,23 +15597,23 @@ vds_build_sg_list_:                          ; 0xf9fa5 LB 0x77
     mov word [es:di], bx                      ; 26 89 1d
     mov bx, word [bp+006h]                    ; 8b 5e 06
     mov word [es:di+002h], bx                 ; 26 89 5d 02
-    call 09f87h                               ; e8 c3 ff
+    call 09f88h                               ; e8 c3 ff
     mov es, si                                ; 8e c6
     mov word [es:di+004h], ax                 ; 26 89 45 04
     mov word [es:di+006h], dx                 ; 26 89 55 06
     mov word [es:di+008h], strict word 00000h ; 26 c7 45 08 00 00
-    call 09f6ah                               ; e8 93 ff
+    call 09f6bh                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 09fech                           ; 74 11
+    je short 09fedh                           ; 74 11
     mov es, si                                ; 8e c6
     mov ax, 08105h                            ; b8 05 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc short 09fe9h                           ; 72 02
+    jc short 09feah                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 0a013h                          ; eb 27
+    jmp short 0a014h                          ; eb 27
     mov es, si                                ; 8e c6
     mov word [es:di+00eh], strict word 00001h ; 26 c7 45 0e 01 00
     mov dx, word [es:di+004h]                 ; 26 8b 55 04
@@ -15627,21 +15630,21 @@ vds_build_sg_list_:                          ; 0xf9fa5 LB 0x77
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xfa01c LB 0x34
+vds_free_sg_list_:                           ; 0xfa01d LB 0x33
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 09f6ah                               ; e8 44 ff
+    call 09f6bh                               ; e8 44 ff
     test ax, ax                               ; 85 c0
-    je short 0a03bh                           ; 74 11
+    je short 0a03ch                           ; 74 11
     mov di, bx                                ; 89 df
     mov es, dx                                ; 8e c2
     mov ax, 08106h                            ; b8 06 81
     mov dx, strict word 00000h                ; ba 00 00
     int 04bh                                  ; cd 4b
-    jc short 0a03ah                           ; 72 02
+    jc short 0a03bh                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
@@ -15652,7 +15655,7 @@ vds_free_sg_list_:                           ; 0xfa01c LB 0x34
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0x6 db 0
+    times 0x5 db 0
 __U4M:                                       ; 0xfa050 LB 0x20
     pushfw                                    ; 9c
     push si                                   ; 56
@@ -16733,7 +16736,7 @@ normal_post:                                 ; 0xfe0c0 LB 0x1f3
     mov ax, 0c000h                            ; b8 00 c0
     mov dx, 0c800h                            ; ba 00 c8
     call 01600h                               ; e8 f0 33
-    call 04ff0h                               ; e8 dd 6d
+    call 04ff1h                               ; e8 de 6d
     pop DS                                    ; 1f
     mov ax, 0ff53h                            ; b8 53 ff
     mov word [0003ch], ax                     ; a3 3c 00
@@ -16856,8 +16859,8 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     cld                                       ; fc
     call 01cc5h                               ; e8 89 39
     call 02154h                               ; e8 15 3e
-    call 0999eh                               ; e8 5c b6
-    call 08803h                               ; e8 be a4
+    call 0999fh                               ; e8 5d b6
+    call 08804h                               ; e8 bf a4
     call 0ed4ch                               ; e8 04 0a
     call 0e2d2h                               ; e8 87 ff
     push CS                                   ; 0e
@@ -16976,7 +16979,7 @@ biosorg_check_at_0E739h:                     ; 0xfe739 LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 065abh                               ; e8 62 7e
+    call 065ach                               ; e8 63 7e
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17080,7 +17083,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x4b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05859h                               ; e8 10 70
+    call 0585ah                               ; e8 11 70
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17104,7 +17107,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x4b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05859h                               ; e8 eb 6f
+    call 0585ah                               ; e8 ec 6f
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17163,7 +17166,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x78
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 052f8h                               ; e8 28 69
+    call 052f9h                               ; e8 29 69
     pop ES                                    ; 07
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -17193,7 +17196,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x78
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06ee3h                               ; e8 ef 84
+    call 06ee4h                               ; e8 f0 84
     pop DS                                    ; 1f
     pop ES                                    ; 07
     pop di                                    ; 5f
@@ -17266,7 +17269,7 @@ jmp_call_ret_int13_out:                      ; 0xfec7a LB 0x4a
     pop DS                                    ; 1f
     cld                                       ; fc
     push word [cs:0ec7ah]                     ; 2e ff 36 7a ec
-    jmp near 0425bh                           ; e9 b0 55
+    jmp near 0425ch                           ; e9 b1 55
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
     ; cmp al, dl                                ; 3a c2
@@ -17312,16 +17315,16 @@ int13_notfloppy:                             ; 0xfecde LB 0x14
     jc short 0ecf2h                           ; 72 0f
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 046aeh                               ; e8 c3 59
+    call 046afh                               ; e8 c4 59
     pop bx                                    ; 5b
     sal ebx, 010h                             ; 66 c1 e3 10
     jmp short 0ecffh                          ; eb 0d
 int13_disk:                                  ; 0xfecf2 LB 0xd
     cmp ah, 040h                              ; 80 fc 40
     jnbe short 0ecfch                         ; 77 05
-    call 05c3ah                               ; e8 40 6f
+    call 05c3bh                               ; e8 41 6f
     jmp short 0ecffh                          ; eb 03
-    call 06080h                               ; e8 81 73
+    call 06081h                               ; e8 82 73
 int13_out:                                   ; 0xfecff LB 0xb
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17555,7 +17558,7 @@ int17_handler:                               ; 0xfefd4 LB 0x1b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07890h                               ; e8 ac 88
+    call 07891h                               ; e8 ad 88
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17613,28 +17616,28 @@ int19_relocated:                             ; 0xff0ac LB 0x95
     ; mov bp, sp                                ; 8b ec
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 04d4dh                               ; e8 7d 5c
+    call 04d4eh                               ; e8 7e 5c
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 27
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 04d4dh                               ; e8 70 5c
+    call 04d4eh                               ; e8 71 5c
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 1a
     mov ax, strict word 00003h                ; b8 03 00
     push ax                                   ; 50
-    call 04d4dh                               ; e8 63 5c
+    call 04d4eh                               ; e8 64 5c
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
     jne short 0f0fdh                          ; 75 0d
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 04d4dh                               ; e8 56 5c
+    call 04d4eh                               ; e8 57 5c
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
@@ -17937,7 +17940,7 @@ int15_handler:                               ; 0xff859 LB 0x3c
     je short 0f890h                           ; 74 15
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f895h                           ; 74 15
-    call 06802h                               ; e8 7f 6f
+    call 06803h                               ; e8 80 6f
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17950,10 +17953,10 @@ int15_handler:                               ; 0xff859 LB 0x3c
     pop DS                                    ; 1f
     popfw                                     ; 9d
     jmp short 0f8afh                          ; eb 1f
-    call 09af1h                               ; e8 5e a2
+    call 09af2h                               ; e8 5f a2
     jmp short 0f883h                          ; eb ee
 int15_handler_mouse:                         ; 0xff895 LB 0x5
-    call 074f0h                               ; e8 58 7c
+    call 074f1h                               ; e8 59 7c
     jmp short 0f883h                          ; eb e9
 int15_handler32:                             ; 0xff89a LB 0x15
     push ax                                   ; 50
@@ -17964,7 +17967,7 @@ int15_handler32:                             ; 0xff89a LB 0x15
     push bp                                   ; 55
     push si                                   ; 56
     push di                                   ; 57
-    call 06b45h                               ; e8 a0 72
+    call 06b46h                               ; e8 a1 72
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -18010,7 +18013,7 @@ int74_handler:                               ; 0xff8c3 LB 0x3a
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0741eh                               ; e8 43 7b
+    call 0741fh                               ; e8 44 7b
     pop cx                                    ; 59
     jcxz 0f8ebh                               ; e3 0d
     db  033h, 0c0h
@@ -18058,7 +18061,7 @@ int70_handler:                               ; 0xff90f LB 0x2d
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 070bbh                               ; e8 9c 77
+    call 070bch                               ; e8 9d 77
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -18161,7 +18164,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0x1b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0717ah                               ; e8 fc 72
+    call 0717bh                               ; e8 fd 72
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -18273,4 +18276,4 @@ biosorg_check_before_or_at_0FFEEh:           ; 0xfff80 LB 0x70
     db  'XM'
 cpu_reset:                                   ; 0xffff0 LB 0x10
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
-    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 000h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 0a3h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
index 3950c49..582dd0f 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
@@ -1 +1 @@
-719e2f876a8ed51416c2a2c2f9cc9d38 *VBoxPcBios8086.rom
+5c70bcfd78c9a888eecad7ab74e791ad *VBoxPcBios8086.rom
diff --git a/src/VBox/Devices/PC/BIOS/eltorito.c b/src/VBox/Devices/PC/BIOS/eltorito.c
index eb56791..10f48ab 100644
--- a/src/VBox/Devices/PC/BIOS/eltorito.c
+++ b/src/VBox/Devices/PC/BIOS/eltorito.c
@@ -430,7 +430,7 @@ uint16_t cdrom_boot(void)
         break;
     case 0x04:  /* Hard disk */
         cdemu->vdevice.spt       = read_byte(boot_segment,446+6)&0x3f;
-        cdemu->vdevice.cylinders = (read_byte(boot_segment,446+6)<<2) + read_byte(boot_segment,446+7) + 1;
+        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;
     }
diff --git a/src/VBox/Devices/PC/DevACPI.cpp b/src/VBox/Devices/PC/DevACPI.cpp
index f36d42c..b4337b5 100644
--- a/src/VBox/Devices/PC/DevACPI.cpp
+++ b/src/VBox/Devices/PC/DevACPI.cpp
@@ -3138,10 +3138,17 @@ static int acpiR3PlantTables(ACPIState *pThis)
     pThis->u64RamSize = MMR3PhysGetRamSize(pVM);
     if (pThis->fPciPref64Enabled)
     {
-        /* Activate MEM4. See also DevPciIch9.cpp / ich9pciFakePCIBIOS() / uPciBiosMmio64 */
-        pThis->u64PciPref64Min = _4G + cbAbove4GB;
-        LogRel(("ACPI: enabling 64-bit prefetch root bus resource %#018RX64..%#018RX64\n",
-               pThis->u64PciPref64Min, pThis->u64PciPref64Max-1));
+        uint64_t const u64PciPref64Min = _4G + cbAbove4GB;
+        if (pThis->u64PciPref64Max > u64PciPref64Min)
+        {
+            /* Activate MEM4. See also DevPciIch9.cpp / ich9pciFakePCIBIOS() / uPciBiosMmio64 */
+            pThis->u64PciPref64Min = u64PciPref64Min;
+            LogRel(("ACPI: enabling 64-bit prefetch root bus resource %#018RX64..%#018RX64\n",
+                   u64PciPref64Min, pThis->u64PciPref64Max-1));
+        }
+        else
+            LogRel(("ACPI: NOT enabling 64-bit prefetch root bus resource (min/%#018RX64 >= max/%#018RX64)\n",
+                   u64PciPref64Min, pThis->u64PciPref64Max-1));
     }
     if (cbBelow4GB > UINT32_C(0xffe00000)) /* See MEM3. */
     {
diff --git a/src/VBox/Devices/VMMDev/VMMDev.cpp b/src/VBox/Devices/VMMDev/VMMDev.cpp
index 96269ef..e913bcb 100644
--- a/src/VBox/Devices/VMMDev/VMMDev.cpp
+++ b/src/VBox/Devices/VMMDev/VMMDev.cpp
@@ -192,6 +192,7 @@ static void vmmdevLogGuestOsInfo(VBoxGuestInfo *pGuestInfo)
         case VBOXOSTYPE_Win2k12_x64 & ~VBOXOSTYPE_x64:    pszOs = "Windows 2k12";   break;
         case VBOXOSTYPE_Win81:                            pszOs = "Windows 8.1";    break;
         case VBOXOSTYPE_Win10:                            pszOs = "Windows 10";     break;
+        case VBOXOSTYPE_Win2k16_x64 & ~VBOXOSTYPE_x64:    pszOs = "Windows 2k16";   break;
         case VBOXOSTYPE_OS2:                              pszOs = "OS/2";           break;
         case VBOXOSTYPE_OS2Warp3:                         pszOs = "OS/2 Warp 3";    break;
         case VBOXOSTYPE_OS2Warp4:                         pszOs = "OS/2 Warp 4";    break;
diff --git a/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp b/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp
index 26c754c..354f585 100644
--- a/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp
+++ b/src/VBox/Frontends/VBoxBugReport/VBoxBugReport.cpp
@@ -69,13 +69,13 @@ static const char g_szUsage[] =
     "Usage: %s [-h|-?|--help] [-A|--all|<vmname>...] [-o <file>|--output=<file>]\n"
     "   Several VM names can be specified at once to be included into single report.\n"
     "   If none is given then no machines will be included. Specifying -A overrides\n"
-    "   any VM names provided and included all registered machines.\n"
+    "   any VM names provided and includes all registered machines.\n"
     "Options:\n"
     "   -h, -help,    --help     Print usage information\n"
     "   -A, -all,     --all      Include all registered machines\n"
     "   -o, -output,  --output   Specifies the name of the output file\n"
     "   -t, -text,    --text     Produce a single text file instead of compressed TAR\n"
-    "   -V, -version, --version  Print version number and exit\n"
+    "   -V, -version, --version  Print version information\n"
     "\n";
 
 
diff --git a/src/VBox/Frontends/VBoxBugReport/VBoxBugReportWin.cpp b/src/VBox/Frontends/VBoxBugReport/VBoxBugReportWin.cpp
index f2ac315..e171327 100644
--- a/src/VBox/Frontends/VBoxBugReport/VBoxBugReportWin.cpp
+++ b/src/VBox/Frontends/VBoxBugReport/VBoxBugReportWin.cpp
@@ -766,7 +766,10 @@ void createBugReportOsSpecific(BugReport* report, const char *pszHome)
         "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Class\\{4D36E972-E325-11CE-BFC1-08002BE10318}", NULL),
                     new BugReportFilterRegistryWin());
     report->addItem(new BugReportCommandTemp("RegNetwork", PathJoin(WinSysDir.c_str(), "reg.exe"), "export",
-        "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}", NULL),
+        "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Network", NULL),
+                    new BugReportFilterRegistryWin());
+    report->addItem(new BugReportCommandTemp("RegNetFltNobj", PathJoin(WinSysDir.c_str(), "reg.exe"), "export",
+        "HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID\\{f374d1a0-bf08-4bdc-9cb2-c15ddaeef955}", NULL),
                     new BugReportFilterRegistryWin());
     report->addItem(new BugReportUsbTreeWin);
     report->addItem(new BugReportDriversWin);
diff --git a/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp b/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp
index 49b3a16..96b00b0 100644
--- a/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp
+++ b/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp
@@ -37,6 +37,7 @@
 #include <iprt/env.h>
 #include <VBox/err.h>
 #include <iprt/file.h>
+#include <iprt/sha.h>
 #include <iprt/initterm.h>
 #include <iprt/param.h>
 #include <iprt/path.h>
@@ -1117,9 +1118,11 @@ RTEXITCODE handleExtPack(HandlerArg *a)
 
         static const RTGETOPTDEF s_aInstallOptions[] =
         {
-            { "--replace",  'r', RTGETOPT_REQ_NOTHING },
+            { "--replace",        'r', RTGETOPT_REQ_NOTHING },
+            { "--accept-license", 'a', RTGETOPT_REQ_STRING },
         };
 
+        RTCList<RTCString> lstLicenseHashes;
         RTGetOptInit(&GetState, a->argc, a->argv, s_aInstallOptions, RT_ELEMENTS(s_aInstallOptions), 1, 0 /*fFlags*/);
         while ((ch = RTGetOpt(&GetState, &ValueUnion)))
         {
@@ -1129,6 +1132,11 @@ RTEXITCODE handleExtPack(HandlerArg *a)
                     fReplace = true;
                     break;
 
+                case 'a':
+                    lstLicenseHashes.append(ValueUnion.psz);
+                    lstLicenseHashes[lstLicenseHashes.size() - 1].toLower();
+                    break;
+
                 case VINF_GETOPT_NOT_OPTION:
                     if (pszName)
                         return errorSyntax("Too many extension pack names given to \"extpack uninstall\"");
@@ -1152,6 +1160,41 @@ RTEXITCODE handleExtPack(HandlerArg *a)
         ComPtr<IExtPackFile> ptrExtPackFile;
         CHECK_ERROR2I_RET(ptrExtPackMgr, OpenExtPackFile(bstrTarball.raw(), ptrExtPackFile.asOutParam()), RTEXITCODE_FAILURE);
         CHECK_ERROR2I_RET(ptrExtPackFile, COMGETTER(Name)(bstrName.asOutParam()), RTEXITCODE_FAILURE);
+        BOOL fShowLicense = true;
+        CHECK_ERROR2I_RET(ptrExtPackFile, COMGETTER(ShowLicense)(&fShowLicense), RTEXITCODE_FAILURE);
+        if (fShowLicense)
+        {
+            Bstr bstrLicense;
+            CHECK_ERROR2I_RET(ptrExtPackFile,
+                              QueryLicense(Bstr("").raw() /* PreferredLocale */,
+                                           Bstr("").raw() /* PreferredLanguage */,
+                                           Bstr("txt").raw() /* Format */,
+                                           bstrLicense.asOutParam()), RTEXITCODE_FAILURE);
+            Utf8Str strLicense(bstrLicense);
+            uint8_t abHash[RTSHA256_HASH_SIZE];
+            char    szDigest[RTSHA256_DIGEST_LEN + 1];
+            RTSha256(strLicense.c_str(), strLicense.length(), abHash);
+            vrc = RTSha256ToString(abHash, szDigest, sizeof(szDigest));
+            AssertRCStmt(vrc, szDigest[0] = '\0');
+            if (lstLicenseHashes.contains(szDigest))
+                RTPrintf("License accepted.\n");
+            else
+            {
+                RTPrintf("%s\n", strLicense.c_str());
+                RTPrintf("Do you agree to these license terms and conditions (y/n)? " );
+                ch = RTStrmGetCh(g_pStdIn);
+                RTPrintf("\n");
+                if (ch != 'y' && ch != 'Y')
+                {
+                    RTPrintf("Installation of \"%ls\" aborted.\n", bstrName.raw());
+                    return RTEXITCODE_FAILURE;
+                }
+                if (szDigest[0])
+                    RTPrintf("License accepted. For batch installaltion add\n"
+                             "--accept-license=%s\n"
+                             "to the VBoxManage command line.\n\n", szDigest);
+            }
+        }
         ComPtr<IProgress> ptrProgress;
         CHECK_ERROR2I_RET(ptrExtPackFile, Install(fReplace, NULL, ptrProgress.asOutParam()), RTEXITCODE_FAILURE);
         hrc = showProgress(ptrProgress);
diff --git a/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc b/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
index e888149..3c4ab42 100644
--- a/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
+++ b/src/VBox/Frontends/VirtualBox/VirtualBox2.qrc
@@ -4,6 +4,7 @@
         <file alias="os_win10_64.png">images/os_win10_64.png</file>
         <file alias="os_win2k.png">images/os_win2k.png</file>
         <file alias="os_win2k12_64.png">images/os_win2k12_64.png</file>
+        <file alias="os_win2k16_64.png">images/os_win2k16_64.png</file>
         <file alias="os_win2k3.png">images/os_win2k3.png</file>
         <file alias="os_win2k3_64.png">images/os_win2k3_64.png</file>
         <file alias="os_win2k8.png">images/os_win2k8.png</file>
diff --git a/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc b/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc
index b19c720..bbc506a 100644
--- a/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc
+++ b/src/VBox/Frontends/VirtualBox/VirtualBox2_hidpi.qrc
@@ -12,6 +12,7 @@
         <file alias="os_win10_64_hidpi.png">images/hidpi/os_win10_64_hidpi.png</file>
         <file alias="os_win10_hidpi.png">images/hidpi/os_win10_hidpi.png</file>
         <file alias="os_win2k12_64_hidpi.png">images/hidpi/os_win2k12_64_hidpi.png</file>
+        <file alias="os_win2k16_64_hidpi.png">images/hidpi/os_win2k16_64_hidpi.png</file>
         <file alias="os_win2k3_64_hidpi.png">images/hidpi/os_win2k3_64_hidpi.png</file>
         <file alias="os_win2k3_hidpi.png">images/hidpi/os_win2k3_hidpi.png</file>
         <file alias="os_win2k8_64_hidpi.png">images/hidpi/os_win2k8_64_hidpi.png</file>
diff --git a/src/VBox/Frontends/VirtualBox/images/hidpi/os_win2k16_64_hidpi.png b/src/VBox/Frontends/VirtualBox/images/hidpi/os_win2k16_64_hidpi.png
new file mode 100644
index 0000000..c9920a0
Binary files /dev/null and b/src/VBox/Frontends/VirtualBox/images/hidpi/os_win2k16_64_hidpi.png differ
diff --git a/src/VBox/Frontends/VirtualBox/images/os_win2k16_64.png b/src/VBox/Frontends/VirtualBox/images/os_win2k16_64.png
new file mode 100644
index 0000000..f985a6b
Binary files /dev/null and b/src/VBox/Frontends/VirtualBox/images/os_win2k16_64.png differ
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.cpp
index d291a8a..7e3f1bc 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.cpp
@@ -291,6 +291,7 @@ UIIconPoolGeneral::UIIconPoolGeneral()
     m_guestOSTypeIconNames.insert("Windows2012_64",  ":/os_win2k12_64.png");
     m_guestOSTypeIconNames.insert("Windows10",       ":/os_win10.png");
     m_guestOSTypeIconNames.insert("Windows10_64",    ":/os_win10_64.png");
+    m_guestOSTypeIconNames.insert("Windows2016_64",  ":/os_win2k16_64.png");
     m_guestOSTypeIconNames.insert("WindowsNT",       ":/os_win_other.png");
     m_guestOSTypeIconNames.insert("WindowsNT_64",    ":/os_win_other.png"); /// @todo os_win_other_64
     m_guestOSTypeIconNames.insert("OS2Warp3",        ":/os_os2warp3.png");
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
index 0c60594..5bfa61d 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
@@ -232,6 +232,7 @@ VBoxGlobal::VBoxGlobal()
     , m_fVBoxSVCAvailable(true)
     , m_fSeparateProcess(false)
     , m_pMediumEnumerator(0)
+    , m_fEPInstallationRequested(false)
 #ifdef VBOX_WS_X11
     , m_fCompositingManagerRunning(false)
     , m_enmWindowManagerType(X11WMType_Unknown)
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
index 8f2a408..5dfa04e 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
+++ b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
@@ -171,6 +171,11 @@ public:
     QString managedVMUuid() const { return vmUuid; }
     QList<QUrl> &argUrlList() { return m_ArgUrlList; }
 
+    /** Returns whether the Extension Pack installation was requested at startup. */
+    bool isEPInstallationRequested() const { return m_fEPInstallationRequested; }
+    /** Defines whether the Extension Pack installation was @a fRequested at startup. */
+    void setEPInstallationRequested(bool fRequested) { m_fEPInstallationRequested = fRequested; }
+
 #ifdef VBOX_WS_X11
     /** X11: Returns whether the Window Manager we are running at is composition one. */
     bool isCompositingManagerRunning() const { return m_fCompositingManagerRunning; }
@@ -540,6 +545,9 @@ private:
     UIMediumEnumerator *m_pMediumEnumerator;
     mutable QReadWriteLock m_mediumEnumeratorDtorRwLock;
 
+    /** Holds whether the Extension Pack installation was requested at startup. */
+    bool m_fEPInstallationRequested;
+
 #ifdef VBOX_WS_X11
     /** X11: Holds whether the Window Manager we are running at is composition one. */
     bool m_fCompositingManagerRunning;
diff --git a/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp b/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
index 88a2200..41e5ef9 100644
--- a/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/net/UIUpdateManager.cpp
@@ -351,6 +351,13 @@ private slots:
     /* Startup slot: */
     void sltStartStep()
     {
+        /* Return if Selector UI has a direct request to install EP: */
+        if (vboxGlobal().isEPInstallationRequested())
+        {
+            emit sigStepComplete();
+            return;
+        }
+
         /* Return if already downloading: */
         if (UIDownloaderExtensionPack::current())
         {
diff --git a/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.cpp b/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.cpp
index e8a9eeb..a9827bb 100644
--- a/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.cpp
@@ -88,6 +88,9 @@ X11WMType X11WindowManagerType()
                 if (QString((const char*)pcData).contains("KWin", Qt::CaseInsensitive))
                     wmType = X11WMType_KWin;
                 else
+                if (QString((const char*)pcData).contains("Metacity", Qt::CaseInsensitive))
+                    wmType = X11WMType_Metacity;
+                else
                 if (QString((const char*)pcData).contains("Mutter", Qt::CaseInsensitive))
                     wmType = X11WMType_Mutter;
                 else
diff --git a/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.h b/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.h
index b2749b0..fe125c3 100644
--- a/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.h
+++ b/src/VBox/Frontends/VirtualBox/src/platform/x11/VBoxX11Helper.h
@@ -25,6 +25,7 @@ enum X11WMType
     X11WMType_Compiz,
     X11WMType_GNOMEShell,
     X11WMType_KWin,
+    X11WMType_Metacity,
     X11WMType_Mutter,
     X11WMType_Xfwm4,
 };
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
index 01f433e..48bba2b 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
@@ -370,11 +370,16 @@ bool UIKeyboardHandler::finaliseCaptureKeyboard()
          * the keyboard before the target window sees the click. (GNOME Shell's hot corner has
          * the same problem. At present we just let that problem be.) */
 
-         /* Grab the mouse button.
-          * We do not check for failure as we do not currently implement a back-up plan. */
-         xcb_grab_button_checked(QX11Info::connection(), 0, QX11Info::appRootWindow(),
-                                 XCB_EVENT_MASK_BUTTON_PRESS, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC,
-                                 XCB_NONE, XCB_NONE, XCB_BUTTON_INDEX_ANY, XCB_MOD_MASK_ANY);
+        /* Grab the mouse button.
+         * We do not check for failure as we do not currently implement a back-up plan. */
+        /* If any previous grab is still in process, release it. */
+        if (m_hButtonGrabWindow != 0)
+            xcb_ungrab_button_checked(QX11Info::connection(), XCB_BUTTON_INDEX_ANY,
+                                      m_hButtonGrabWindow, XCB_MOD_MASK_ANY);
+        m_hButtonGrabWindow = QX11Info::appRootWindow();
+        xcb_grab_button_checked(QX11Info::connection(), 0, m_hButtonGrabWindow,
+                                XCB_EVENT_MASK_BUTTON_PRESS, XCB_GRAB_MODE_SYNC, XCB_GRAB_MODE_ASYNC,
+                                XCB_NONE, XCB_NONE, XCB_BUTTON_INDEX_ANY, XCB_MOD_MASK_ANY);
         /* And grab the keyboard, using XCB directly, as Qt does not report failure. */
         xcb_grab_keyboard_cookie_t xcbGrabCookie = xcb_grab_keyboard(QX11Info::connection(), false, m_views[m_iKeyboardCaptureViewIndex]->winId(),
                                                                      XCB_TIME_CURRENT_TIME, XCB_GRAB_MODE_ASYNC, XCB_GRAB_MODE_ASYNC);
@@ -384,7 +389,8 @@ bool UIKeyboardHandler::finaliseCaptureKeyboard()
             /* Release the mouse button grab.
              * We do not check for failure as we do not currently implement a back-up plan. */
             xcb_ungrab_button_checked(QX11Info::connection(), XCB_BUTTON_INDEX_ANY,
-                                      QX11Info::appRootWindow(), XCB_MOD_MASK_ANY);
+                                      m_hButtonGrabWindow, XCB_MOD_MASK_ANY);
+            m_hButtonGrabWindow = 0;
             /* Try again later: */
             free(pGrabReply);
             return false;
@@ -486,7 +492,8 @@ void UIKeyboardHandler::releaseKeyboard()
         /* Release the mouse button grab.
          * We do not check for failure as we do not currently implement a back-up plan. */
         xcb_ungrab_button_checked(QX11Info::connection(), XCB_BUTTON_INDEX_ANY,
-                                  QX11Info::appRootWindow(), XCB_MOD_MASK_ANY);
+                                  m_hButtonGrabWindow, XCB_MOD_MASK_ANY);
+        m_hButtonGrabWindow = 0;
 
 # endif /* QT_VERSION >= 0x050000 */
 #else
@@ -1551,7 +1558,11 @@ UIKeyboardHandler::UIKeyboardHandler(UIMachineLogic *pMachineLogic)
     , m_fSkipKeyboardEvents(false)
     , m_keyboardHook(NULL)
     , m_pAltGrMonitor(0)
-#endif /* VBOX_WS_WIN */
+#elif defined(VBOX_WS_X11)
+# if QT_VERSION >= 0x050000
+    , m_hButtonGrabWindow(0)
+# endif
+#endif /* VBOX_WS_X11 */
     , m_cMonitors(1)
 {
     /* Prepare: */
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.h b/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.h
index 012686f..3e33dee 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.h
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.h
@@ -49,7 +49,9 @@ class WinAltGrMonitor;
 #ifdef VBOX_WS_X11
 # if QT_VERSION < 0x050000
 typedef union _XEvent XEvent;
-# endif /* QT_VERSION < 0x050000 */
+#else
+#  include <xcb/xcb.h>
+# endif /* QT_VERSION >= 0x050000 */
 #endif /* VBOX_WS_X11 */
 
 
@@ -242,7 +244,12 @@ protected:
     WinAltGrMonitor *m_pAltGrMonitor;
     /** Win: Holds the keyboard handler reference to be accessible from the keyboard hook. */
     static UIKeyboardHandler *m_spKeyboardHandler;
-#endif /* VBOX_WS_WIN */
+#elif defined(VBOX_WS_X11)
+# if QT_VERSION >= 0x050000
+    /** The root window at the time we grab the mouse buttons. */
+    xcb_window_t m_hButtonGrabWindow;
+# endif
+#endif /* VBOX_WS_X11 */
 
     ULONG m_cMonitors;
 };
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
index 3a3ca14..262b9bd 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
@@ -245,9 +245,6 @@ void UIMachineView::destroy(UIMachineView *pMachineView)
     if (!pMachineView)
         return;
 
-    /* Cleanup filters: */
-    pMachineView->cleanupFilters();
-
     /* Cleanup frame-buffer: */
     pMachineView->cleanupFrameBuffer();
 
@@ -258,6 +255,10 @@ void UIMachineView::destroy(UIMachineView *pMachineView)
         pMachineView->m_pDnDHandler = NULL;
     }
 #endif
+
+    /* Cleanup native filters: */
+    pMachineView->cleanupNativeFilters();
+
     delete pMachineView;
 }
 
@@ -861,20 +862,6 @@ void UIMachineView::prepareConsoleConnections()
     connect(uisession(), SIGNAL(sigMachineStateChange()), this, SLOT(sltMachineStateChanged()));
 }
 
-void UIMachineView::cleanupFilters()
-{
-#if QT_VERSION >= 0x050000
-    /* If native event filter exists: */
-    if (m_pNativeEventFilter)
-    {
-        /* Uninstall/destroy existing native event filter: */
-        qApp->removeNativeEventFilter(m_pNativeEventFilter);
-        delete m_pNativeEventFilter;
-        m_pNativeEventFilter = 0;
-    }
-#endif
-}
-
 void UIMachineView::cleanupFrameBuffer()
 {
     /* Make sure proper framebuffer assigned: */
@@ -904,6 +891,20 @@ void UIMachineView::cleanupFrameBuffer()
     m_pFrameBuffer->setView(NULL);
 }
 
+void UIMachineView::cleanupNativeFilters()
+{
+#if QT_VERSION >= 0x050000
+    /* If native event filter exists: */
+    if (m_pNativeEventFilter)
+    {
+        /* Uninstall/destroy existing native event filter: */
+        qApp->removeNativeEventFilter(m_pNativeEventFilter);
+        delete m_pNativeEventFilter;
+        m_pNativeEventFilter = 0;
+    }
+#endif
+}
+
 UISession* UIMachineView::uisession() const
 {
     return machineWindow()->uisession();
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h b/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h
index 8f70a04..1beb64c 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h
@@ -178,6 +178,7 @@ protected:
 
     /* Prepare routines: */
     virtual void loadMachineViewSettings();
+    //virtual void prepareNativeFilters() {}
     virtual void prepareViewport();
     virtual void prepareFrameBuffer();
     virtual void prepareCommon();
@@ -188,10 +189,11 @@ protected:
     /* Cleanup routines: */
     //virtual void cleanupConsoleConnections() {}
     //virtual void cleanupConnections() {}
-    virtual void cleanupFilters();
+    //virtual void cleanupFilters() {}
     //virtual void cleanupCommon() {}
     virtual void cleanupFrameBuffer();
     //virtual void cleanupViewport();
+    virtual void cleanupNativeFilters();
     //virtual void saveMachineViewSettings() {}
 
     /** Returns the session UI reference. */
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp
index d7dbe18..f45f565 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIMouseHandler.cpp
@@ -687,6 +687,23 @@ bool UIMouseHandler::eventFilter(QObject *pWatched, QEvent *pEvent)
                 }
 #endif /* VBOX_WS_MAC */
                 case QEvent::MouseMove:
+                {
+#ifdef VBOX_WS_MAC
+                    // WORKAROUND:
+                    // Since we are handling mouse move/drag events in the same thread
+                    // where we are painting guest content changes corresponding to those
+                    // events, we can have input event queue overloaded with the move/drag
+                    // events, so we should discard current one if there is subsequent already.
+                    EventTypeSpec list[2];
+                    list[0].eventClass = kEventClassMouse;
+                    list[0].eventKind = kEventMouseMoved;
+                    list[1].eventClass = kEventClassMouse;
+                    list[1].eventKind = kEventMouseDragged;
+                    if (AcquireFirstMatchingEventInQueue(GetCurrentEventQueue(), 2, list,
+                                                         kEventQueueOptionsNone) != NULL)
+                        return true;
+#endif /* VBOX_WS_MAC */
+                }
                 case QEvent::MouseButtonRelease:
                 {
                     /* Get mouse-event: */
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
index 9ca0d4d..7c9d627 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
@@ -285,8 +285,12 @@ bool UISession::powerUp()
         LogRel(("GUI: Aborting startup due to power up issue detected...\n"));
         return false;
     }
-    
+
+    /* Some logging right after we powered up: */
     LogRel(("Qt version: %s\n", VBoxGlobal::qtRTVersionString().toUtf8().constData()));
+#ifdef VBOX_WS_X11
+    LogRel(("X11 Window Manager code: %d\n", (int)vboxGlobal().typeOfWindowManager()));
+#endif
 
     /* Enable 'manual-override',
      * preventing automatic Runtime UI closing
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
index 06c50aa..d96fcb0 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
@@ -23,10 +23,8 @@
 # include <QMenu>
 # include <QTimer>
 # ifdef VBOX_WS_WIN
-#  if QT_VERSION >= 0x050000
-#   include <QWindow>
-#  endif /* QT_VERSION >= 0x050000 */
-# endif /* VBOX_WS_WIN */
+#  include <QWindow>
+# endif
 
 /* GUI includes: */
 # include "VBoxGlobal.h"
@@ -61,9 +59,10 @@ UIMachineWindowFullscreen::UIMachineWindowFullscreen(UIMachineLogic *pMachineLog
     , m_fIsInFullscreenTransition(false)
 #endif /* VBOX_WS_MAC */
     , m_fWasMinimized(false)
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
+    , m_fIsMinimizationRequested(false)
     , m_fIsMinimized(false)
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 {
 }
 
@@ -137,6 +136,14 @@ void UIMachineWindowFullscreen::sltMachineStateChanged()
 
 void UIMachineWindowFullscreen::sltRevokeWindowActivation()
 {
+#ifdef VBOX_WS_X11
+    // WORKAROUND:
+    // We could be asked to minimize already, but just
+    // not yet executed that order to current moment.
+    if (m_fIsMinimizationRequested)
+        return;
+#endif
+
     /* Make sure window is visible: */
     if (!isVisible() || isMinimized())
         return;
@@ -200,6 +207,16 @@ void UIMachineWindowFullscreen::sltExitNativeFullscreen(UIMachineWindow *pMachin
 }
 #endif /* VBOX_WS_MAC */
 
+void UIMachineWindowFullscreen::sltShowMinimized()
+{
+#ifdef VBOX_WS_X11
+    /* Remember that we are asked to minimize: */
+    m_fIsMinimizationRequested = true;
+#endif
+
+    showMinimized();
+}
+
 void UIMachineWindowFullscreen::prepareVisualState()
 {
     /* Call to base-class: */
@@ -262,7 +279,7 @@ void UIMachineWindowFullscreen::prepareMiniToolbar()
         /* Configure mini-toolbar: */
         m_pMiniToolBar->addMenus(actionPool()->menus());
         connect(m_pMiniToolBar, SIGNAL(sigMinimizeAction()),
-                this, SLOT(showMinimized()), Qt::QueuedConnection);
+                this, SLOT(sltShowMinimized()), Qt::QueuedConnection);
         connect(m_pMiniToolBar, SIGNAL(sigExitAction()),
                 actionPool()->action(UIActionIndexRT_M_View_T_Fullscreen), SLOT(trigger()));
         connect(m_pMiniToolBar, SIGNAL(sigCloseAction()),
@@ -355,16 +372,10 @@ void UIMachineWindowFullscreen::placeOnScreen()
 
 #elif defined(VBOX_WS_WIN)
 
-# if QT_VERSION >= 0x050000
     /* Map window onto required screen: */
     windowHandle()->setScreen(qApp->screens().at(iHostScreen));
-# endif /* QT_VERSION >= 0x050000 */
     /* Set appropriate window size: */
     resize(workingArea.size());
-# if QT_VERSION < 0x050000
-    /* Move window onto required screen: */
-    move(workingArea.topLeft());
-# endif /* QT_VERSION < 0x050000 */
 
 #elif defined(VBOX_WS_X11)
 
@@ -544,7 +555,7 @@ void UIMachineWindowFullscreen::updateAppearanceOf(int iElement)
 }
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
 void UIMachineWindowFullscreen::changeEvent(QEvent *pEvent)
 {
     switch (pEvent->type())
@@ -571,6 +582,8 @@ void UIMachineWindowFullscreen::changeEvent(QEvent *pEvent)
                 /* Mark window restored, and do manual restoring with showInNecessaryMode(): */
                 LogRel2(("GUI: UIMachineWindowFullscreen::changeEvent: Window restored\n"));
                 m_fIsMinimized = false;
+                /* Remember that we no more asked to minimize: */
+                m_fIsMinimizationRequested = false;
                 showInNecessaryMode();
             }
             break;
@@ -582,10 +595,9 @@ void UIMachineWindowFullscreen::changeEvent(QEvent *pEvent)
     /* Call to base-class: */
     UIMachineWindow::changeEvent(pEvent);
 }
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif /* VBOX_WS_X11 */
 
 #ifdef VBOX_WS_WIN
-# if QT_VERSION >= 0x050000
 void UIMachineWindowFullscreen::showEvent(QShowEvent *pEvent)
 {
     /* Expose workaround again,
@@ -597,6 +609,5 @@ void UIMachineWindowFullscreen::showEvent(QShowEvent *pEvent)
     /* Call to base-class: */
     UIMachineWindow::showEvent(pEvent);
 }
-# endif /* QT_VERSION >= 0x050000 */
 #endif /* VBOX_WS_WIN */
 
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h b/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h
index 6d6010a..8db5073 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h
@@ -75,6 +75,9 @@ private slots:
     void sltExitNativeFullscreen(UIMachineWindow *pMachineWindow);
 #endif /* RT_OS_DARWIN */
 
+    /** Shows window in minimized state. */
+    void sltShowMinimized();
+
 private:
 
     /** Prepare visual-state routine. */
@@ -101,17 +104,15 @@ private:
     void updateAppearanceOf(int iElement);
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
-    /** Handles @a pEvent about state change. */
+#ifdef VBOX_WS_X11
+    /** X11: Handles @a pEvent about state change. */
     void changeEvent(QEvent *pEvent);
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 
 #ifdef VBOX_WS_WIN
-# if QT_VERSION >= 0x050000
     /** Win: Handles show @a pEvent. */
     void showEvent(QShowEvent *pEvent);
-# endif /* QT_VERSION >= 0x050000 */
-#endif /* VBOX_WS_WIN */
+#endif
 
 #if defined(VBOX_WS_WIN) || defined(VBOX_WS_X11)
     /** Holds the mini-toolbar instance. */
@@ -128,11 +129,14 @@ private:
     /** Holds whether the window was minimized before became hidden.
       * Used to restore minimized state when the window shown again. */
     bool m_fWasMinimized;
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
-    /** Holds whether the window is currently minimized.
+#ifdef VBOX_WS_X11
+    /** X11: Holds whether the window minimization is currently requested.
+      * Used to prevent accidentally restoring to full-screen state. */
+    bool m_fIsMinimizationRequested;
+    /** X11: Holds whether the window is currently minimized.
       * Used to restore full-screen state when the window restored again. */
     bool m_fIsMinimized;
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 
     /** Factory support. */
     friend class UIMachineWindow;
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp
index a2cb357..3d81e93 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.cpp
@@ -51,9 +51,10 @@ UIMachineWindowSeamless::UIMachineWindowSeamless(UIMachineLogic *pMachineLogic,
     , m_pMiniToolBar(0)
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
     , m_fWasMinimized(false)
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
+    , m_fIsMinimizationRequested(false)
     , m_fIsMinimized(false)
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 {
 }
 
@@ -69,6 +70,14 @@ void UIMachineWindowSeamless::sltMachineStateChanged()
 
 void UIMachineWindowSeamless::sltRevokeWindowActivation()
 {
+#ifdef VBOX_WS_X11
+    // WORKAROUND:
+    // We could be asked to minimize already, but just
+    // not yet executed that order to current moment.
+    if (m_fIsMinimizationRequested)
+        return;
+#endif
+
     /* Make sure window is visible: */
     if (!isVisible() || isMinimized())
         return;
@@ -81,6 +90,16 @@ void UIMachineWindowSeamless::sltRevokeWindowActivation()
 }
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
+void UIMachineWindowSeamless::sltShowMinimized()
+{
+#ifdef VBOX_WS_X11
+    /* Remember that we are asked to minimize: */
+    m_fIsMinimizationRequested = true;
+#endif
+
+    showMinimized();
+}
+
 void UIMachineWindowSeamless::prepareVisualState()
 {
     /* Call to base-class: */
@@ -91,19 +110,8 @@ void UIMachineWindowSeamless::prepareVisualState()
     setAttribute(Qt::WA_NoSystemBackground);
 
 #ifdef VBOX_WITH_TRANSLUCENT_SEAMLESS
-# if defined(VBOX_WS_MAC) && QT_VERSION < 0x050000
-    /* Using native API to enable translucent background for the Mac host.
-     * - We also want to disable window-shadows which is possible
-     *   using Qt::WA_MacNoShadow only since Qt 4.8,
-     *   while minimum supported version is 4.7.1 for now: */
-    ::darwinSetShowsWindowTransparent(this, true);
-# else /* !VBOX_WS_MAC || QT_VERSION >= 0x050000 */
-    /* Using Qt API to enable translucent background:
-     * - Under Win host Qt conflicts with 3D stuff (black seamless regions).
-     * - Under Mac host Qt doesn't allows to disable window-shadows
-     *   until version 4.8, but minimum supported version is 4.7.1 for now. */
+    /* Using Qt API to enable translucent background: */
     setAttribute(Qt::WA_TranslucentBackground);
-# endif /* !VBOX_WS_MAC || QT_VERSION >= 0x050000 */
 #endif /* VBOX_WITH_TRANSLUCENT_SEAMLESS */
 
 #ifdef VBOX_WITH_MASKED_SEAMLESS
@@ -135,7 +143,7 @@ void UIMachineWindowSeamless::prepareMiniToolbar()
         /* Configure mini-toolbar: */
         m_pMiniToolBar->addMenus(actionPool()->menus());
         connect(m_pMiniToolBar, SIGNAL(sigMinimizeAction()),
-                this, SLOT(showMinimized()), Qt::QueuedConnection);
+                this, SLOT(sltShowMinimized()), Qt::QueuedConnection);
         connect(m_pMiniToolBar, SIGNAL(sigExitAction()),
                 actionPool()->action(UIActionIndexRT_M_View_T_Seamless), SLOT(trigger()));
         connect(m_pMiniToolBar, SIGNAL(sigCloseAction()),
@@ -184,13 +192,19 @@ void UIMachineWindowSeamless::placeOnScreen()
     const QRect workingArea = gpDesktop->availableGeometry(iHostScreen);
     Q_UNUSED(workingArea);
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
 
     /* Make sure we are located on corresponding host-screen: */
     if (   gpDesktop->screenCount() > 1
         && (x() != workingArea.x() || y() != workingArea.y()))
     {
         // WORKAROUND:
+        // With Qt5 on KDE we can't just move the window onto desired host-screen if
+        // window is maximized. So we have to show it normal first of all:
+        if (isVisible() && isMaximized())
+            showNormal();
+
+        // WORKAROUND:
         // With Qt5 on X11 we can't just move the window onto desired host-screen if
         // window size is more than the available geometry (working area) of that
         // host-screen. So we are resizing it to a smaller size first of all:
@@ -250,7 +264,7 @@ void UIMachineWindowSeamless::showInNecessaryMode()
         /* Make sure window have appropriate geometry: */
         placeOnScreen();
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
         /* Show window: */
         if (!isMaximized())
             showMaximized();
@@ -300,7 +314,7 @@ void UIMachineWindowSeamless::updateAppearanceOf(int iElement)
 }
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
 void UIMachineWindowSeamless::changeEvent(QEvent *pEvent)
 {
     switch (pEvent->type())
@@ -327,6 +341,8 @@ void UIMachineWindowSeamless::changeEvent(QEvent *pEvent)
                 /* Mark window restored, and do manual restoring with showInNecessaryMode(): */
                 LogRel2(("GUI: UIMachineWindowSeamless::changeEvent: Window restored\n"));
                 m_fIsMinimized = false;
+                /* Remember that we no more asked to minimize: */
+                m_fIsMinimizationRequested = false;
                 showInNecessaryMode();
             }
             break;
@@ -338,10 +354,9 @@ void UIMachineWindowSeamless::changeEvent(QEvent *pEvent)
     /* Call to base-class: */
     UIMachineWindow::changeEvent(pEvent);
 }
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif /* VBOX_WS_X11 */
 
 #ifdef VBOX_WS_WIN
-# if QT_VERSION >= 0x050000
 void UIMachineWindowSeamless::showEvent(QShowEvent *pEvent)
 {
     /* Expose workaround again,
@@ -353,7 +368,6 @@ void UIMachineWindowSeamless::showEvent(QShowEvent *pEvent)
     /* Call to base-class: */
     UIMachineWindow::showEvent(pEvent);
 }
-# endif /* QT_VERSION >= 0x050000 */
 #endif /* VBOX_WS_WIN */
 
 #ifdef VBOX_WITH_MASKED_SEAMLESS
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h b/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h
index 10724c8..25a3249 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/seamless/UIMachineWindowSeamless.h
@@ -47,6 +47,9 @@ private slots:
     void sltRevokeWindowActivation();
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
+    /** Shows window in minimized state. */
+    void sltShowMinimized();
+
 private:
 
     /** Prepare visual-state routine. */
@@ -73,17 +76,15 @@ private:
     void updateAppearanceOf(int iElement);
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
-    /** Handles @a pEvent about state change. */
+#ifdef VBOX_WS_X11
+    /** X11: Handles @a pEvent about state change. */
     void changeEvent(QEvent *pEvent);
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 
 #ifdef VBOX_WS_WIN
-# if QT_VERSION >= 0x050000
     /** Win: Handles show @a pEvent. */
     void showEvent(QShowEvent *pEvent);
-# endif /* QT_VERSION >= 0x050000 */
-#endif /* VBOX_WS_WIN */
+#endif
 
 #ifdef VBOX_WITH_MASKED_SEAMLESS
     /** Assigns guest seamless mask. */
@@ -105,11 +106,14 @@ private:
     /** Holds whether the window was minimized before became hidden.
       * Used to restore minimized state when the window shown again. */
     bool m_fWasMinimized;
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
-    /** Holds whether the window is currently minimized.
+#ifdef VBOX_WS_X11
+    /** X11: Holds whether the window minimization is currently requested.
+      * Used to prevent accidentally restoring to seamless state. */
+    bool m_fIsMinimizationRequested;
+    /** X11: Holds whether the window is currently minimized.
       * Used to restore maximized state when the window restored again. */
     bool m_fIsMinimized;
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 
     /** Factory support. */
     friend class UIMachineWindow;
diff --git a/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp b/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
index 0b47b58..4bd1c57 100644
--- a/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
@@ -374,7 +374,12 @@ void UISelectorWindow::sltOpenUrls(QList<QUrl> list /* = QList<QUrl>() */)
             }
             else if (VBoxGlobal::hasAllowedExtension(strFile, VBoxExtPackFileExts))
             {
+                /* Prevent update manager from proposing us to update EP: */
+                vboxGlobal().setEPInstallationRequested(true);
+                /* Propose the user to install EP described by the arguments @a list. */
                 UIGlobalSettingsExtension::doInstallation(strFile, QString(), this, NULL);
+                /* Allow update manager to propose us to update EP: */
+                vboxGlobal().setEPInstallationRequested(false);
             }
         }
     }
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp
index 6edf74d..43f9ef3 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp
@@ -1141,7 +1141,9 @@ UIApplianceEditorWidget::UIApplianceEditorWidget(QWidget *pParent /* = NULL */)
 
 void UIApplianceEditorWidget::restoreDefaults()
 {
-    m_pModel->restoreDefaults();
+    /* Make sure model exists, it's being created in sub-classes: */
+    if (m_pModel)
+        m_pModel->restoreDefaults();
 }
 
 void UIApplianceEditorWidget::retranslateUi()
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp
index a9824b6..eac3b9e 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2009-2016 Oracle Corporation
+ * Copyright (C) 2009-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -29,12 +29,10 @@
 # include <QToolButton>
 # include <QStateMachine>
 # include <QPainter>
-# ifdef VBOX_WS_WIN
-#  include <QWindow>
-# endif /* VBOX_WS_WIN */
-# if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+# include <QWindow>
+# ifdef VBOX_WS_X11
 #  include <QWindowStateChangeEvent>
-# endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+# endif
 
 /* GUI includes: */
 # include "UIMiniToolBar.h"
@@ -48,6 +46,7 @@
 
 #endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
 
+
 /** UIToolBar reimplementation
   * providing UIMiniToolBar with mini-toolbar. */
 class UIMiniToolBarPrivate : public UIToolBar
@@ -133,6 +132,11 @@ private:
     QList<QWidget*> m_margins;
 };
 
+
+/*********************************************************************************************************************************
+*   Class UIMiniToolBarPrivate implementation.                                                                                   *
+*********************************************************************************************************************************/
+
 UIMiniToolBarPrivate::UIMiniToolBarPrivate()
     /* Variables: General stuff: */
     : m_fPolished(false)
@@ -389,6 +393,11 @@ void UIMiniToolBarPrivate::rebuildShape()
     update();
 }
 
+
+/*********************************************************************************************************************************
+*   Class UIMiniToolBar implementation.                                                                                          *
+*********************************************************************************************************************************/
+
 /* static */
 Qt::WindowFlags UIMiniToolBar::defaultWindowFlags(GeometryType geometryType)
 {
@@ -400,27 +409,31 @@ Qt::WindowFlags UIMiniToolBar::defaultWindowFlags(GeometryType geometryType)
     switch (vboxGlobal().typeOfWindowManager())
     {
         // WORKAROUND:
-        // Frameless top-level window for Unity(Compiz) full-screen mode,
-        // otherwise we have Unity panel and menu-bar visible in full-screen mode.
-        // Frameless top-level tool-window for Unity(Compiz) seamless mode,
-        // otherwise we have Unity panel and menu-bar hidden in seamless mode.
-        case X11WMType_Compiz: return geometryType == GeometryType_Full ?
-                                      Qt::Window | Qt::FramelessWindowHint :
-                                      Qt::Tool | Qt::FramelessWindowHint;
+        // By strange reason, frameless full-screen windows under certain WMs
+        // do not respect the transient relationship between each other.
+        // By nor less strange reason, frameless full-screen *tool* windows
+        // respects such relationship, so we are doing what WM want.
+        case X11WMType_GNOMEShell:
+        case X11WMType_Metacity:
+        case X11WMType_Mutter:
+            return geometryType == GeometryType_Full ?
+                   Qt::Tool | Qt::FramelessWindowHint :
+                   Qt::Window | Qt::FramelessWindowHint;
         default: break;
     }
 #endif /* VBOX_WS_X11 */
 
-    /* Frameless tool window by default: */
-    return Qt::Tool | Qt::FramelessWindowHint;
+    /* Frameless window by default: */
+    return Qt::Window | Qt::FramelessWindowHint;
 }
 
 UIMiniToolBar::UIMiniToolBar(QWidget *pParent,
                              GeometryType geometryType,
                              Qt::Alignment alignment,
                              bool fAutoHide /* = true */)
-    : QWidget(pParent, defaultWindowFlags(geometryType))
+    : QWidget(0, defaultWindowFlags(geometryType))
     /* Variables: General stuff: */
+    , m_pParent(pParent)
     , m_geometryType(geometryType)
     , m_alignment(alignment)
     , m_fAutoHide(fAutoHide)
@@ -433,9 +446,9 @@ UIMiniToolBar::UIMiniToolBar(QWidget *pParent,
     , m_pHoverEnterTimer(0)
     , m_pHoverLeaveTimer(0)
     , m_pAnimation(0)
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
     , m_fIsParentMinimized(false)
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 {
     /* Prepare: */
     prepare();
@@ -538,9 +551,6 @@ void UIMiniToolBar::adjustGeometry()
     /* Adjust window mask: */
     setMask(m_pEmbeddedToolbar->geometry());
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
-
-    /* Simulate toolbar auto-hiding: */
-    simulateToolbarAutoHiding();
 }
 
 void UIMiniToolBar::sltHandleToolbarResize()
@@ -606,6 +616,9 @@ void UIMiniToolBar::sltShow()
 {
     LogRel2(("GUI: UIMiniToolBar::sltShow\n"));
 
+    /* Update transience: */
+    sltAdjustTransience();
+
 #if defined(VBOX_WS_MAC)
 
     // Nothing
@@ -617,8 +630,18 @@ void UIMiniToolBar::sltShow()
     /* Show window in necessary mode: */
     switch (m_geometryType)
     {
-        case GeometryType_Available: show(); break;
-        case GeometryType_Full:      showFullScreen(); break;
+        case GeometryType_Available:
+        {
+            /* Show normal: */
+            show();
+            break;
+        }
+        case GeometryType_Full:
+        {
+            /* Show full-screen: */
+            showFullScreen();
+            break;
+        }
     }
 
 #elif defined(VBOX_WS_X11)
@@ -626,17 +649,33 @@ void UIMiniToolBar::sltShow()
     /* Show window in necessary mode: */
     switch (m_geometryType)
     {
-        case GeometryType_Available: show(); break;
-        case GeometryType_Full:      showFullScreen(); break;
+        case GeometryType_Available:
+        {
+            /* Adjust window: */
+            sltAdjust();
+            /* Show maximized: */
+            if (!isMaximized())
+                showMaximized();
+            break;
+        }
+        case GeometryType_Full:
+        {
+            /* Show full-screen: */
+            showFullScreen();
+            /* Adjust window: */
+            sltAdjust();
+            break;
+        }
     }
-    /* Adjust window: */
-    sltAdjust();
 
 #else
 
 # warning "port me"
 
 #endif
+
+    /* Simulate toolbar auto-hiding: */
+    simulateToolbarAutoHiding();
 }
 
 void UIMiniToolBar::sltAdjust()
@@ -644,7 +683,7 @@ void UIMiniToolBar::sltAdjust()
     LogRel2(("GUI: UIMiniToolBar::sltAdjust\n"));
 
     /* Get corresponding host-screen: */
-    const int iHostScreen = gpDesktop->screenNumber(parentWidget());
+    const int iHostScreen = gpDesktop->screenNumber(m_pParent);
     Q_UNUSED(iHostScreen);
     /* And corresponding working area: */
     QRect workingArea;
@@ -665,45 +704,100 @@ void UIMiniToolBar::sltAdjust()
     {
         case GeometryType_Available:
         {
-            /* Set appropriate window geometry: */
-            resize(workingArea.size());
-            move(workingArea.topLeft());
+            /* Set appropriate window size: */
+            const QSize newSize = workingArea.size();
+            LogRel2(("GUI: UIMiniToolBar::sltAdjust: Resize window to: %dx%d\n",
+                     newSize.width(), newSize.height()));
+            resize(newSize);
+
+            /* Move window onto required screen: */
+            const QPoint newPosition = workingArea.topLeft();
+            LogRel2(("GUI: UIMiniToolBar::sltAdjust: Move window to: %dx%d\n",
+                     newPosition.x(), newPosition.y()));
+            move(newPosition);
+
             break;
         }
         case GeometryType_Full:
         {
-# if QT_VERSION >= 0x050000
             /* Map window onto required screen: */
-            Assert(iHostScreen < qApp->screens().size());
+            LogRel2(("GUI: UIMiniToolBar::sltAdjust: Map window to screen: %d of: %d\n",
+                     iHostScreen, qApp->screens().size()));
             windowHandle()->setScreen(qApp->screens().at(iHostScreen));
-# endif /* QT_VERSION >= 0x050000 */
+
             /* Set appropriate window size: */
-            resize(workingArea.size());
-# if QT_VERSION < 0x050000
-            /* Move window onto required screen: */
-            move(workingArea.topLeft());
-# endif /* QT_VERSION < 0x050000 */
+            const QSize newSize = workingArea.size();
+            LogRel2(("GUI: UIMiniToolBar::sltAdjust: Resize window to: %dx%d\n",
+                     newSize.width(), newSize.height()));
+            resize(newSize);
+
             break;
         }
     }
 
 #elif defined(VBOX_WS_X11)
 
-    /* Determine whether we should use the native full-screen mode: */
-    const bool fUseNativeFullScreen = VBoxGlobal::supportsFullScreenMonitorsProtocolX11() &&
-                                      !gEDataManager->legacyFullscreenModeRequested();
-    if (fUseNativeFullScreen)
+    switch (m_geometryType)
     {
-        /* Tell recent window managers which host-screen this window should be mapped to: */
-        VBoxGlobal::setFullScreenMonitorX11(this, iHostScreen);
-    }
+        case GeometryType_Available:
+        {
+            /* Make sure we are located on corresponding host-screen: */
+            if (   gpDesktop->screenCount() > 1
+                && (x() != workingArea.x() || y() != workingArea.y()))
+            {
+                // WORKAROUND:
+                // With Qt5 on KDE we can't just move the window onto desired host-screen if
+                // window is maximized. So we have to show it normal first of all:
+                if (isVisible() && isMaximized())
+                    showNormal();
+
+                // WORKAROUND:
+                // With Qt5 on X11 we can't just move the window onto desired host-screen if
+                // window size is more than the available geometry (working area) of that
+                // host-screen. So we are resizing it to a smaller size first of all:
+                const QSize newSize = workingArea.size() * .9;
+                LogRel(("GUI: UIMiniToolBar::sltAdjust: Resize window to smaller size: %dx%d\n",
+                        newSize.width(), newSize.height()));
+                resize(newSize);
+
+                /* Move window onto required screen: */
+                const QPoint newPosition = workingArea.topLeft();
+                LogRel(("GUI: UIMiniToolBar::sltAdjust: Move window to: %dx%d\n",
+                        newPosition.x(), newPosition.y()));
+                move(newPosition);
+            }
+
+            break;
+        }
+        case GeometryType_Full:
+        {
+            /* Determine whether we should use the native full-screen mode: */
+            const bool fUseNativeFullScreen = VBoxGlobal::supportsFullScreenMonitorsProtocolX11() &&
+                                              !gEDataManager->legacyFullscreenModeRequested();
+            if (fUseNativeFullScreen)
+            {
+                /* Tell recent window managers which host-screen this window should be mapped to: */
+                VBoxGlobal::setFullScreenMonitorX11(this, iHostScreen);
+            }
+
+            /* Set appropriate window size: */
+            const QSize newSize = workingArea.size();
+            LogRel(("GUI: UIMiniToolBar::sltAdjust: Resize window to: %dx%d\n",
+                    newSize.width(), newSize.height()));
+            resize(newSize);
+
+            /* Move window onto required screen: */
+            const QPoint newPosition = workingArea.topLeft();
+            LogRel(("GUI: UIMiniToolBar::sltAdjust: Move window to: %dx%d\n",
+                    newPosition.x(), newPosition.y()));
+            move(newPosition);
 
-    /* Set appropriate window geometry: */
-    resize(workingArea.size());
-    move(workingArea.topLeft());
+            /* Re-apply the full-screen state lost on above move(): */
+            setWindowState(Qt::WindowFullScreen);
 
-    /* Re-apply the full-screen state lost on above move(): */
-    setWindowState(Qt::WindowFullScreen);
+            break;
+        }
+    }
 
 #else
 
@@ -712,11 +806,23 @@ void UIMiniToolBar::sltAdjust()
 #endif
 }
 
+void UIMiniToolBar::sltAdjustTransience()
+{
+    // WORKAROUND:
+    // Make sure win id is generated,
+    // else Qt5 can crash otherwise.
+    winId();
+    m_pParent->winId();
+
+    /* Add the transience dependency: */
+    windowHandle()->setTransientParent(m_pParent->windowHandle());
+}
+
 void UIMiniToolBar::prepare()
 {
     /* Install event-filters: */
     installEventFilter(this);
-    parent()->installEventFilter(this);
+    m_pParent->installEventFilter(this);
 
 #if   defined(VBOX_WS_WIN)
     /* No background until first paint-event: */
@@ -895,35 +1001,8 @@ bool UIMiniToolBar::eventFilter(QObject *pWatched, QEvent *pEvent)
 #endif /* VBOX_WS_X11 */
     }
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
-    /* If that's window event: */
-    if (pWatched == this)
-    {
-        switch (pEvent->type())
-        {
-            case QEvent::WindowStateChange:
-            {
-                /* Watch for window state changes: */
-                QWindowStateChangeEvent *pChangeEvent = static_cast<QWindowStateChangeEvent*>(pEvent);
-                LogRel2(("GUI: UIMiniToolBar::eventFilter: Window state changed from %d to %d\n",
-                         (int)pChangeEvent->oldState(), (int)windowState()));
-                if (   windowState() != Qt::WindowMinimized
-                    && pChangeEvent->oldState() == Qt::WindowMinimized)
-                {
-                    /* Asynchronously call for sltShow(): */
-                    LogRel2(("GUI: UIMiniToolBar::eventFilter: Window restored\n"));
-                    QMetaObject::invokeMethod(this, "sltShow", Qt::QueuedConnection);
-                }
-                break;
-            }
-            default:
-                break;
-        }
-    }
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
-
     /* If that's parent window event: */
-    if (pWatched == parent())
+    if (pWatched == m_pParent)
     {
         switch (pEvent->type())
         {
@@ -955,7 +1034,7 @@ bool UIMiniToolBar::eventFilter(QObject *pWatched, QEvent *pEvent)
             case QEvent::Resize:
             {
                 /* Skip if parent or we are invisible: */
-                if (   !parentWidget()->isVisible()
+                if (   !m_pParent->isVisible()
                     || !isVisible())
                     break;
                 /* Skip if parent or we are minimized: */
@@ -963,44 +1042,58 @@ bool UIMiniToolBar::eventFilter(QObject *pWatched, QEvent *pEvent)
                     || isMinimized())
                     break;
 
-#if   defined(VBOX_WS_MAC)
-                // Nothing
-#elif defined(VBOX_WS_WIN)
-                /* Asynchronously call for sltShow() to adjust and expose both: */
+                /* Asynchronously call for sltShow(): */
                 LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent move/resize event\n"));
                 QMetaObject::invokeMethod(this, "sltShow", Qt::QueuedConnection);
-#elif defined(VBOX_WS_X11)
-                /* Asynchronously call for just sltAdjust() because it's enough: */
-                LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent move/resize event\n"));
-                QMetaObject::invokeMethod(this, "sltAdjust", Qt::QueuedConnection);
-#else
-# warning "port me"
-#endif
                 break;
             }
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
             case QEvent::WindowStateChange:
             {
                 /* Watch for parent window state changes: */
                 QWindowStateChangeEvent *pChangeEvent = static_cast<QWindowStateChangeEvent*>(pEvent);
                 LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent window state changed from %d to %d\n",
-                         (int)pChangeEvent->oldState(), (int)parentWidget()->windowState()));
-                if (parentWidget()->windowState() & Qt::WindowMinimized)
+                         (int)pChangeEvent->oldState(), (int)m_pParent->windowState()));
+
+                if (   m_pParent->windowState() & Qt::WindowMinimized
+                    && !m_fIsParentMinimized)
                 {
                     /* Mark parent window minimized, isMinimized() is not enough due to Qt5vsX11 fight: */
-                    LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent window minimized\n"));
+                    LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent window is minimized\n"));
                     m_fIsParentMinimized = true;
                 }
                 else
-                if (parentWidget()->windowState() == Qt::WindowFullScreen)
+                if (m_fIsParentMinimized)
                 {
-                    /* Mark parent window non-minimized, isMinimized() is not enough due to Qt5vsX11 fight: */
-                    LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent window is full-screen\n"));
-                    m_fIsParentMinimized = false;
+                    switch (m_geometryType)
+                    {
+                        case GeometryType_Available:
+                        {
+                            if (   m_pParent->windowState() == Qt::WindowMaximized
+                                && pChangeEvent->oldState() == Qt::WindowNoState)
+                            {
+                                /* Mark parent window non-minimized, isMinimized() is not enough due to Qt5vsX11 fight: */
+                                LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent window is maximized\n"));
+                                m_fIsParentMinimized = false;
+                            }
+                            break;
+                        }
+                        case GeometryType_Full:
+                        {
+                            if (   m_pParent->windowState() == Qt::WindowFullScreen
+                                && pChangeEvent->oldState() == Qt::WindowNoState)
+                            {
+                                /* Mark parent window non-minimized, isMinimized() is not enough due to Qt5vsX11 fight: */
+                                LogRel2(("GUI: UIMiniToolBar::eventFilter: Parent window is full-screen\n"));
+                                m_fIsParentMinimized = false;
+                            }
+                            break;
+                        }
+                    }
                 }
                 break;
             }
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif /* VBOX_WS_X11 */
             default:
                 break;
         }
@@ -1045,11 +1138,11 @@ QPoint UIMiniToolBar::toolbarPosition() const
 
 bool UIMiniToolBar::isParentMinimized() const
 {
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+#ifdef VBOX_WS_X11
     return m_fIsParentMinimized;
-#else /* !VBOX_WS_X11 || QT_VERSION < 0x050000 */
-    return parentWidget()->isMinimized();
-#endif /* !VBOX_WS_X11 || QT_VERSION < 0x050000 */
+#else
+    return m_pParent->isMinimized();
+#endif
 }
 
 #include "UIMiniToolBar.moc"
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.h b/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.h
index d47122b..628395f 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.h
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2009-2016 Oracle Corporation
+ * Copyright (C) 2009-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -37,6 +37,7 @@ enum GeometryType
     GeometryType_Full
 };
 
+
 /** QWidget reimplementation
   * providing GUI with slideable mini-toolbar used in full-screen/seamless modes. */
 class UIMiniToolBar : public QWidget
@@ -120,6 +121,8 @@ private slots:
     void sltShow();
     /** Adjusts window according to parent. */
     void sltAdjust();
+    /** Adjusts window transience according to parent. */
+    void sltAdjustTransience();
 
 private:
 
@@ -155,6 +158,9 @@ private:
     /** Returns whether the parent is currently minimized. */
     bool isParentMinimized() const;
 
+    /** Holds the parent reference. */
+    QWidget *m_pParent;
+
     /** Holds the geometry type. */
     const GeometryType m_geometryType;
     /** Holds the alignment type. */
@@ -183,11 +189,12 @@ private:
     /** Holds the animation framework object. */
     UIAnimation *m_pAnimation;
 
-#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
-    /** Holds whether the parent is currently minimized.
-      * Used to restore full-screen state when the parent restored again. */
+#ifdef VBOX_WS_X11
+    /** X11: Holds whether the parent is currently minimized.
+      * Used to restore the full-screen/maximized state
+      * when the parent restored again. */
     bool m_fIsParentMinimized;
-#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+#endif
 };
 
 #endif /* !___UIMiniToolBar_h___ */
diff --git a/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp b/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp
index 7827e8e..5d66224 100644
--- a/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/wizards/newvm/UIWizardNewVMPageBasic1.cpp
@@ -64,6 +64,7 @@ static const osTypePattern gs_OSTypePattern[] =
     { QRegExp("((Wi.*2003)|(W2K3)|(Win2K3)).*32", Qt::CaseInsensitive), "Windows2003" },
     { QRegExp("((Wi.*Vis)|(Vista)).*64",          Qt::CaseInsensitive), "WindowsVista_64" },
     { QRegExp("((Wi.*Vis)|(Vista)).*32",          Qt::CaseInsensitive), "WindowsVista" },
+    { QRegExp( "(Wi.*2016)|(W2K16)|(Win2K16)",    Qt::CaseInsensitive), "Windows2016_64" },
     { QRegExp( "(Wi.*2012)|(W2K12)|(Win2K12)",    Qt::CaseInsensitive), "Windows2012_64" },
     { QRegExp("((Wi.*2008)|(W2K8)|(Win2k8)).*64", Qt::CaseInsensitive), "Windows2008_64" },
     { QRegExp("((Wi.*2008)|(W2K8)|(Win2K8)).*32", Qt::CaseInsensitive), "Windows2008" },
diff --git a/src/VBox/HostDrivers/Makefile.kmk b/src/VBox/HostDrivers/Makefile.kmk
index 197ae6c..0647806 100644
--- a/src/VBox/HostDrivers/Makefile.kmk
+++ b/src/VBox/HostDrivers/Makefile.kmk
@@ -55,6 +55,40 @@ if  !defined(VBOX_ONLY_DOCS) \
 
 endif # !defined(VBOX_ONLY_DOCS) && !defined(VBOX_ONLY_VALIDATIONKIT)
 
+
+#
+# Build test for the linux host kernel modules.
+#
+if   defined(VBOX_WITH_TESTCASES) \
+ && !defined(VBOX_ONLY_SDK) \
+ && !defined(VBOX_ONLY_DOCS) \
+ && !defined(VBOX_ONLY_VALIDATIONKIT) \
+ && "$(KBUILD_TARGET)" == "linux" \
+ && "$(KBUILD_HOST_ARCH)" == "$(KBUILD_TARGET_ARCH)"
+ VBOX_LNX_MOD_TEST        = $(PATH_TARGET)/tsthost_mod
+ VBOX_LNX_MOD_TEST_TARGET = $(PATH_TARGET)/tsthost_mod.run
+ TESTING     += $(VBOX_LNX_MOD_TEST_TARGET)
+ OTHERS      += $(VBOX_LNX_MOD_TEST_TARGET)
+ OTHER_CLEAN += $(VBOX_LNX_MOD_TEST_TARGET)
+ $$(VBOX_LNX_MOD_TEST_TARGET): \
+ 		$$(vboxdrv-mod_2_STAGE_TARGETS) \
+ 		$$(VBoxNetFlt-src_2_STAGE_TARGETS) \
+ 		$$(VBoxNetAdp-src_2_STAGE_TARGETS) \
+ 		$$(VBoxPci-src_2_STAGE_TARGETS) \
+		$$(HostDrivers-scripts_2_STAGE_TARGETS)
+	$(QUIET)$(call MSG_L1,Doing a test build of the host kernel modules)
+	$(QUIET)$(RM) -f -- "$@"
+	$(QUIET)$(RM) -Rf -- "$(VBOX_LNX_MOD_TEST)"
+	$(QUIET)$(MKDIR) -p -- "$(VBOX_LNX_MOD_TEST)"
+	$(QUIET)$(CP) -R -- "$(PATH_STAGE_BIN)/src/" "$(VBOX_LNX_MOD_TEST)/"
+	+ $(QUIET)make -C $(VBOX_LNX_MOD_TEST) clean
+	+ $(QUIET)make -C $(VBOX_LNX_MOD_TEST)
+	$(QUIET)$(RM) -Rf -- $(VBOX_LNX_MOD_TEST)
+	$(QUIET)$(APPEND) -t "$@" "done"
+
+endif
+
+
 # Let kBuild generate the rules.
 include $(FILE_KBUILD_SUB_FOOTER)
 
diff --git a/src/VBox/HostDrivers/Support/Makefile.kmk b/src/VBox/HostDrivers/Support/Makefile.kmk
index 5ffd78d..8c32589 100644
--- a/src/VBox/HostDrivers/Support/Makefile.kmk
+++ b/src/VBox/HostDrivers/Support/Makefile.kmk
@@ -331,12 +331,15 @@ if "$(KBUILD_TARGET)" == "win" && defined(VBOX_WITH_HARDENING) ## @todo some of
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/memmove.asm \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/mempcpy.asm \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/memset.asm \
+	$(VBOX_PATH_RUNTIME_SRC)/common/string/strversion.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTStrPrintHexBytes.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTStrCat.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTStrCmp.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTStrCopy.cpp \
+	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTStrICmpAscii.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTStrNCmp.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTStrNLen.cpp \
+	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTUtf16Copy.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/RTUtf16NLenEx.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/strchr.asm \
 	$(VBOX_PATH_RUNTIME_SRC)/common/string/strcmp.asm \
@@ -361,6 +364,7 @@ if "$(KBUILD_TARGET)" == "win" && defined(VBOX_WITH_HARDENING) ## @todo some of
 	$(VBOX_PATH_RUNTIME_SRC)/generic/RTPathAbs-generic.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/generic/RTPathGetCurrentDrive-generic.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/generic/RTPathGetCurrentOnDrive-generic.cpp \
+	$(VBOX_PATH_RUNTIME_SRC)/generic/rtStrFormatKernelAddress-generic.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/generic/memsafer-generic.cpp \
 	$(VBOX_PATH_RUNTIME_SRC)/generic/uuid-generic.cpp \
        \
@@ -411,6 +415,35 @@ if "$(KBUILD_TARGET)" == "win" && defined(VBOX_WITH_HARDENING) ## @todo some of
  endif
 endif
 
+# Things specific to the posix crowd.
+if1of ($(KBUILD_TARGET), linux darwin solaris)
+ SUPR3HardenedStatic_DEFS += \
+ 	IN_DIS \
+ 	DIS_CORE_ONLY \
+ 	LOG_DISABLED
+ SUPR3HardenedStatic_DEFS.linux += \
+ 	SUP_HARDENED_WITH_DLMOPEN
+ SUPR3HardenedStatic_DEFS.solaris += \
+ 	SUP_HARDENED_WITH_DLMOPEN
+
+ SUPR3HardenedStatic_INCS += $(VBOX_PATH_RUNTIME_SRC)/include
+
+ SUPR3HardenedStatic_SOURCES += \
+ 	posix/SUPR3HardenedMain-posix.cpp \
+	posix/SUPR3HardenedMainA-posix.asm \
+       \
+ 	$(VBOX_PATH_RUNTIME_SRC)/common/misc/RTAssertMsg1Weak.cpp \
+ 	$(VBOX_PATH_RUNTIME_SRC)/common/misc/RTAssertMsg2.cpp \
+ 	$(VBOX_PATH_RUNTIME_SRC)/common/misc/RTAssertMsg2Weak.cpp \
+ 	$(VBOX_PATH_RUNTIME_SRC)/common/misc/RTAssertMsg2WeakV.cpp \
+ 	$(VBOX_PATH_RUNTIME_SRC)/generic/RTAssertShouldPanic-generic.cpp \
+       \
+ 	../../Disassembler/DisasmCore.cpp \
+ 	../../Disassembler/DisasmTables.cpp \
+ 	../../Disassembler/DisasmTablesX64.cpp \
+ 	../../Disassembler/DisasmReg.cpp
+endif
+
 SUPR3HardenedMain.cpp_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV)
 
 
@@ -543,13 +576,12 @@ endif # os2
 #
 # New VBoxDrv target. TODO: Convert all the above to use this!
 #
-if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
+if1of ($(KBUILD_TARGET), darwin freebsd solaris win)
  ifdef VBOX_WITH_VBOXDRV
   SYSMODS += VBoxDrv
  endif
  VBoxDrv_TEMPLATE         = VBOXR0DRV
  VBoxDrv_NAME.freebsd     = vboxdrv
- VBoxDrv_NAME.linux       = vboxdrv
  VBoxDrv_NAME.solaris     = vboxdrv
  ifdef VBOX_SIGNING_MODE
   VBoxDrv_INSTTYPE.win    = none
@@ -575,11 +607,6 @@ if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
  ifdef VBOX_WITH_RAW_MODE
   VBoxDrv_DEFS.darwin    += VBOX_WITH_RAW_MODE
  endif
- VBoxDrv_DEFS.linux      := \
-	KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) MODULE CONFIG_VBOXDRV_AS_MISC
- ifdef VBOX_LINUX_VERSION_2_4
-  VBoxDrv_DEFS.linux     += EXPORT_SYMTAB
- endif
  ifdef VBOX_WITH_NETFLT
   VBoxDrv_DEFS.solaris   += VBOX_WITH_NETFLT
  endif
@@ -601,10 +628,8 @@ if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
 
  VBoxDrv_INCS             = . $(VBoxDrv_0_OUTDIR)
  VBoxDrv_INCS.darwin      = ./darwin
- VBoxDrv_INCS.linux       = $(PATH_ROOT)/src/VBox/Runtime/r0drv/linux
 
  VBoxDrv_LIBS             = $(PATH_STAGE_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
- VBoxDrv_LIBS.linux.debug = $(VBoxDrv_LIBS) $(VBOX_GCC_LIBGCC)
  VBoxDrv_LIBS.win         = \
  	$(PATH_STAGE_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB) \
  	$(PATH_SDK_$(VBOX_WINDDK)_LIB)/ntoskrnl.lib \
@@ -621,8 +646,6 @@ if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
 
  VBoxDrv_SOURCES.darwin   = \
 	darwin/SUPDrv-darwin.cpp
- VBoxDrv_SOURCES.linux    = \
-	linux/SUPDrv-linux.c
  VBoxDrv_SOURCES.solaris  = \
 	solaris/SUPDrv-solaris.c
  VBoxDrv_SOURCES.win      = \
@@ -651,10 +674,6 @@ if1of ($(KBUILD_TARGET), darwin freebsd linux solaris win)
   VBoxDrv_SOURCES        += \
  	SUPDrvTracerA.asm
  endif
- ifndef VBOX_LINUX_VERSION_2_4
-  VBoxDrv_SOURCES.linux  += \
- 	linux/SUPDrv-linux.mod.c
- endif
 
  linux/SUPDrv-linux.c_DEPS = $(VBOX_SVN_REV_HEADER)
 
diff --git a/src/VBox/HostDrivers/Support/SUPDrv.cpp b/src/VBox/HostDrivers/Support/SUPDrv.cpp
index 39c41c3..1fb0e8e 100644
--- a/src/VBox/HostDrivers/Support/SUPDrv.cpp
+++ b/src/VBox/HostDrivers/Support/SUPDrv.cpp
@@ -849,8 +849,9 @@ static void supdrvCleanupSession(PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession)
 
     Assert(!pSession->fInHashTable);
     Assert(!pSession->ppOsSessionPtr);
-    AssertReleaseMsg(pSession->R0Process == RTR0ProcHandleSelf() || pSession->R0Process == NIL_RTR0PROCESS,
-                     ("R0Process=%p cur=%p; Process=%u curpid=%u\n", RTR0ProcHandleSelf(), RTProcSelf()));
+    AssertLogRelMsg(pSession->R0Process == RTR0ProcHandleSelf() || pSession->R0Process == NIL_RTR0PROCESS,
+                    ("R0Process=%p cur=%p; curpid=%u\n",
+                    pSession->R0Process, RTR0ProcHandleSelf(), RTProcSelf()));
 
     /*
      * Remove logger instances related to this session.
@@ -4924,7 +4925,7 @@ static int supdrvIOCtl_LdrLoad(PSUPDRVDEVEXT pDevExt, PSUPDRVSESSION pSession, P
     }
     if (RT_SUCCESS(rc))
     {
-        SUPR0Printf("vboxdrv: %p %s\n", pImage->pvImage, pImage->szName);
+        SUPR0Printf("vboxdrv: %RKv %s\n", pImage->pvImage, pImage->szName);
         pReq->u.Out.uErrorMagic = 0;
         pReq->u.Out.szError[0]  = '\0';
     }
diff --git a/src/VBox/HostDrivers/Support/SUPLibInternal.h b/src/VBox/HostDrivers/Support/SUPLibInternal.h
index 916c900..970b2d8 100644
--- a/src/VBox/HostDrivers/Support/SUPLibInternal.h
+++ b/src/VBox/HostDrivers/Support/SUPLibInternal.h
@@ -448,6 +448,10 @@ DECLHIDDEN(int)     supR3HardenedVerifyFixedFile(const char *pszFilename, bool f
 DECLHIDDEN(int)     supR3HardenedVerifyDir(const char *pszDirPath, bool fRecursive, bool fCheckFiles, PRTERRINFO pErrInfo);
 DECLHIDDEN(int)     supR3HardenedVerifyFile(const char *pszFilename, RTHCUINTPTR hNativeFile, bool fMaybe3rdParty,
                                             PRTERRINFO pErrInfo);
+#ifdef RT_OS_DARWIN
+DECLHIDDEN(int)     supR3HardenedVerifyFileFollowSymlinks(const char *pszFilename, RTHCUINTPTR hNativeFile, bool fMaybe3rdParty,
+                                                          PRTERRINFO pErrInfo);
+#endif
 DECLHIDDEN(void)    supR3HardenedGetPreInitData(PSUPPREINITDATA pPreInitData);
 DECLHIDDEN(int)     supR3HardenedRecvPreInitData(PCSUPPREINITDATA pPreInitData);
 
@@ -483,7 +487,9 @@ DECLHIDDEN(void)    supR3HardenedMainOpenDevice(void);
 DECLHIDDEN(char *)  supR3HardenedWinReadErrorInfoDevice(char *pszErrorInfo, size_t cbErrorInfo, const char *pszPrefix);
 DECLHIDDEN(void)    supR3HardenedWinReportErrorToParent(const char *pszWhere, SUPINITOP enmWhat, int rc,
                                                         const char *pszFormat, va_list va);
-#endif
+#else   /* !RT_OS_WINDOWS */
+DECLHIDDEN(void)    supR3HardenedPosixInit(void);
+#endif  /* !RT_OS_WINDOWS */
 
 SUPR3DECL(int)      supR3PageLock(void *pvStart, size_t cPages, PSUPPAGE paPages);
 SUPR3DECL(int)      supR3PageUnlock(void *pvStart);
diff --git a/src/VBox/HostDrivers/Support/SUPLibLdr.cpp b/src/VBox/HostDrivers/Support/SUPLibLdr.cpp
index 6a57c22..7fd4875 100644
--- a/src/VBox/HostDrivers/Support/SUPLibLdr.cpp
+++ b/src/VBox/HostDrivers/Support/SUPLibLdr.cpp
@@ -545,16 +545,16 @@ static int supLoadModule(const char *pszFilename, const char *pszModule, const c
                                 ||  rc == VERR_ALREADY_LOADED /* A competing process. */
                                )
                             {
-                                LogRel(("SUP: Loaded %s (%s) at %#p - ModuleInit at %RTptr and ModuleTerm at %RTptr%s\n",
-                                        pszModule, pszFilename, OpenReq.u.Out.pvImageBase, ModuleInit, ModuleTerm,
+                                LogRel(("SUP: Loaded %s (%s) at %#RKv - ModuleInit at %RKv and ModuleTerm at %RKv%s\n",
+                                        pszModule, pszFilename, OpenReq.u.Out.pvImageBase, (RTR0PTR)ModuleInit, (RTR0PTR)ModuleTerm,
                                         OpenReq.u.Out.fNativeLoader ? " using the native ring-0 loader" : ""));
                                 if (fIsVMMR0)
                                 {
                                     g_pvVMMR0 = OpenReq.u.Out.pvImageBase;
-                                    LogRel(("SUP: VMMR0EntryEx located at %RTptr and VMMR0EntryFast at %RTptr\n", VMMR0EntryEx, VMMR0EntryFast));
+                                    LogRel(("SUP: VMMR0EntryEx located at %RKv and VMMR0EntryFast at %RKv\n", (RTR0PTR)VMMR0EntryEx, (RTR0PTR)VMMR0EntryFast));
                                 }
 #ifdef RT_OS_WINDOWS
-                                LogRel(("SUP: windbg> .reload /f %s=%#p\n", pszFilename, OpenReq.u.Out.pvImageBase));
+                                LogRel(("SUP: windbg> .reload /f %s=%#RKv\n", pszFilename, OpenReq.u.Out.pvImageBase));
 #endif
 
                                 RTMemTmpFree(pLoadReq);
@@ -609,10 +609,10 @@ static int supLoadModule(const char *pszFilename, const char *pszModule, const c
         {
             if (fIsVMMR0)
                 g_pvVMMR0 = OpenReq.u.Out.pvImageBase;
-            LogRel(("SUP: Opened %s (%s) at %#p%s.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase,
+            LogRel(("SUP: Opened %s (%s) at %#RKv%s.\n", pszModule, pszFilename, OpenReq.u.Out.pvImageBase,
                     OpenReq.u.Out.fNativeLoader ? " loaded by the native ring-0 loader" : ""));
 #ifdef RT_OS_WINDOWS
-            LogRel(("SUP: windbg> .reload /f %s=%#p\n", pszFilename, OpenReq.u.Out.pvImageBase));
+            LogRel(("SUP: windbg> .reload /f %s=%#RKv\n", pszFilename, OpenReq.u.Out.pvImageBase));
 #endif
         }
         /*
diff --git a/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp b/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp
index 5bde7d3..137ebfa 100644
--- a/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp
+++ b/src/VBox/HostDrivers/Support/SUPR3HardenedMain.cpp
@@ -403,6 +403,9 @@
 # include <iprt/nt/nt-and-windows.h>
 
 #else /* UNIXes */
+# ifdef RT_OS_DARWIN
+#  define _POSIX_C_SOURCE 1 /* pick the correct prototype for unsetenv. */
+# endif
 # include <iprt/types.h> /* stdint fun on darwin. */
 
 # include <stdio.h>
@@ -486,6 +489,43 @@ typedef DECLCALLBACK(void) FNRTLOGRELPRINTF(const char *pszFormat, ...);
 typedef FNRTLOGRELPRINTF *PFNRTLOGRELPRINTF;
 
 
+/**
+ * Descriptor of an environment variable to purge.
+ */
+typedef struct SUPENVPURGEDESC
+{
+    /** Name of the environment variable to purge. */
+    const char         *pszEnv;
+    /** The length of the variable name. */
+    uint8_t             cchEnv;
+    /** Flag whether a failure in purging the variable leads to
+     * a fatal error resulting in an process exit. */
+    bool                fPurgeErrFatal;
+} SUPENVPURGEDESC;
+/** Pointer to a environment variable purge descriptor. */
+typedef SUPENVPURGEDESC *PSUPENVPURGEDESC;
+/** Pointer to a const environment variable purge descriptor. */
+typedef const SUPENVPURGEDESC *PCSUPENVPURGEDESC;
+
+/**
+ * Descriptor of an command line argument to purge.
+ */
+typedef struct SUPARGPURGEDESC
+{
+    /** Name of the argument to purge. */
+    const char         *pszArg;
+    /** The length of the argument name. */
+    uint8_t             cchArg;
+    /** Flag whether the argument is followed by an extra argument
+     * which must be purged too */
+    bool                fTakesValue;
+} SUPARGPURGEDESC;
+/** Pointer to a environment variable purge descriptor. */
+typedef SUPARGPURGEDESC *PSUPARGPURGEDESC;
+/** Pointer to a const environment variable purge descriptor. */
+typedef const SUPARGPURGEDESC *PCSUPARGPURGEDESC;
+
+
 /*********************************************************************************************************************************
 *   Global Variables                                                                                                             *
 *********************************************************************************************************************************/
@@ -536,6 +576,27 @@ static PFNRTLOGRELPRINTF g_pfnRTLogRelPrintf = NULL;
 static RTUTF16          g_wszStartupLogVol[16];
 #endif
 
+/** Environment variables to purge from the process because
+ * they are known to be harmful. */
+static const SUPENVPURGEDESC g_aSupEnvPurgeDescs[] =
+{
+    /* pszEnv                                       fPurgeErrFatal */
+    /* Qt related environment variables: */
+    { RT_STR_TUPLE("QT_QPA_PLATFORM_PLUGIN_PATH"),  true },
+    { RT_STR_TUPLE("QT_PLUGIN_PATH"),               true },
+    /* ALSA related environment variables: */
+    { RT_STR_TUPLE("ALSA_MIXER_SIMPLE_MODULES"),    true },
+    { RT_STR_TUPLE("LADSPA_PATH"),                  true },
+};
+
+/** Arguments to purge from the argument vector because
+ * they are known to be harmful. */
+static const SUPARGPURGEDESC g_aSupArgPurgeDescs[] =
+{
+    /* pszArg                        fTakesValue */
+    /* Qt related environment variables: */
+    { RT_STR_TUPLE("-platformpluginpath"),          true },
+};
 
 /*********************************************************************************************************************************
 *   Internal Functions                                                                                                           *
@@ -1596,35 +1657,40 @@ DECL_NO_RETURN(DECLHIDDEN(void)) supR3HardenedFatalMsgV(const char *pszWhere, SU
     if (g_enmSupR3HardenedMainState >= SUPR3HARDENEDMAINSTATE_WIN_IMPORTS_RESOLVED)
     {
 #ifdef SUP_HARDENED_SUID
-        /*
-         * Drop any root privileges we might be holding, this won't return
-         * if it fails but end up calling supR3HardenedFatal[V].
-         */
+        /* Drop any root privileges we might be holding, this won't return
+           if it fails but end up calling supR3HardenedFatal[V]. */
         supR3HardenedMainDropPrivileges();
 #endif
+        /* Close the driver, if we succeeded opening it.  Both because
+           TrustedError may be untrustworthy and because the driver deosn't
+           like us if we fork().  @bugref{8838} */
+        suplibOsTerm(&g_SupPreInitData.Data);
 
         /*
-         * Now try resolve and call the TrustedError entry point if we can
-         * find it.  We'll fork before we attempt this because that way the
-         * session management in main will see us exiting immediately (if
-         * it's involved with us).
+         * Now try resolve and call the TrustedError entry point if we can find it.
+         * Note! Loader involved, so we must guard against loader hooks calling us.
          */
-#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_OS2)
-        int pid = fork();
-        if (pid <= 0)
-#endif
+        static volatile bool s_fRecursive = false;
+        if (!s_fRecursive)
         {
-            static volatile bool s_fRecursive = false; /* Loader hooks may cause recursion. */
-            if (!s_fRecursive)
-            {
-                s_fRecursive = true;
+            s_fRecursive = true;
 
-                PFNSUPTRUSTEDERROR pfnTrustedError = supR3HardenedMainGetTrustedError(g_pszSupLibHardenedProgName);
-                if (pfnTrustedError)
+            PFNSUPTRUSTEDERROR pfnTrustedError = supR3HardenedMainGetTrustedError(g_pszSupLibHardenedProgName);
+            if (pfnTrustedError)
+            {
+                /* We'll fork before we make the call because that way the session management
+                   in main will see us exiting immediately (if it's involved with us) and possibly
+                   get an error back to the API / user. */
+#if !defined(RT_OS_WINDOWS) && !defined(RT_OS_OS2)
+                int pid = fork();
+                if (pid <= 0)
+#endif
+                {
                     pfnTrustedError(pszWhere, enmWhat, rc, pszMsgFmt, va);
-
-                s_fRecursive = false;
+                }
             }
+
+            s_fRecursive = false;
         }
     }
 #if defined(RT_OS_WINDOWS)
@@ -2003,6 +2069,137 @@ static void supR3HardenedMainDropPrivileges(void)
 #endif /* SUP_HARDENED_SUID */
 
 /**
+ * Purge the process environment from any environment vairable which can lead
+ * to loading untrusted binaries compromising the process address space.
+ *
+ * @param   envp        The initial environment vector. (Can be NULL.)
+ */
+static void supR3HardenedMainPurgeEnvironment(char **envp)
+{
+    for (unsigned i = 0; i < RT_ELEMENTS(g_aSupEnvPurgeDescs); i++)
+    {
+        /*
+         * Update the initial environment vector, just in case someone actually cares about it.
+         */
+        if (envp)
+        {
+            const char * const  pszEnv = g_aSupEnvPurgeDescs[i].pszEnv;
+            size_t const        cchEnv = g_aSupEnvPurgeDescs[i].cchEnv;
+            unsigned            iSrc   = 0;
+            unsigned            iDst   = 0;
+            char               *pszTmp;
+
+            while ((pszTmp = envp[iSrc]) != NULL)
+            {
+                if (   memcmp(pszTmp, pszEnv, cchEnv) != 0
+                    || (pszTmp[cchEnv] != '=' && pszTmp[cchEnv] != '\0'))
+                {
+                    if (iDst != iSrc)
+                        envp[iDst] = pszTmp;
+                    iDst++;
+                }
+                else
+                    SUP_DPRINTF(("supR3HardenedMainPurgeEnvironment: dropping envp[%d]=%s\n", iSrc, pszTmp));
+                iSrc++;
+            }
+
+            if (iDst != iSrc)
+                while (iDst <= iSrc)
+                    envp[iDst++] = NULL;
+        }
+
+        /*
+         * Remove from the process environment if present.
+         */
+#ifndef RT_OS_WINDOWS
+        const char *pszTmp = getenv(g_aSupEnvPurgeDescs[i].pszEnv);
+        if (pszTmp != NULL)
+        {
+            if (unsetenv((char *)g_aSupEnvPurgeDescs[i].pszEnv) == 0)
+                SUP_DPRINTF(("supR3HardenedMainPurgeEnvironment: dropped %s\n", pszTmp));
+            else
+                if (g_aSupEnvPurgeDescs[i].fPurgeErrFatal)
+                    supR3HardenedFatal("SUPR3HardenedMain: failed to purge %s environment variable! (errno=%d %s)\n",
+                                       g_aSupEnvPurgeDescs[i].pszEnv, errno, strerror(errno));
+                else
+                    SUP_DPRINTF(("supR3HardenedMainPurgeEnvironment: dropping %s failed! errno=%d\n", pszTmp, errno));
+        }
+#else
+        /** @todo Call NT API to do the same. */
+#endif
+    }
+}
+
+
+/**
+ * Returns the argument purge descriptor of the given argument if available.
+ *
+ * @retval 0 if it should not be purged.
+ * @retval 1 if it only the current argument should be purged.
+ * @retval 2 if the argument and the following (if present) should be purged.
+ * @param   pszArg           The argument to look for.
+ */
+static unsigned supR3HardenedMainShouldPurgeArg(const char *pszArg)
+{
+    for (unsigned i = 0; i < RT_ELEMENTS(g_aSupArgPurgeDescs); i++)
+    {
+        size_t const cchPurge = g_aSupArgPurgeDescs[i].cchArg;
+        if (!memcmp(pszArg, g_aSupArgPurgeDescs[i].pszArg, cchPurge))
+        {
+            if (pszArg[cchPurge] == '\0')
+                return 1 + g_aSupArgPurgeDescs[i].fTakesValue;
+            if (   g_aSupArgPurgeDescs[i].fTakesValue
+                && (pszArg[cchPurge] == ':' || pszArg[cchPurge] == '='))
+                return 1;
+        }
+    }
+
+    return 0;
+}
+
+
+/**
+ * Purges any command line arguments considered harmful.
+ *
+ * @returns nothing.
+ * @param   cArgsOrig        The original number of arguments.
+ * @param   papszArgsOrig    The original argument vector.
+ * @param   pcArgsNew        Where to store the new number of arguments on success.
+ * @param   ppapszArgsNew    Where to store the pointer to the purged argument vector.
+ */
+static void supR3HardenedMainPurgeArgs(int cArgsOrig, char **papszArgsOrig, int *pcArgsNew, char ***ppapszArgsNew)
+{
+    int    iDst = 0;
+#ifdef RT_OS_WINDOWS
+    char **papszArgsNew = papszArgsOrig; /* We allocated this, no need to allocate again. */
+#else
+    char **papszArgsNew = (char **)malloc((cArgsOrig + 1) * sizeof(char *));
+#endif
+    if (papszArgsNew)
+    {
+        for (int iSrc = 0; iSrc < cArgsOrig; iSrc++)
+        {
+            unsigned cPurgedArgs = supR3HardenedMainShouldPurgeArg(papszArgsOrig[iSrc]);
+            if (!cPurgedArgs)
+                papszArgsNew[iDst++] = papszArgsOrig[iSrc];
+            else
+                iSrc += cPurgedArgs - 1;
+        }
+
+        papszArgsNew[iDst] = NULL; /* The array is NULL terminated, just like envp. */
+    }
+    else
+        supR3HardenedFatal("SUPR3HardenedMain: failed to allocate memory for purged command line!\n");
+    *pcArgsNew     = iDst;
+    *ppapszArgsNew = papszArgsNew;
+
+#ifdef RT_OS_WINDOWS
+    /** @todo Update command line pointers in PEB, wont really work without it. */
+#endif
+}
+
+
+/**
  * Loads the VBoxRT DLL/SO/DYLIB, hands it the open driver,
  * and calls RTR3InitEx.
  *
@@ -2367,7 +2564,14 @@ DECLHIDDEN(int) SUPR3HardenedMain(const char *pszProgName, uint32_t fFlags, int
     supR3HardenedWinFlushLoaderCache();
     supR3HardenedWinResolveVerifyTrustApiAndHookThreadCreation(g_pszSupLibHardenedProgName);
     g_enmSupR3HardenedMainState = SUPR3HARDENEDMAINSTATE_WIN_VERIFY_TRUST_READY;
-#endif
+#else /* !RT_OS_WINDOWS */
+# ifndef RT_OS_FREEBSD /** @todo portme */
+    /*
+     * Posix: Hook the load library interface interface.
+     */
+    supR3HardenedPosixInit();
+# endif
+#endif /* !RT_OS_WINDOWS */
 
 #ifdef SUP_HARDENED_SUID
     /*
@@ -2382,6 +2586,13 @@ DECLHIDDEN(int) SUPR3HardenedMain(const char *pszProgName, uint32_t fFlags, int
 #endif
 
     /*
+     * Purge any environment variables and command line arguments considered harmful.
+     */
+    /** @todo May need to move this to a much earlier stage on windows.  */
+    supR3HardenedMainPurgeEnvironment(envp);
+    supR3HardenedMainPurgeArgs(argc, argv, &argc, &argv);
+
+    /*
      * Load the IPRT, hand the SUPLib part the open driver and
      * call RTR3InitEx.
      */
diff --git a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp b/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
index 5b947f5..c309593 100644
--- a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
+++ b/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
@@ -1035,6 +1035,25 @@ static int supR3HardenedSetErrorN(int rc, PRTERRINFO pErrInfo, unsigned cMsgs, .
     return rc;
 }
 
+#ifdef RT_OS_DARWIN
+/**
+ * Copies the four messages into the error buffer and returns @a rc.
+ *
+ * @returns Returns @a rc
+ * @param   rc                  The return code.
+ * @param   pErrInfo            The error info structure.
+ * @param   pszMsg1             The first message part.
+ * @param   pszMsg2             The second message part.
+ * @param   pszMsg3             The third message part.
+ * @param   pszMsg4             The fourth message part.
+ */
+static int supR3HardenedSetError4(int rc, PRTERRINFO pErrInfo, const char *pszMsg1,
+                                  const char *pszMsg2, const char *pszMsg3, const char *pszMsg4)
+{
+    return supR3HardenedSetErrorN(rc, pErrInfo, 4, pszMsg1, pszMsg2, pszMsg3, pszMsg4);
+}
+#endif /* RT_OS_DARWIN */
+
 
 /**
  * Copies the three messages into the error buffer and returns @a rc.
@@ -1069,6 +1088,9 @@ static int supR3HardenedSetError2(int rc, PRTERRINFO pErrInfo, const char *pszMs
     return supR3HardenedSetErrorN(rc, pErrInfo, 2, pszMsg1, pszMsg2);
 }
 
+#endif /* SOME_UNUSED_FUNCTION */
+
+#ifdef RT_OS_DARWIN
 
 /**
  * Copies the error message to the error buffer and returns @a rc.
@@ -1083,7 +1105,8 @@ static int supR3HardenedSetError(int rc, PRTERRINFO pErrInfo, const char *pszMsg
     return supR3HardenedSetErrorN(rc, pErrInfo, 1, pszMsg);
 }
 
-#endif /* SOME_UNUSED_FUNCTION */
+#endif
+
 
 /**
  * Output from a successfull supR3HardenedVerifyPathSanity call.
@@ -1370,21 +1393,23 @@ static int supR3HardenedIsSameFsObject(PCSUPR3HARDENEDFSOBJSTATE pFsObjState1, P
  * @param   fRelaxed            Whether we can be more relaxed about this
  *                              directory (only used for grand parent
  *                              directories).
+ * @param   fSymlinksAllowed    Flag whether symlinks are allowed or not.
+ *                              If allowed the symlink object is verified not the target.
  * @param   pszPath             The path to the object. For error messages and
  *                              securing a couple of hacks.
  * @param   pErrInfo            The error info structure.
  */
 static int supR3HardenedVerifyFsObject(PCSUPR3HARDENEDFSOBJSTATE pFsObjState, bool fDir, bool fRelaxed,
-                                       const char *pszPath, PRTERRINFO pErrInfo)
+                                       bool fSymlinksAllowed, const char *pszPath, PRTERRINFO pErrInfo)
 {
 #if defined(RT_OS_WINDOWS)
     /** @todo Windows hardening. */
-    NOREF(pFsObjState); NOREF(fDir); NOREF(fRelaxed); NOREF(pszPath); NOREF(pErrInfo);
+    RT_NOREF(pFsObjState, fDir, fRelaxed, fSymlinksAllowed, pszPath, pErrInfo);
     return VINF_SUCCESS;
 
 #elif defined(RT_OS_OS2)
     /* No hardening here - it's a single user system. */
-    NOREF(pFsObjState); NOREF(fDir); NOREF(fRelaxed); NOREF(pszPath); NOREF(pErrInfo);
+    RT_NOREF(pFsObjState, fDir, fRelaxed, fSymlinksAllowed, pszPath, pErrInfo);
     return VINF_SUCCESS;
 
 #else
@@ -1397,25 +1422,31 @@ static int supR3HardenedVerifyFsObject(PCSUPR3HARDENEDFSOBJSTATE pFsObjState, bo
         return supR3HardenedSetError3(VERR_SUPLIB_OWNER_NOT_ROOT, pErrInfo, "The owner is not root: '", pszPath, "'");
 
     /*
-     * The object type must be directory or file, no symbolic links or other
-     * risky stuff (sorry dude, but we're paranoid on purpose here).
+     * The object type must be directory or file. It can be a symbolic link
+     * if explicitely allowed. Otherwise this and other risky stuff is not allowed
+     * (sorry dude, but we're paranoid on purpose here).
      */
-    if (   !S_ISDIR(pFsObjState->Stat.st_mode)
-        && !S_ISREG(pFsObjState->Stat.st_mode))
-    {
-        if (S_ISLNK(pFsObjState->Stat.st_mode))
-            return supR3HardenedSetError3(VERR_SUPLIB_SYMLINKS_ARE_NOT_PERMITTED, pErrInfo,
-                                          "Symlinks are not permitted: '", pszPath, "'");
-        return supR3HardenedSetError3(VERR_SUPLIB_NOT_DIR_NOT_FILE, pErrInfo,
-                                      "Not regular file or directory: '", pszPath, "'");
-    }
-    if (fDir != !!S_ISDIR(pFsObjState->Stat.st_mode))
+    if (   !S_ISLNK(pFsObjState->Stat.st_mode)
+        || !fSymlinksAllowed)
     {
-        if (S_ISDIR(pFsObjState->Stat.st_mode))
-            return supR3HardenedSetError3(VERR_SUPLIB_IS_DIRECTORY, pErrInfo,
-                                          "Expected file but found directory: '", pszPath, "'");
-        return supR3HardenedSetError3(VERR_SUPLIB_IS_FILE, pErrInfo,
-                                      "Expected directory but found file: '", pszPath, "'");
+
+        if (   !S_ISDIR(pFsObjState->Stat.st_mode)
+            && !S_ISREG(pFsObjState->Stat.st_mode))
+        {
+            if (S_ISLNK(pFsObjState->Stat.st_mode))
+                return supR3HardenedSetError3(VERR_SUPLIB_SYMLINKS_ARE_NOT_PERMITTED, pErrInfo,
+                                              "Symlinks are not permitted: '", pszPath, "'");
+            return supR3HardenedSetError3(VERR_SUPLIB_NOT_DIR_NOT_FILE, pErrInfo,
+                                          "Not regular file or directory: '", pszPath, "'");
+        }
+        if (fDir != !!S_ISDIR(pFsObjState->Stat.st_mode))
+        {
+            if (S_ISDIR(pFsObjState->Stat.st_mode))
+                return supR3HardenedSetError3(VERR_SUPLIB_IS_DIRECTORY, pErrInfo,
+                                              "Expected file but found directory: '", pszPath, "'");
+            return supR3HardenedSetError3(VERR_SUPLIB_IS_FILE, pErrInfo,
+                                          "Expected directory but found file: '", pszPath, "'");
+        }
     }
 
     /*
@@ -1443,6 +1474,13 @@ static int supR3HardenedVerifyFsObject(PCSUPR3HARDENEDFSOBJSTATE pFsObjState, bo
         /** @todo dynamically resolve the operator group? */
         bool fBad = !fRelaxed || pFsObjState->Stat.st_gid != 5 /*operator*/ || suplibHardenedStrCmp(pszPath, "/usr/pbi");
         NOREF(fRelaxed);
+#elif defined(RT_OS_SOLARIS)
+        /* HACK ALERT: Solaris has group-writable /usr/lib/iconv directory from
+           which the appropriate module is loaded.
+           By default only root and daemon are part of that group.
+           . */
+        /** @todo dynamically resolve the bin group? */
+        bool fBad = !fRelaxed || pFsObjState->Stat.st_gid != 2 /*bin*/ || suplibHardenedStrCmp(pszPath, "/usr/lib/iconv");
 #else
         NOREF(fRelaxed);
         bool fBad = true;
@@ -1600,7 +1638,7 @@ static int supR3HardenedVerifyDirRecursive(char *pszDirPath, size_t cchDirPath,
         if (RT_SUCCESS(rc))
             break;
         rc = supR3HardenedVerifyFsObject(pFsObjState, S_ISDIR(pFsObjState->Stat.st_mode), false /*fRelaxed*/,
-                                         pszDirPath, pErrInfo);
+                                         false /*fSymlinksAllowed*/, pszDirPath, pErrInfo);
         if (RT_FAILURE(rc))
             break;
 
@@ -1658,7 +1696,8 @@ DECLHIDDEN(int) supR3HardenedVerifyDir(const char *pszDirPath, bool fRecursive,
         Info.szPath[Info.aoffComponents[iComponent + 1] - 1] = '\0';
         rc = supR3HardenedQueryFsObjectByPath(Info.szPath, &FsObjState, pErrInfo);
         if (RT_SUCCESS(rc))
-            rc = supR3HardenedVerifyFsObject(&FsObjState, true /*fDir*/, fRelaxed, Info.szPath, pErrInfo);
+            rc = supR3HardenedVerifyFsObject(&FsObjState, true /*fDir*/, fRelaxed,
+                                             false /*fSymlinksAllowed*/, Info.szPath, pErrInfo);
         if (RT_FAILURE(rc))
             return rc;
         Info.szPath[Info.aoffComponents[iComponent + 1] - 1] = iComponent + 1 != cComponents ? RTPATH_SLASH : '\0';
@@ -1719,7 +1758,8 @@ DECLHIDDEN(int) supR3HardenedVerifyFile(const char *pszFilename, RTHCUINTPTR hNa
         Info.szPath[Info.aoffComponents[iComponent + 1] - 1] = '\0';
         rc = supR3HardenedQueryFsObjectByPath(Info.szPath, &FsObjState, pErrInfo);
         if (RT_SUCCESS(rc))
-            rc = supR3HardenedVerifyFsObject(&FsObjState, !fFinal /*fDir*/, fRelaxed, Info.szPath, pErrInfo);
+            rc = supR3HardenedVerifyFsObject(&FsObjState, !fFinal /*fDir*/, fRelaxed,
+                                             false /*fSymlinksAllowed*/, Info.szPath, pErrInfo);
         if (RT_FAILURE(rc))
             return rc;
         Info.szPath[Info.aoffComponents[iComponent + 1] - 1] = !fFinal ? RTPATH_SLASH : '\0';
@@ -1798,6 +1838,164 @@ DECLHIDDEN(int) supR3HardenedVerifyFile(const char *pszFilename, RTHCUINTPTR hNa
 }
 
 
+#ifdef RT_OS_DARWIN
+/**
+ * Verfies a file following symlinks.
+ *
+ * @returns VBox status code, error buffer filled on failure.
+ * @param   pszFilename         The file to verify.
+ * @param   hNativeFile         Handle to the file, verify that it's the same
+ *                              as we ended up with when verifying the path.
+ *                              RTHCUINTPTR_MAX means NIL here.
+ * @param   fMaybe3rdParty      Set if the file is could be a supplied by a
+ *                              third party.  Different validation rules may
+ *                              apply to 3rd party code on some platforms.
+ * @param   pErrInfo            Where to return extended error information.
+ *                              Optional.
+ *
+ * @note    This is only used on OS X for libraries loaded with dlopen() because
+ *          the frameworks use symbolic links to point to the relevant library.
+ *
+ * @sa      supR3HardenedVerifyFile
+ */
+DECLHIDDEN(int) supR3HardenedVerifyFileFollowSymlinks(const char *pszFilename, RTHCUINTPTR hNativeFile, bool fMaybe3rdParty,
+                                                      PRTERRINFO pErrInfo)
+{
+    RT_NOREF1(fMaybe3rdParty);
+
+    /*
+     * Validate the input path and parse it.
+     */
+    SUPR3HARDENEDPATHINFO Info;
+    int rc = supR3HardenedVerifyPathSanity(pszFilename, pErrInfo, &Info);
+    if (RT_FAILURE(rc))
+        return rc;
+    if (Info.fDirSlash)
+        return supR3HardenedSetError3(VERR_SUPLIB_IS_DIRECTORY, pErrInfo,
+                                      "The file path specifies a directory: '", pszFilename, "'");
+
+    /*
+     * Verify each component from the root up.
+     */
+    uint32_t                iLoops = 0;
+    SUPR3HARDENEDFSOBJSTATE FsObjState;
+    uint32_t                iComponent = 0;
+    while (iComponent < Info.cComponents)
+    {
+        bool fFinal   = iComponent + 1 == Info.cComponents;
+        bool fRelaxed = iComponent + 2 < Info.cComponents;
+        Info.szPath[Info.aoffComponents[iComponent + 1] - 1] = '\0';
+        rc = supR3HardenedQueryFsObjectByPath(Info.szPath, &FsObjState, pErrInfo);
+        if (RT_SUCCESS(rc))
+        {
+            /*
+             * In case the component is a symlink expand it and start from the beginning after
+             * verifying it has the proper access rights.
+             * Furthermore only allow symlinks which don't contain any .. or . in the target
+             * (enforced by supR3HardenedVerifyPathSanity).
+             */
+            rc = supR3HardenedVerifyFsObject(&FsObjState, !fFinal /*fDir*/, fRelaxed,
+                                             true /*fSymlinksAllowed*/, Info.szPath, pErrInfo);
+            if (   RT_SUCCESS(rc)
+                && S_ISLNK(FsObjState.Stat.st_mode))
+            {
+                /* Don't loop forever. */
+                iLoops++;
+                if (iLoops < 8)
+                {
+                    /*
+                     * Construct new path by replacing the current component by the symlink value.
+                     * Note! readlink() is a weird API that doesn't necessarily indicates if the
+                     *       buffer is too small.
+                     */
+                    char   szPath[RTPATH_MAX];
+                    size_t const cchBefore = Info.aoffComponents[iComponent]; /* includes slash */
+                    size_t const cchAfter  = fFinal ? 0 : 1 /*slash*/ + Info.cch - Info.aoffComponents[iComponent + 1];
+                    if (sizeof(szPath) > cchBefore + cchAfter + 2)
+                    {
+                        ssize_t cchTarget = readlink(Info.szPath, szPath, sizeof(szPath) - 1);
+                        if (cchTarget > 0)
+                        {
+                            /* Some serious paranoia against embedded zero terminator and weird return values. */
+                            szPath[cchTarget] = '\0';
+                            size_t cchLink = strlen(szPath);
+
+                            /* Strip trailing dirslashes of non-final link. */
+                            if (!fFinal)
+                                while (cchLink > 1 and szPath[cchLink - 1] == '/')
+                                    cchLink--;
+
+                            /* Check link value sanity and buffer size. */
+                            if (cchLink == 0)
+                                return supR3HardenedSetError3(VERR_ACCESS_DENIED, pErrInfo,
+                                                              "Bad readlink return for '", Info.szPath, "'");
+                            if (szPath[0] == '/')
+                                return supR3HardenedSetError3(VERR_ACCESS_DENIED, pErrInfo,
+                                                              "Absolute symbolic link not allowed: '", szPath, "'");
+                            if (cchBefore + cchLink + cchAfter + 1 /*terminator*/ > sizeof(szPath))
+                                return supR3HardenedSetError(VERR_SUPLIB_PATH_TOO_LONG, pErrInfo,
+                                                             "Symlinks causing too long path!");
+
+                            /* Construct the new path. */
+                            if (cchBefore)
+                                memmove(&szPath[cchBefore], &szPath[0], cchLink);
+                            memcpy(&szPath[0], Info.szPath, cchBefore);
+                            if (!cchAfter)
+                                szPath[cchBefore + cchLink] = '\0';
+                            else
+                            {
+                                szPath[cchBefore + cchLink] = RTPATH_SLASH;
+                                memcpy(&szPath[cchBefore + cchLink + 1],
+                                       &Info.szPath[Info.aoffComponents[iComponent + 1]],
+                                       cchAfter); /* cchAfter includes a zero terminator */
+                            }
+
+                            /* Parse, copy and check the sanity (no '..' or '.') of the altered path. */
+                            rc = supR3HardenedVerifyPathSanity(szPath, pErrInfo, &Info);
+                            if (RT_FAILURE(rc))
+                                return rc;
+                            if (Info.fDirSlash)
+                                return supR3HardenedSetError3(VERR_SUPLIB_IS_DIRECTORY, pErrInfo,
+                                                              "The file path specifies a directory: '", szPath, "'");
+
+                            /* Restart from the current component. */
+                            continue;
+                        }
+                        int iErr = errno;
+                        supR3HardenedError(VERR_ACCESS_DENIED, false /*fFatal*/,
+                                           "supR3HardenedVerifyFileFollowSymlinks: Failed to readlink '%s': %s (%d)\n",
+                                           Info.szPath, strerror(iErr), iErr);
+                        return supR3HardenedSetError4(VERR_ACCESS_DENIED, pErrInfo,
+                                                      "readlink failed for '", Info.szPath, "': ", strerror(iErr));
+                    }
+                    return supR3HardenedSetError(VERR_SUPLIB_PATH_TOO_LONG, pErrInfo, "Path too long for symlink replacing!");
+                }
+                else
+                    return supR3HardenedSetError3(VERR_TOO_MANY_SYMLINKS, pErrInfo,
+                                                  "Too many symbolic links: '", pszFilename, "'");
+            }
+        }
+        if (RT_FAILURE(rc))
+            return rc;
+        Info.szPath[Info.aoffComponents[iComponent + 1] - 1] = !fFinal ? RTPATH_SLASH : '\0';
+        iComponent++;
+    }
+
+    /*
+     * Verify the file handle against the last component, if specified.
+     */
+    if (hNativeFile != RTHCUINTPTR_MAX)
+    {
+        rc = supR3HardenedVerifySameFsObject(hNativeFile, &FsObjState, Info.szPath, pErrInfo);
+        if (RT_FAILURE(rc))
+            return rc;
+    }
+
+    return VINF_SUCCESS;
+}
+#endif /* RT_OS_DARWIN */
+
+
 /**
  * Gets the pre-init data for the hand-over to the other version
  * of this code.
diff --git a/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp b/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp
index 3680217..d6d3e9e 100644
--- a/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp
+++ b/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp
@@ -31,7 +31,9 @@
 #define LOG_GROUP LOG_GROUP_SUP
 #ifdef IN_SUP_HARDENED_R3
 # undef DEBUG /* Warning: disables RT_STRICT */
-# define LOG_DISABLED
+# ifndef LOG_DISABLED
+#  define LOG_DISABLED
+# endif
 # define RTLOG_REL_DISABLED
 # include <iprt/log.h>
 #endif
@@ -218,8 +220,6 @@ int suplibOsInit(PSUPLIBDATA pThis, bool fPreInited, bool fUnrestricted, SUPINIT
 }
 
 
-#ifndef IN_SUP_HARDENED_R3
-
 int suplibOsTerm(PSUPLIBDATA pThis)
 {
     /*
@@ -251,6 +251,8 @@ int suplibOsTerm(PSUPLIBDATA pThis)
 }
 
 
+#ifndef IN_SUP_HARDENED_R3
+
 int suplibOsInstall(void)
 {
     return VERR_NOT_IMPLEMENTED;
diff --git a/src/VBox/HostDrivers/Support/freebsd/Makefile b/src/VBox/HostDrivers/Support/freebsd/Makefile
index 4f9e96c..5a7aa2d 100644
--- a/src/VBox/HostDrivers/Support/freebsd/Makefile
+++ b/src/VBox/HostDrivers/Support/freebsd/Makefile
@@ -141,6 +141,7 @@ SRCS += \
 	RTSemEventMultiWait-2-ex-generic.c \
 	RTSemEventMultiWaitNoResume-2-ex-generic.c \
 	RTTimerCreate-generic.c \
+	rtStrFormatKernelAddress-generic.c \
 	errvars-generic.c \
 	mppresent-generic.c \
 	timer-generic.c
diff --git a/src/VBox/HostDrivers/Support/freebsd/SUPLib-freebsd.cpp b/src/VBox/HostDrivers/Support/freebsd/SUPLib-freebsd.cpp
index 551236d..b32d5b0 100644
--- a/src/VBox/HostDrivers/Support/freebsd/SUPLib-freebsd.cpp
+++ b/src/VBox/HostDrivers/Support/freebsd/SUPLib-freebsd.cpp
@@ -119,8 +119,6 @@ int suplibOsInit(PSUPLIBDATA pThis, bool fPreInited, bool fUnrestricted, SUPINIT
 }
 
 
-#ifndef IN_SUP_HARDENED_R3
-
 int suplibOsTerm(PSUPLIBDATA pThis)
 {
     /*
@@ -136,6 +134,8 @@ int suplibOsTerm(PSUPLIBDATA pThis)
 }
 
 
+#ifndef IN_SUP_HARDENED_R3
+
 int suplibOsInstall(void)
 {
     return VERR_NOT_IMPLEMENTED;
diff --git a/src/VBox/HostDrivers/Support/freebsd/files_vboxdrv b/src/VBox/HostDrivers/Support/freebsd/files_vboxdrv
index dfe3a86..4384f60 100755
--- a/src/VBox/HostDrivers/Support/freebsd/files_vboxdrv
+++ b/src/VBox/HostDrivers/Support/freebsd/files_vboxdrv
@@ -159,6 +159,7 @@ FILES_VBOXDRV_NOBIN=" \
     ${PATH_ROOT}/src/VBox/Runtime/include/internal/sched.h=>include/internal/sched.h \
     ${PATH_ROOT}/src/VBox/Runtime/include/internal/process.h=>include/internal/process.h \
     ${PATH_ROOT}/src/VBox/Runtime/include/internal/time.h=>include/internal/time.h \
+    ${PATH_ROOT}/src/VBox/Runtime/generic/rtStrFormatKernelAddress-generic.cpp=>generic/rtStrFormatKernelAddress-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTAssertShouldPanic-generic.cpp=>generic/RTAssertShouldPanic-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTLogWriteStdErr-stub-generic.cpp=>generic/RTLogWriteStdErr-stub-generic.c \
     ${PATH_ROOT}/src/VBox/Runtime/generic/RTLogWriteStdOut-stub-generic.cpp=>generic/RTLogWriteStdOut-stub-generic.c \
diff --git a/src/VBox/HostDrivers/Support/linux/Makefile b/src/VBox/HostDrivers/Support/linux/Makefile
index ee41f23..3e38a63 100644
--- a/src/VBox/HostDrivers/Support/linux/Makefile
+++ b/src/VBox/HostDrivers/Support/linux/Makefile
@@ -89,6 +89,7 @@ OBJS   = \
 	r0drv/linux/mp-r0drv-linux.o \
 	r0drv/linux/mpnotification-r0drv-linux.o \
 	r0drv/linux/process-r0drv-linux.o \
+	r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.o \
 	r0drv/linux/semevent-r0drv-linux.o \
 	r0drv/linux/semeventmulti-r0drv-linux.o \
 	r0drv/linux/semfastmutex-r0drv-linux.o \
diff --git a/src/VBox/HostDrivers/Support/linux/SUPLib-linux.cpp b/src/VBox/HostDrivers/Support/linux/SUPLib-linux.cpp
index 07422e4..d05b37a 100644
--- a/src/VBox/HostDrivers/Support/linux/SUPLib-linux.cpp
+++ b/src/VBox/HostDrivers/Support/linux/SUPLib-linux.cpp
@@ -32,7 +32,9 @@
 #ifdef IN_SUP_HARDENED_R3
 # undef DEBUG /* Warning: disables RT_STRICT */
 # undef RT_STRICT
-# define LOG_DISABLED
+# ifndef LOG_DISABLED
+#  define LOG_DISABLED
+# endif
 # define RTLOG_REL_DISABLED
 # include <iprt/log.h>
 #endif
@@ -143,8 +145,6 @@ int suplibOsInit(PSUPLIBDATA pThis, bool fPreInited, bool fUnrestricted, SUPINIT
 }
 
 
-#ifndef IN_SUP_HARDENED_R3
-
 int suplibOsTerm(PSUPLIBDATA pThis)
 {
     /*
@@ -161,6 +161,8 @@ int suplibOsTerm(PSUPLIBDATA pThis)
 }
 
 
+#ifndef IN_SUP_HARDENED_R3
+
 int suplibOsInstall(void)
 {
     // nothing to do on Linux
diff --git a/src/VBox/HostDrivers/Support/linux/files_vboxdrv b/src/VBox/HostDrivers/Support/linux/files_vboxdrv
index 8d6408d..ba9b829 100755
--- a/src/VBox/HostDrivers/Support/linux/files_vboxdrv
+++ b/src/VBox/HostDrivers/Support/linux/files_vboxdrv
@@ -78,6 +78,7 @@ FILES_VBOXDRV_NOBIN=" \
     ${PATH_ROOT}/include/VBox/types.h=>include/VBox/types.h \
     ${PATH_ROOT}/include/VBox/SUPDrvMangling.h=>include/VBox/SUPDrvMangling.h \
     ${PATH_ROOT}/include/VBox/VBoxTpG.h=>include/VBox/VBoxTpG.h \
+    ${PATH_ROOT}/include/VBox/vmm/cpumctx.h=>include/VBox/vmm/cpumctx.h \
     ${PATH_ROOT}/include/VBox/vmm/hm_vmx.h=>include/VBox/vmm/hm_vmx.h \
     ${PATH_ROOT}/include/VBox/vmm/hm_svm.h=>include/VBox/vmm/hm_svm.h \
     ${PATH_ROOT}/src/VBox/HostDrivers/Support/linux/SUPDrv-linux.c=>linux/SUPDrv-linux.c \
@@ -173,6 +174,7 @@ FILES_VBOXDRV_NOBIN=" \
     ${PATH_ROOT}/src/VBox/Runtime/r0drv/mpnotification-r0drv.c=>r0drv/mpnotification-r0drv.c \
     ${PATH_ROOT}/src/VBox/Runtime/r0drv/power-r0drv.h=>r0drv/power-r0drv.h \
     ${PATH_ROOT}/src/VBox/Runtime/r0drv/powernotification-r0drv.c=>r0drv/powernotification-r0drv.c \
+    ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.c=>r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.c \
     ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/RTLogWriteDebugger-r0drv-linux.c=>r0drv/linux/RTLogWriteDebugger-r0drv-linux.c \
     ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/assert-r0drv-linux.c=>r0drv/linux/assert-r0drv-linux.c \
     ${PATH_ROOT}/src/VBox/Runtime/r0drv/linux/alloc-r0drv-linux.c=>r0drv/linux/alloc-r0drv-linux.c \
diff --git a/src/VBox/HostDrivers/Support/os2/SUPLib-os2.cpp b/src/VBox/HostDrivers/Support/os2/SUPLib-os2.cpp
index 2aa4ad8..8dcfd9e 100644
--- a/src/VBox/HostDrivers/Support/os2/SUPLib-os2.cpp
+++ b/src/VBox/HostDrivers/Support/os2/SUPLib-os2.cpp
@@ -104,8 +104,6 @@ int suplibOsInit(PSUPLIBDATA pThis, bool fPreInited, bool fUnrestricted, SUPINIT
 }
 
 
-#ifndef IN_SUP_HARDENED_R3
-
 int suplibOsTerm(PSUPLIBDATA pThis)
 {
     /*
@@ -122,6 +120,8 @@ int suplibOsTerm(PSUPLIBDATA pThis)
 }
 
 
+#ifndef IN_SUP_HARDENED_R3
+
 int suplibOsInstall(void)
 {
     /** @remark OS/2: Not supported */
diff --git a/src/VBox/HostDrivers/Support/solaris/SUPLib-solaris.cpp b/src/VBox/HostDrivers/Support/solaris/SUPLib-solaris.cpp
index ef3bd51..a2174f4 100644
--- a/src/VBox/HostDrivers/Support/solaris/SUPLib-solaris.cpp
+++ b/src/VBox/HostDrivers/Support/solaris/SUPLib-solaris.cpp
@@ -31,7 +31,9 @@
 #define LOG_GROUP LOG_GROUP_SUP
 #ifdef IN_SUP_HARDENED_R3
 # undef DEBUG /* Warning: disables RT_STRICT */
-# define LOG_DISABLED
+# ifndef LOG_DISABLED
+#  define LOG_DISABLED
+# endif
 # define RTLOG_REL_DISABLED
 # include <iprt/log.h>
 #endif
@@ -151,8 +153,6 @@ int suplibOsInit(PSUPLIBDATA pThis, bool fPreInited, bool fUnrestricted, SUPINIT
 }
 
 
-#ifndef IN_SUP_HARDENED_R3
-
 int suplibOsTerm(PSUPLIBDATA pThis)
 {
     /*
@@ -181,6 +181,8 @@ int suplibOsTerm(PSUPLIBDATA pThis)
 }
 
 
+#ifndef IN_SUP_HARDENED_R3
+
 int suplibOsInstall(void)
 {
     return VERR_NOT_IMPLEMENTED;
diff --git a/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h b/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h
index f44c692..db17ad0 100644
--- a/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h
+++ b/src/VBox/HostDrivers/Support/win/SUPHardenedVerify-win.h
@@ -138,6 +138,9 @@ DECLHIDDEN(int)  supHardenedWinVerifyImageByLdrMod(RTLDRMOD hLdrMod, PCRTUTF16 p
 #  define SUPHNTVI_F_RC_IMAGE                       RT_BIT(31)
 /** @} */
 
+/* Array in SUPHardenedVerifyImage-win.cpp */
+extern const RTSTRTUPLE g_aSupNtViBlacklistedDlls[];
+
 /**
  * Loader cache entry.
  *
diff --git a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp
index f6946bf..aa4f8f6 100644
--- a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp
+++ b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp
@@ -140,6 +140,16 @@ SUPSYSROOTDIRBUF            g_CommonFilesX86NtPath;
 # endif
 #endif /* IN_RING3 && !VBOX_PERMIT_MORE*/
 
+/**
+ * Blacklisted DLL names.
+ */
+const RTSTRTUPLE g_aSupNtViBlacklistedDlls[] =
+{
+    { RT_STR_TUPLE("SCROBJ.dll") },
+    { NULL, 0 } /* terminator entry */
+};
+
+
 static union
 {
     SID                     Sid;
@@ -1273,6 +1283,45 @@ DECLHIDDEN(int) supHardenedWinVerifyImageByLdrMod(RTLDRMOD hLdrMod, PCRTUTF16 pw
     RT_NOREF1(fAvoidWinVerifyTrust);
 #endif
 
+    /*
+     * Check for blacklisted DLLs, both internal name and filename.
+     */
+    if (RT_SUCCESS(rc))
+    {
+        size_t const cwcName = RTUtf16Len(pwszName);
+        char         szIntName[64];
+        int rc2 = RTLdrQueryProp(hLdrMod, RTLDRPROP_INTERNAL_NAME, szIntName, sizeof(szIntName));
+        if (RT_SUCCESS(rc2))
+        {
+            size_t const cchIntName = strlen(szIntName);
+            for (unsigned i = 0; g_aSupNtViBlacklistedDlls[i].psz != NULL; i++)
+                if (   cchIntName == g_aSupNtViBlacklistedDlls[i].cch
+                    && RTStrICmpAscii(szIntName, g_aSupNtViBlacklistedDlls[i].psz) == 0)
+                {
+                    rc = RTErrInfoSetF(pErrInfo, VERR_SUP_VP_UNDESIRABLE_MODULE,
+                                       "The image '%ls' is listed as undesirable.", pwszName);
+                    break;
+                }
+        }
+        if (RT_SUCCESS(rc))
+        {
+            for (unsigned i = 0; g_aSupNtViBlacklistedDlls[i].psz != NULL; i++)
+                if (cwcName >= g_aSupNtViBlacklistedDlls[i].cch)
+                {
+                    PCRTUTF16 pwszTmp = &pwszName[cwcName - g_aSupNtViBlacklistedDlls[i].cch];
+                    if (   (   cwcName == g_aSupNtViBlacklistedDlls[i].cch
+                            || pwszTmp[-1] == '\\'
+                            || pwszTmp[-1] == '/')
+                        && RTUtf16ICmpAscii(pwszTmp, g_aSupNtViBlacklistedDlls[i].psz) == 0)
+                    {
+                        rc = RTErrInfoSetF(pErrInfo, VERR_SUP_VP_UNDESIRABLE_MODULE,
+                                           "The image '%ls' is listed as undesirable.", pwszName);
+                        break;
+                    }
+                }
+        }
+    }
+
 #ifdef IN_SUP_HARDENED_R3
     /*
      * Hook for the LdrLoadDll code to schedule scanning of imports.
diff --git a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp
index d815b7e..30ef876 100644
--- a/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp
+++ b/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyProcess-win.cpp
@@ -1757,7 +1757,7 @@ static int supHardNtVpScanVirtualMemory(PSUPHNTVPSTATE pThis, HANDLE hProcess)
         {
             cXpExceptions++;
             SUP_DPRINTF(("  %p-%p %#06x/%#06x %#09x  XP CSRSS read-only region\n", MemInfo.BaseAddress,
-                         (uintptr_t)MemInfo.BaseAddress - MemInfo.RegionSize - 1, MemInfo.Protect,
+                         (uintptr_t)MemInfo.BaseAddress + MemInfo.RegionSize - 1, MemInfo.Protect,
                          MemInfo.AllocationProtect, MemInfo.Type));
         }
         /*
@@ -1769,7 +1769,7 @@ static int supHardNtVpScanVirtualMemory(PSUPHNTVPSTATE pThis, HANDLE hProcess)
             SUP_DPRINTF((MemInfo.AllocationBase == MemInfo.BaseAddress
                          ? " *%p-%p %#06x/%#06x %#09x !!\n"
                          : "  %p-%p %#06x/%#06x %#09x !!\n",
-                         MemInfo.BaseAddress, (uintptr_t)MemInfo.BaseAddress - MemInfo.RegionSize - 1,
+                         MemInfo.BaseAddress, (uintptr_t)MemInfo.BaseAddress + MemInfo.RegionSize - 1,
                          MemInfo.Protect, MemInfo.AllocationProtect, MemInfo.Type));
 # ifdef IN_RING3
             if (pThis->enmKind == SUPHARDNTVPKIND_CHILD_PURIFICATION)
@@ -1827,7 +1827,7 @@ static int supHardNtVpScanVirtualMemory(PSUPHNTVPSTATE pThis, HANDLE hProcess)
             SUP_DPRINTF((MemInfo.AllocationBase == MemInfo.BaseAddress
                          ? " *%p-%p %#06x/%#06x %#09x\n"
                          : "  %p-%p %#06x/%#06x %#09x\n",
-                         MemInfo.BaseAddress, (uintptr_t)MemInfo.BaseAddress - MemInfo.RegionSize - 1,
+                         MemInfo.BaseAddress, (uintptr_t)MemInfo.BaseAddress + MemInfo.RegionSize - 1,
                          MemInfo.Protect, MemInfo.AllocationProtect, MemInfo.Type));
 
         /*
diff --git a/src/VBox/HostDrivers/Support/win/SUPLib-win.cpp b/src/VBox/HostDrivers/Support/win/SUPLib-win.cpp
index ace1958..f10881e 100644
--- a/src/VBox/HostDrivers/Support/win/SUPLib-win.cpp
+++ b/src/VBox/HostDrivers/Support/win/SUPLib-win.cpp
@@ -635,6 +635,7 @@ static int suplibOsStartService(void)
 
     return rc;
 }
+#endif /* !IN_SUP_HARDENED_R3 */
 
 
 int suplibOsTerm(PSUPLIBDATA pThis)
@@ -644,7 +645,7 @@ int suplibOsTerm(PSUPLIBDATA pThis)
      */
     if (pThis->hDevice != NULL)
     {
-        if (!CloseHandle((HANDLE)pThis->hDevice))
+        if (!NtClose((HANDLE)pThis->hDevice))
             AssertFailed();
         pThis->hDevice = NIL_RTFILE; /* yes, that's right */
     }
@@ -653,6 +654,8 @@ int suplibOsTerm(PSUPLIBDATA pThis)
 }
 
 
+#ifndef IN_SUP_HARDENED_R3
+
 int suplibOsIOCtl(PSUPLIBDATA pThis, uintptr_t uFunction, void *pvReq, size_t cbReq)
 {
     RT_NOREF1(cbReq);
diff --git a/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp b/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp
index 38279cf..9392092 100644
--- a/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp
+++ b/src/VBox/HostDrivers/Support/win/SUPR3HardenedMain-win.cpp
@@ -365,14 +365,16 @@ static uint32_t             g_fSupAdversaries = 0;
 #define SUPHARDNT_ADVERSARY_COMODO                  RT_BIT_32(11)
 /** Check Point's Zone Alarm (may include Kaspersky).  */
 #define SUPHARDNT_ADVERSARY_ZONE_ALARM              RT_BIT_32(12)
-/** Digital guardian.  */
-#define SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN        RT_BIT_32(13)
+/** Digital guardian, old problematic version.  */
+#define SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_OLD    RT_BIT_32(13)
+/** Digital guardian, new version.  */
+#define SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_NEW    RT_BIT_32(14)
 /** Cylance protect or something (from googling, no available sample copy). */
-#define SUPHARDNT_ADVERSARY_CYLANCE                 RT_BIT_32(14)
+#define SUPHARDNT_ADVERSARY_CYLANCE                 RT_BIT_32(15)
 /** BeyondTrust / PowerBroker / something (googling, no available sample copy). */
-#define SUPHARDNT_ADVERSARY_BEYONDTRUST             RT_BIT_32(15)
+#define SUPHARDNT_ADVERSARY_BEYONDTRUST             RT_BIT_32(16)
 /** Avecto / Defendpoint / Privilege Guard (details from support guy, hoping to get sample copy). */
-#define SUPHARDNT_ADVERSARY_AVECTO                  RT_BIT_32(16)
+#define SUPHARDNT_ADVERSARY_AVECTO                  RT_BIT_32(17)
 /** Unknown adversary detected while waiting on child. */
 #define SUPHARDNT_ADVERSARY_UNKNOWN                 RT_BIT_32(31)
 /** @} */
@@ -1635,6 +1637,28 @@ static NTSTATUS supR3HardenedCopyRedirectionResult(WCHAR *pwszPath, size_t cwcPa
 
 
 /**
+ * Helper for supR3HardenedMonitor_LdrLoadDll that compares the name part of the
+ * input path against a ASCII name string of a given length.
+ *
+ * @returns true if the name part matches
+ * @param   pPath               The LdrLoadDll input path.
+ * @param   pszName             The name to try match it with.
+ * @param   cchName             The name length.
+ */
+static bool supR3HardenedIsFilenameMatchDll(PUNICODE_STRING pPath, const char *pszName, size_t cchName)
+{
+    if (pPath->Length < cchName * 2)
+        return false;
+    PCRTUTF16 pwszTmp = &pPath->Buffer[pPath->Length / sizeof(RTUTF16) - cchName];
+    if (   pPath->Length != cchName
+        && pwszTmp[-1] != '\\'
+        && pwszTmp[-1] != '/')
+        return false;
+    return RTUtf16ICmpAscii(pwszTmp, pszName) == 0;
+}
+
+
+/**
  * Hooks that intercepts LdrLoadDll calls.
  *
  * Two purposes:
@@ -1711,22 +1735,13 @@ supR3HardenedMonitor_LdrLoadDll(PWSTR pwszSearchPath, PULONG pfFlags, PUNICODE_S
         {
             { RT_STR_TUPLE("PGHook.dll") },
         };
-
         for (unsigned i = 0; i < RT_ELEMENTS(s_aUnwantedEarlyDlls); i++)
-        {
-            if (pName->Length < s_aUnwantedEarlyDlls[i].cch * 2)
-                continue;
-            PCRTUTF16 pwszTmp = &pName->Buffer[pName->Length / sizeof(RTUTF16) - s_aUnwantedEarlyDlls[i].cch];
-            if (   pName->Length != s_aUnwantedEarlyDlls[i].cch * 2
-                && pwszTmp[-1] != '\\'
-                && pwszTmp[-1] != '/')
-                continue;
-            if (RTUtf16ICmpAscii(pwszTmp, s_aUnwantedEarlyDlls[i].psz) != 0)
-                continue;
-            SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: Refusing to load '%.*ls' as it is expected to create undesirable threads that will upset our respawn checks (returning STATUS_TOO_MANY_THREADS)\n",
-                         pName->Length / sizeof(RTUTF16), pName->Buffer));
-            return STATUS_TOO_MANY_THREADS;
-        }
+            if (supR3HardenedIsFilenameMatchDll(pName, s_aUnwantedEarlyDlls[i].psz, s_aUnwantedEarlyDlls[i].cch))
+            {
+                SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: Refusing to load '%.*ls' as it is expected to create undesirable threads that will upset our respawn checks (returning STATUS_TOO_MANY_THREADS)\n",
+                             pName->Length / sizeof(RTUTF16), pName->Buffer));
+                return STATUS_TOO_MANY_THREADS;
+            }
     }
 
     /*
@@ -1907,6 +1922,20 @@ supR3HardenedMonitor_LdrLoadDll(PWSTR pwszSearchPath, PULONG pfFlags, PUNICODE_S
         pName = &ResolvedName;
     }
 
+#ifndef IN_SUP_R3_STATIC
+    /*
+     * Reject blacklisted DLLs based on input name.
+     */
+    for (unsigned i = 0; g_aSupNtViBlacklistedDlls[i].psz != NULL; i++)
+        if (supR3HardenedIsFilenameMatchDll(pName, g_aSupNtViBlacklistedDlls[i].psz, g_aSupNtViBlacklistedDlls[i].cch))
+        {
+            SUP_DPRINTF(("supR3HardenedMonitor_LdrLoadDll: Refusing to load blacklisted DLL: '%.*ls'\n",
+                         pName->Length / sizeof(RTUTF16), pName->Buffer));
+            RtlRestoreLastWin32Error(dwSavedLastError);
+            return STATUS_TOO_MANY_THREADS;
+        }
+#endif
+
     bool fQuiet = false;
     if (!fSkipValidation)
     {
@@ -3522,7 +3551,7 @@ static void supR3HardNtChildPurify(PSUPR3HARDNTCHILD pThis)
         cFixes = 0;
         int rc = supHardenedWinVerifyProcess(pThis->hProcess, pThis->hThread, SUPHARDNTVPKIND_CHILD_PURIFICATION,
                                              g_fSupAdversaries & (  SUPHARDNT_ADVERSARY_TRENDMICRO_SAKFILE
-                                                                  | SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN)
+                                                                  | SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_OLD)
                                              ? SUPHARDNTVP_F_EXEC_ALLOC_REPLACE_WITH_RW : 0,
                                              &cFixes, RTErrInfoInitStatic(&g_ErrInfoStatic));
         if (RT_FAILURE(rc))
@@ -4954,18 +4983,244 @@ static char **suplibCommandLineToArgvWStub(PCRTUTF16 pawcCmdLine, size_t cwcCmdL
 
 
 /**
- * Logs information about a file from a protection product or from Windows.
+ * Worker for supR3HardenedFindVersionRsrcOffset.
+ *
+ * @returns RVA the version resource data, UINT32_MAX if not found.
+ * @param   pRootDir            The root resource directory.  Expects data to
+ *                              follow.
+ * @param   cbBuf               The amount of data at pRootDir.
+ * @param   offData             The offset to the data entry.
+ * @param   pcbData             Where to return the size of the data.
+ */
+static uint32_t supR3HardenedGetRvaFromRsrcDataEntry(PIMAGE_RESOURCE_DIRECTORY pRootDir, uint32_t cbBuf, uint32_t offData,
+                                                     uint32_t *pcbData)
+{
+    if (   offData <= cbBuf
+        && offData + sizeof(IMAGE_RESOURCE_DATA_ENTRY) <= cbBuf)
+    {
+        PIMAGE_RESOURCE_DATA_ENTRY pRsrcData = (PIMAGE_RESOURCE_DATA_ENTRY)((uintptr_t)pRootDir + offData);
+        SUP_DPRINTF(("    [Raw version resource data: %#x LB %#x, codepage %#x (reserved %#x)]\n",
+                     pRsrcData->OffsetToData, pRsrcData->Size, pRsrcData->CodePage, pRsrcData->Reserved));
+        if (pRsrcData->Size > 0)
+        {
+            *pcbData = pRsrcData->Size;
+            return pRsrcData->OffsetToData;
+        }
+    }
+    else
+        SUP_DPRINTF(("    Version resource data (%#x) is outside the buffer (%#x)! :-(\n", offData, cbBuf));
+
+    *pcbData = 0;
+    return UINT32_MAX;
+}
+
+
+/** @def SUP_RSRC_DPRINTF
+ * Dedicated debug printf for resource directory parsing.
+ * @sa SUP_DPRINTF
+ */
+#if 0 /* more details */
+# define SUP_RSRC_DPRINTF(a) SUP_DPRINTF(a)
+#else
+# define SUP_RSRC_DPRINTF(a) do { } while (0)
+#endif
+
+/**
+ * Scans the resource directory for a version resource.
+ *
+ * @returns RVA of the version resource data, UINT32_MAX if not found.
+ * @param   pRootDir            The root resource directory.  Expects data to
+ *                              follow.
+ * @param   cbBuf               The amount of data at pRootDir.
+ * @param   pcbData             Where to return the size of the version data.
+ */
+static uint32_t supR3HardenedFindVersionRsrcRva(PIMAGE_RESOURCE_DIRECTORY pRootDir, uint32_t cbBuf, uint32_t *pcbData)
+{
+    SUP_RSRC_DPRINTF(("    ResDir: Char=%#x Time=%#x Ver=%d%d #NamedEntries=%#x #IdEntries=%#x\n",
+                      pRootDir->Characteristics,
+                      pRootDir->TimeDateStamp,
+                      pRootDir->MajorVersion,
+                      pRootDir->MinorVersion,
+                      pRootDir->NumberOfNamedEntries,
+                      pRootDir->NumberOfIdEntries));
+
+    PIMAGE_RESOURCE_DIRECTORY_ENTRY paEntries = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(pRootDir + 1);
+    unsigned cMaxEntries = (cbBuf - sizeof(IMAGE_RESOURCE_DIRECTORY)) / sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY);
+    unsigned cEntries    = pRootDir->NumberOfNamedEntries + pRootDir->NumberOfIdEntries;
+    if (cEntries > cMaxEntries)
+        cEntries = cMaxEntries;
+    for (unsigned i = 0; i < cEntries; i++)
+    {
+        if (!paEntries[i].NameIsString)
+        {
+            if (!paEntries[i].DataIsDirectory)
+                SUP_RSRC_DPRINTF(("    #%u:   ID: #%#06x  Data: %#010x\n",
+                                i, paEntries[i].Id, paEntries[i].OffsetToData));
+            else
+                SUP_RSRC_DPRINTF(("    #%u:   ID: #%#06x  Dir: %#010x\n",
+                                i, paEntries[i].Id, paEntries[i].OffsetToDirectory));
+        }
+        else
+        {
+            if (!paEntries[i].DataIsDirectory)
+                SUP_RSRC_DPRINTF(("    #%u: Name: #%#06x  Data: %#010x\n",
+                                i, paEntries[i].NameOffset, paEntries[i].OffsetToData));
+            else
+                SUP_RSRC_DPRINTF(("    #%u: Name: #%#06x  Dir: %#010x\n",
+                                i, paEntries[i].NameOffset, paEntries[i].OffsetToDirectory));
+        }
+
+        /*
+         * Look for the version resource type.  Skip to the next entry if not found.
+         */
+        if (paEntries[i].NameIsString)
+            continue;
+        if (paEntries[i].Id != 0x10 /*RT_VERSION*/)
+            continue;
+        if (!paEntries[i].DataIsDirectory)
+        {
+            SUP_DPRINTF(("    #%u:   ID: #%#06x  Data: %#010x - WEIRD!\n", i, paEntries[i].Id, paEntries[i].OffsetToData));
+            continue;
+        }
+        SUP_RSRC_DPRINTF(("    Version resource dir entry #%u: dir offset: %#x (cbBuf=%#x)\n",
+                          i, paEntries[i].OffsetToDirectory, cbBuf));
+
+        /*
+         * Locate the sub-resource directory for it.
+         */
+        if (paEntries[i].OffsetToDirectory >= cbBuf)
+        {
+            SUP_DPRINTF(("    Version resource dir is outside the buffer! :-(\n"));
+            continue;
+        }
+        uint32_t cbMax = cbBuf - paEntries[i].OffsetToDirectory;
+        if (cbMax < sizeof(IMAGE_RESOURCE_DIRECTORY) + sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))
+        {
+            SUP_DPRINTF(("    Version resource dir entry #0 is outside the buffer! :-(\n"));
+            continue;
+        }
+        PIMAGE_RESOURCE_DIRECTORY pVerDir = (PIMAGE_RESOURCE_DIRECTORY)((uintptr_t)pRootDir + paEntries[i].OffsetToDirectory);
+        SUP_RSRC_DPRINTF(("    VerDir: Char=%#x Time=%#x Ver=%d%d #NamedEntries=%#x #IdEntries=%#x\n",
+                          pVerDir->Characteristics,
+                          pVerDir->TimeDateStamp,
+                          pVerDir->MajorVersion,
+                          pVerDir->MinorVersion,
+                          pVerDir->NumberOfNamedEntries,
+                          pVerDir->NumberOfIdEntries));
+        PIMAGE_RESOURCE_DIRECTORY_ENTRY paVerEntries = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(pVerDir + 1);
+        unsigned cMaxVerEntries = (cbMax - sizeof(IMAGE_RESOURCE_DIRECTORY)) / sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY);
+        unsigned cVerEntries    = pVerDir->NumberOfNamedEntries + pVerDir->NumberOfIdEntries;
+        if (cVerEntries > cMaxVerEntries)
+            cVerEntries = cMaxVerEntries;
+        for (unsigned iVer = 0; iVer < cVerEntries; iVer++)
+        {
+            if (!paVerEntries[iVer].NameIsString)
+            {
+                if (!paVerEntries[iVer].DataIsDirectory)
+                    SUP_RSRC_DPRINTF(("      #%u:   ID: #%#06x  Data: %#010x\n",
+                                      iVer, paVerEntries[iVer].Id, paVerEntries[iVer].OffsetToData));
+                else
+                    SUP_RSRC_DPRINTF(("      #%u:   ID: #%#06x  Dir: %#010x\n",
+                                      iVer, paVerEntries[iVer].Id, paVerEntries[iVer].OffsetToDirectory));
+            }
+            else
+            {
+                if (!paVerEntries[iVer].DataIsDirectory)
+                    SUP_RSRC_DPRINTF(("      #%u: Name: #%#06x  Data: %#010x\n",
+                                      iVer, paVerEntries[iVer].NameOffset, paVerEntries[iVer].OffsetToData));
+                else
+                    SUP_RSRC_DPRINTF(("      #%u: Name: #%#06x  Dir: %#010x\n",
+                                      iVer, paVerEntries[iVer].NameOffset, paVerEntries[iVer].OffsetToDirectory));
+            }
+            if (!paVerEntries[iVer].DataIsDirectory)
+            {
+                SUP_DPRINTF(("    [Version info resource found at %#x! (ID/Name: #%#x)]\n",
+                             paVerEntries[iVer].OffsetToData, paVerEntries[iVer].Name));
+                return supR3HardenedGetRvaFromRsrcDataEntry(pRootDir, cbBuf, paVerEntries[iVer].OffsetToData, pcbData);
+            }
+
+            /*
+             * Check out the next directory level.
+             */
+            if (paVerEntries[iVer].OffsetToDirectory >= cbBuf)
+            {
+                SUP_DPRINTF(("    Version resource subdir is outside the buffer! :-(\n"));
+                continue;
+            }
+            cbMax = cbBuf - paVerEntries[iVer].OffsetToDirectory;
+            if (cbMax < sizeof(IMAGE_RESOURCE_DIRECTORY) + sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY))
+            {
+                SUP_DPRINTF(("    Version resource subdir entry #0 is outside the buffer! :-(\n"));
+                continue;
+            }
+            PIMAGE_RESOURCE_DIRECTORY pVerSubDir = (PIMAGE_RESOURCE_DIRECTORY)((uintptr_t)pRootDir + paVerEntries[iVer].OffsetToDirectory);
+            SUP_RSRC_DPRINTF(("      VerSubDir#%u: Char=%#x Time=%#x Ver=%d%d #NamedEntries=%#x #IdEntries=%#x\n",
+                              iVer,
+                              pVerSubDir->Characteristics,
+                              pVerSubDir->TimeDateStamp,
+                              pVerSubDir->MajorVersion,
+                              pVerSubDir->MinorVersion,
+                              pVerSubDir->NumberOfNamedEntries,
+                              pVerSubDir->NumberOfIdEntries));
+            PIMAGE_RESOURCE_DIRECTORY_ENTRY paVerSubEntries = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(pVerSubDir + 1);
+            unsigned cMaxVerSubEntries = (cbMax - sizeof(IMAGE_RESOURCE_DIRECTORY)) / sizeof(IMAGE_RESOURCE_DIRECTORY_ENTRY);
+            unsigned cVerSubEntries    = pVerSubDir->NumberOfNamedEntries + pVerSubDir->NumberOfIdEntries;
+            if (cVerSubEntries > cMaxVerSubEntries)
+                cVerSubEntries = cMaxVerSubEntries;
+            for (unsigned iVerSub = 0; iVerSub < cVerSubEntries; iVerSub++)
+            {
+                if (!paVerSubEntries[iVerSub].NameIsString)
+                {
+                    if (!paVerSubEntries[iVerSub].DataIsDirectory)
+                        SUP_RSRC_DPRINTF(("        #%u:   ID: #%#06x  Data: %#010x\n",
+                                          iVerSub, paVerSubEntries[iVerSub].Id, paVerSubEntries[iVerSub].OffsetToData));
+                    else
+                        SUP_RSRC_DPRINTF(("        #%u:   ID: #%#06x  Dir: %#010x\n",
+                                          iVerSub, paVerSubEntries[iVerSub].Id, paVerSubEntries[iVerSub].OffsetToDirectory));
+                }
+                else
+                {
+                    if (!paVerSubEntries[iVerSub].DataIsDirectory)
+                        SUP_RSRC_DPRINTF(("        #%u: Name: #%#06x  Data: %#010x\n",
+                                          iVerSub, paVerSubEntries[iVerSub].NameOffset, paVerSubEntries[iVerSub].OffsetToData));
+                    else
+                        SUP_RSRC_DPRINTF(("        #%u: Name: #%#06x  Dir: %#010x\n",
+                                          iVerSub, paVerSubEntries[iVerSub].NameOffset, paVerSubEntries[iVerSub].OffsetToDirectory));
+                }
+                if (!paVerSubEntries[iVerSub].DataIsDirectory)
+                {
+                    SUP_DPRINTF(("    [Version info resource found at %#x! (ID/Name: %#x; SubID/SubName: %#x)]\n",
+                                 paVerSubEntries[iVerSub].OffsetToData, paVerEntries[iVer].Name, paVerSubEntries[iVerSub].Name));
+                    return supR3HardenedGetRvaFromRsrcDataEntry(pRootDir, cbBuf, paVerSubEntries[iVerSub].OffsetToData, pcbData);
+                }
+            }
+        }
+    }
+
+    *pcbData = 0;
+    return UINT32_MAX;
+}
+
+
+/**
+ * Logs information about a file from a protection product or from Windows,
+ * optionally returning the file version.
  *
  * The purpose here is to better see which version of the product is installed
  * and not needing to depend on the user supplying the correct information.
  *
- * @param   pwszFile            The NT path to the file.
- * @param   fAdversarial        Set if from a protection product, false if
- *                              system file.
+ * @param   pwszFile        The NT path to the file.
+ * @param   pwszFileVersion Where to return the file version, if found. NULL if
+ *                          not interested.
+ * @param   cwcFileVersion  The size of the file version buffer (UTF-16 units).
  */
-static void supR3HardenedLogFileInfo(PCRTUTF16 pwszFile, bool fAdversarial)
+static void supR3HardenedLogFileInfo(PCRTUTF16 pwszFile, PRTUTF16 pwszFileVersion, size_t cwcFileVersion)
 {
-    RT_NOREF1(fAdversarial);
+    /*
+     * Make sure the file version is always set when we return.
+     */
+    if (pwszFileVersion && cwcFileVersion)
+        *pwszFileVersion = '\0';
 
     /*
      * Open the file.
@@ -5002,6 +5257,7 @@ static void supR3HardenedLogFileInfo(PCRTUTF16 pwszFile, bool fAdversarial)
             uint8_t                     abBuf[32768];
             RTUTF16                     awcBuf[16384];
             IMAGE_DOS_HEADER            MzHdr;
+            IMAGE_RESOURCE_DIRECTORY    ResDir;
         } u;
         RTTIMESPEC  TimeSpec;
         char        szTmp[64];
@@ -5075,37 +5331,78 @@ static void supR3HardenedLogFileInfo(PCRTUTF16 pwszFile, bool fAdversarial)
                         &&    (uintptr_t)&u + sizeof(u) - (uintptr_t)paSectHdrs
                            >= pNtHdrs64->FileHeader.NumberOfSections * sizeof(IMAGE_SECTION_HEADER) )
                     {
+                        uint32_t uRvaRsrcSect = 0;
+                        uint32_t cbRsrcSect   = 0;
+                        uint32_t offRsrcSect  = 0;
                         offRead.QuadPart = 0;
                         for (uint32_t i = 0; i < pNtHdrs64->FileHeader.NumberOfSections; i++)
-                            if (   paSectHdrs[i].VirtualAddress - RsrcDir.VirtualAddress < paSectHdrs[i].SizeOfRawData
-                                && paSectHdrs[i].PointerToRawData > offNtHdrs)
+                        {
+                            uRvaRsrcSect = paSectHdrs[i].VirtualAddress;
+                            cbRsrcSect   = paSectHdrs[i].Misc.VirtualSize;
+                            offRsrcSect  = paSectHdrs[i].PointerToRawData;
+                            if (   RsrcDir.VirtualAddress - uRvaRsrcSect < cbRsrcSect
+                                && offRsrcSect > offNtHdrs)
                             {
-                                offRead.QuadPart = paSectHdrs[i].PointerToRawData
-                                                 + (paSectHdrs[i].VirtualAddress - RsrcDir.VirtualAddress);
+                                offRead.QuadPart = offRsrcSect + (RsrcDir.VirtualAddress - uRvaRsrcSect);
                                 break;
                             }
+                        }
                         if (offRead.QuadPart > 0)
                         {
                             RT_ZERO(u);
                             rcNt = NtReadFile(hFile, NULL /*hEvent*/, NULL /*ApcRoutine*/, NULL /*ApcContext*/, &Ios,
                                               &u, (ULONG)sizeof(u), &offRead, NULL);
+                            PCRTUTF16 pwcVersionData = &u.awcBuf[0];
+                            size_t    cbVersionData  = sizeof(u);
+
+                            if (NT_SUCCESS(rcNt) && NT_SUCCESS(Ios.Status))
+                            {
+                                /* Make it less crude by try find the version resource data. */
+                                uint32_t  cbVersion;
+                                uint32_t  uRvaVersion = supR3HardenedFindVersionRsrcRva(&u.ResDir, sizeof(u), &cbVersion);
+                                NOREF(uRvaVersion);
+                                if (   uRvaVersion != UINT32_MAX
+                                    && cbVersion < cbRsrcSect
+                                    && uRvaVersion - uRvaRsrcSect <= cbRsrcSect - cbVersion)
+                                {
+                                    uint32_t const offVersion = uRvaVersion - uRvaRsrcSect;
+                                    if (   offVersion < sizeof(u)
+                                        && offVersion + cbVersion <= sizeof(u))
+                                    {
+                                        pwcVersionData = (PCRTUTF16)&u.abBuf[offVersion];
+                                        cbVersionData  = cbVersion;
+                                    }
+                                    else
+                                    {
+                                        offRead.QuadPart = offVersion + offRsrcSect;
+                                        RT_ZERO(u);
+                                        rcNt = NtReadFile(hFile, NULL /*hEvent*/, NULL /*ApcRoutine*/, NULL /*ApcContext*/, &Ios,
+                                                          &u, (ULONG)sizeof(u), &offRead, NULL);
+                                        pwcVersionData = &u.awcBuf[0];
+                                        cbVersionData  = RT_MIN(cbVersion, sizeof(u));
+                                    }
+                                }
+                            }
+
                             if (NT_SUCCESS(rcNt) && NT_SUCCESS(Ios.Status))
                             {
-                                static const struct { PCRTUTF16 pwsz; size_t cb; } s_abFields[] =
+                                static const struct { PCRTUTF16 pwsz; size_t cb; bool fRet; } s_abFields[] =
                                 {
-#define MY_WIDE_STR_TUPLE(a_sz)     { L ## a_sz, sizeof(L ## a_sz) - sizeof(RTUTF16) }
-                                    MY_WIDE_STR_TUPLE("ProductName"),
-                                    MY_WIDE_STR_TUPLE("ProductVersion"),
-                                    MY_WIDE_STR_TUPLE("FileVersion"),
-                                    MY_WIDE_STR_TUPLE("SpecialBuild"),
-                                    MY_WIDE_STR_TUPLE("PrivateBuild"),
-                                    MY_WIDE_STR_TUPLE("FileDescription"),
+#define MY_WIDE_STR_TUPLE(a_sz, a_fRet) { L ## a_sz, sizeof(L ## a_sz) - sizeof(RTUTF16), a_fRet }
+                                    MY_WIDE_STR_TUPLE("ProductName",        false),
+                                    MY_WIDE_STR_TUPLE("ProductVersion",     false),
+                                    MY_WIDE_STR_TUPLE("FileVersion",        true),
+                                    MY_WIDE_STR_TUPLE("SpecialBuild",       false),
+                                    MY_WIDE_STR_TUPLE("PrivateBuild",       false),
+                                    MY_WIDE_STR_TUPLE("FileDescription",    false),
 #undef MY_WIDE_STR_TUPLE
                                 };
                                 for (uint32_t i = 0; i < RT_ELEMENTS(s_abFields); i++)
                                 {
-                                    size_t          cwcLeft = (sizeof(u) - s_abFields[i].cb - 10) / sizeof(RTUTF16);
-                                    PCRTUTF16       pwc     = u.awcBuf;
+                                    if (cbVersionData <= s_abFields[i].cb + 10)
+                                        continue;
+                                    size_t          cwcLeft = (cbVersionData - s_abFields[i].cb - 10) / sizeof(RTUTF16);
+                                    PCRTUTF16       pwc     = pwcVersionData;
                                     RTUTF16 const   wcFirst = *s_abFields[i].pwsz;
                                     while (cwcLeft-- > 0)
                                     {
@@ -5123,8 +5420,14 @@ static void supR3HardenedLogFileInfo(PCRTUTF16 pwszFile, bool fAdversarial)
                                                 int rc = RTUtf16ValidateEncodingEx(pwc, cwcLeft,
                                                                                    RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED);
                                                 if (RT_SUCCESS(rc))
+                                                {
                                                     SUP_DPRINTF(("    %ls:%*s %ls",
                                                                  s_abFields[i].pwsz, cwcField < 15 ? 15 - cwcField : 0, "", pwc));
+                                                    if (   s_abFields[i].fRet
+                                                        && pwszFileVersion
+                                                        && cwcFileVersion > 1)
+                                                        RTUtf16Copy(pwszFileVersion, cwcFileVersion, pwc);
+                                                }
                                                 else
                                                     SUP_DPRINTF(("    %ls:%*s rc=%Rrc",
                                                                  s_abFields[i].pwsz, cwcField < 15 ? 15 - cwcField : 0, "", rc));
@@ -5255,7 +5558,7 @@ static uint32_t supR3HardenedWinFindAdversaries(void)
         { SUPHARDNT_ADVERSARY_COMODO,               "inspect" },
         { SUPHARDNT_ADVERSARY_COMODO,               "cmdHlp" },
 
-        { SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN,     "dgmaster" }, /* Not verified. */
+        { SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_OLD, "dgmaster" },
 
         { SUPHARDNT_ADVERSARY_CYLANCE,              "cyprotectdrv" }, /* Not verified. */
 
@@ -5375,7 +5678,7 @@ static uint32_t supR3HardenedWinFindAdversaries(void)
         { SUPHARDNT_ADVERSARY_ZONE_ALARM, L"\\SystemRoot\\System32\\drivers\\vsdatant.sys" },
         { SUPHARDNT_ADVERSARY_ZONE_ALARM, L"\\SystemRoot\\System32\\AntiTheftCredentialProvider.dll" },
 
-        { SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN, L"\\SystemRoot\\System32\\drivers\\dgmaster.sys" },
+        { SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_OLD, L"\\SystemRoot\\System32\\drivers\\dgmaster.sys" },
 
         { SUPHARDNT_ADVERSARY_CYLANCE, L"\\SystemRoot\\System32\\drivers\\cyprotectdrv32.sys" },
         { SUPHARDNT_ADVERSARY_CYLANCE, L"\\SystemRoot\\System32\\drivers\\cyprotectdrv64.sys" },
@@ -5471,12 +5774,51 @@ static uint32_t supR3HardenedWinFindAdversaries(void)
     }
 
     /*
-     * Log details.
+     * Log details and upgrade select adversaries.
      */
     SUP_DPRINTF(("supR3HardenedWinFindAdversaries: %#x\n", fFound));
     for (uint32_t i = 0; i < RT_ELEMENTS(s_aFiles); i++)
-        if (fFound & s_aFiles[i].fAdversary)
-            supR3HardenedLogFileInfo(s_aFiles[i].pwszFile, true /* fAdversarial */);
+        if (s_aFiles[i].fAdversary & fFound)
+        {
+            if (!(s_aFiles[i].fAdversary & SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_OLD))
+                supR3HardenedLogFileInfo(s_aFiles[i].pwszFile, NULL, 0);
+            else
+            {
+                /*
+                 * See if it's a newer version of the driver which doesn't BSODs when we free
+                 * its memory.  To use RTStrVersionCompare we do a rough UTF-16 -> ASCII conversion.
+                 */
+                union
+                {
+                    char    szFileVersion[64];
+                    RTUTF16 wszFileVersion[32];
+                } uBuf;
+                supR3HardenedLogFileInfo(s_aFiles[i].pwszFile, uBuf.wszFileVersion, RT_ELEMENTS(uBuf.wszFileVersion));
+                if (uBuf.wszFileVersion[0])
+                {
+                    for (uint32_t off = 0; off < RT_ELEMENTS(uBuf.wszFileVersion); off++)
+                    {
+                        RTUTF16 wch = uBuf.wszFileVersion[off];
+                        uBuf.szFileVersion[off] = (char)wch;
+                        if (!wch)
+                            break;
+                    }
+                    uBuf.szFileVersion[RT_ELEMENTS(uBuf.wszFileVersion)] = '\0';
+#define VER_IN_RANGE(a_pszFirst, a_pszLast) \
+    (RTStrVersionCompare(uBuf.szFileVersion, a_pszFirst) >= 0 && RTStrVersionCompare(uBuf.szFileVersion, a_pszLast) <= 0)
+                    if (   VER_IN_RANGE("7.4.0.0000", "999999999.9.9.9999")
+                        || VER_IN_RANGE("7.3.1.1000", "7.3.1.3000")
+                        || VER_IN_RANGE("7.3.0.3000", "7.3.0.999999999")
+                        || VER_IN_RANGE("7.2.1.3000", "7.2.999999999.999999999") )
+                    {
+                        uint32_t const fOldFound = fFound;
+                        fFound = (fOldFound & ~SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_OLD)
+                               |               SUPHARDNT_ADVERSARY_DIGITAL_GUARDIAN_NEW;
+                        SUP_DPRINTF(("supR3HardenedWinFindAdversaries: Found newer version: %#x -> %#x\n", fOldFound, fFound));
+                    }
+                }
+            }
+        }
 
     return fFound;
 }
@@ -5551,10 +5893,10 @@ extern "C" void __stdcall suplibHardenedWindowsMain(void)
     /*
      * Log information about important system files.
      */
-    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\ntdll.dll", false /* fAdversarial */);
-    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\kernel32.dll", false /* fAdversarial */);
-    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\KernelBase.dll", false /* fAdversarial */);
-    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\apisetschema.dll", false /* fAdversarial */);
+    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\ntdll.dll",          NULL /*pwszFileVersion*/, 0 /*cwcFileVersion*/);
+    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\kernel32.dll",       NULL /*pwszFileVersion*/, 0 /*cwcFileVersion*/);
+    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\KernelBase.dll",     NULL /*pwszFileVersion*/, 0 /*cwcFileVersion*/);
+    supR3HardenedLogFileInfo(L"\\SystemRoot\\System32\\apisetschema.dll",   NULL /*pwszFileVersion*/, 0 /*cwcFileVersion*/);
 
     /*
      * Scan the system for adversaries, logging information about them.
diff --git a/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk b/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
index 49be895..008b188 100644
--- a/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
+++ b/src/VBox/HostDrivers/VBoxNetAdp/Makefile.kmk
@@ -18,7 +18,7 @@
 SUB_DEPTH = ../../../..
 include $(KBUILD_PATH)/subheader.kmk
 
-if1of ($(KBUILD_TARGET), solaris darwin linux freebsd)
+if1of ($(KBUILD_TARGET), solaris darwin freebsd)
  #
  # VBoxNetAdp - Virtual Network Adapter
  # Note! On Solaris the name has to be <= 8 chars long.
@@ -29,15 +29,11 @@ if1of ($(KBUILD_TARGET), solaris darwin linux freebsd)
   VBoxNetAdp_INST             = $(INST_VBOXNETADP)$(if $(eq $(KBUILD_TARGET),darwin),Contents/MacOS/)
   VBoxNetAdp_DEBUG_INST.darwin= $(patsubst %/,%,$(INST_VBOXNETADP))
   VBoxNetAdp_NAME.solaris     = vboxnet
-  VBoxNetAdp_NAME.linux       = vboxnetadp
   VBoxNetAdp_NAME.freebsd     = vboxnetadp
   VBoxNetAdp_DEPS.solaris    += $(VBOX_SVN_REV_KMK)
   VBoxNetAdp_DEFS             = IN_RT_R0 VBOX_SVN_REV=$(VBOX_SVN_REV) IN_SUP_STATIC
-  VBoxNetAdp_DEFS.linux       = KBUILD_MODNAME=KBUILD_STR\(vboxnetadp\) KBUILD_BASENAME=KBUILD_STR\(vboxnetadp\) MODULE
   #VBoxNetAdp_LDFLAGS.darwin   = -v -Wl,-whyload -Wl,-v -Wl,-whatsloaded
   VBoxNetAdp_LDFLAGS.solaris += -N misc/gld -N drv/vboxdrv
-  VBoxNetAdp_INCS.linux   := \
-  	$(PATH_ROOT)/src/VBox/Runtime/r0drv/linux
   VBoxNetAdp_INCS             = \
   	.
   VBoxNetAdp_SOURCES.darwin   = \
@@ -45,9 +41,6 @@ if1of ($(KBUILD_TARGET), solaris darwin linux freebsd)
   	VBoxNetAdp.c
   VBoxNetAdp_SOURCES.solaris  = \
   	solaris/VBoxNetAdp-solaris.c
-  VBoxNetAdp_SOURCES.linux   = \
-  	linux/VBoxNetAdp-linux.c \
-  	VBoxNetAdp.c
   VBoxNetAdp_SOURCES.freebsd   = \
   	freebsd/VBoxNetAdp-freebsd.c \
   	VBoxNetAdp.c
@@ -56,7 +49,6 @@ if1of ($(KBUILD_TARGET), solaris darwin linux freebsd)
   #	VBoxNetAdp.c
   VBoxNetAdp_LIBS            += \
   	$(PATH_STAGE_LIB)/SUPR0IdcClient$(VBOX_SUFF_LIB)
-  linux/VBoxNetAdp-linux.c_DEPS = $(VBOX_SVN_REV_HEADER)
  endif
 endif
 
diff --git a/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk b/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
index 1446ed6..0b86649 100644
--- a/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
+++ b/src/VBox/HostDrivers/VBoxNetFlt/Makefile.kmk
@@ -450,7 +450,7 @@ $(PATH_TARGET)/VBoxNetAdpCat.dir/VBoxNetAdp.cat: \
 
 endif #ifeq ($(KBUILD_TARGET), win)
 
-else if1of ($(KBUILD_TARGET), linux solaris freebsd) ## @todo merge this with the mixed case stuff.
+else if1of ($(KBUILD_TARGET), solaris freebsd) ## @todo merge this with the mixed case stuff.
 #
 # vboxnetflt(.ko/.o/) - The lower case driver.
 # Note! On Solaris the name has to be <= 8 chars long.
@@ -460,14 +460,8 @@ else if1of ($(KBUILD_TARGET), linux solaris freebsd) ## @todo merge this with th
   SYSMODS += vboxnetflt
   vboxnetflt_TEMPLATE      = VBOXR0DRV
   vboxnetflt_NAME.solaris  = vboxflt
-  vboxnetflt_DEFS.linux    = \
-	KBUILD_MODNAME=KBUILD_STR\(vboxnetflt\) \
-	KBUILD_BASENAME=KBUILD_STR\(vboxnetflt\) \
-	MODULE DEBUG_HASH=2 DEBUG_HASH2=3
   vboxnetflt_DEFS          = IN_RT_R0
   vboxnetflt_DEPS.solaris += $(VBOX_SVN_REV_KMK)
-  vboxnetflt_INCS.linux   := \
-  	$(PATH_ROOT)/src/VBox/Runtime/r0drv/linux
   vboxnetflt_INCS         := \
   	$(PATH_SUB_CURRENT)
   vboxnetflt_LDFLAGS.solaris += -N drv/vboxdrv -N misc/ctf
@@ -476,11 +470,9 @@ else if1of ($(KBUILD_TARGET), linux solaris freebsd) ## @todo merge this with th
   ## @todo vboxflt should resolves all the IPRT bits from vboxdrv.
   #vboxnetflt_LIBS += \
   #	$(PATH_STAGE_LIB)/RuntimeR0Drv$(VBOX_SUFF_LIB)
-  vboxnetflt_SOURCES.linux = linux/VBoxNetFlt-linux.c
   vboxnetflt_SOURCES.solaris = solaris/VBoxNetFlt-solaris.c
   vboxnetflt_SOURCES.freebsd = freebsd/VBoxNetFlt-freebsd.c
   vboxnetflt_SOURCES = VBoxNetFlt.c
-  linux/VBoxNetFlt-linux.c_DEPS = $(VBOX_SVN_REV_HEADER)
   solaris/VBoxNetFlt-solaris.c_DEFS = VBOX_SVN_REV=$(VBOX_SVN_REV)
 
   ifdef VBOX_WITH_NETFLT_CROSSBOW
diff --git a/src/VBox/HostDrivers/VBoxPci/Makefile.kmk b/src/VBox/HostDrivers/VBoxPci/Makefile.kmk
index c918656..824a682 100644
--- a/src/VBox/HostDrivers/VBoxPci/Makefile.kmk
+++ b/src/VBox/HostDrivers/VBoxPci/Makefile.kmk
@@ -22,25 +22,18 @@ if1of ($(KBUILD_TARGET), linux)
  ifdef VBOX_WITH_VBOXDRV
   #
   # The driver.
-  # Note! For Linux, this is just a compile test. Don't use the binary!
   #
   SYSMODS += VBoxPci
   VBoxPci_TEMPLATE       = VBOXR0DRV
   VBoxPci_INST           = $(INST_VBOXPCI)$(if $(eq $(KBUILD_TARGET),darwin),Contents/MacOS/)
   VBoxPci_NAME.linux     = vboxpci
   VBoxPci_DEFS           = IN_RT_R0 VBOX_SVN_REV=$(VBOX_SVN_REV) IN_SUP_STATIC
-  VBoxPci_DEFS.linux     = KBUILD_MODNAME=KBUILD_STR\(vboxpci\) KBUILD_BASENAME=KBUILD_STR\(vboxpci\) MODULE
-  VBoxPci_INCS.linux    := \
- 	$(PATH_ROOT)/src/VBox/Runtime/r0drv/linux
   VBoxPci_INCS           = \
  	.
-  VBoxPci_SOURCES.linux  = \
- 	linux/VBoxPci-linux.c
   VBoxPci_SOURCES        = \
  	VBoxPci.c
   VBoxPci_LIBS          += \
  	$(PATH_STAGE_LIB)/SUPR0IdcClient$(VBOX_SUFF_LIB)
-  linux/VBoxPci-linux.c_DEPS = $(VBOX_SVN_REV_HEADER)
  endif
 
  #
diff --git a/src/VBox/HostDrivers/freebsd/Makefile b/src/VBox/HostDrivers/freebsd/Makefile
index 6ee5d14..f37ec7c 100644
--- a/src/VBox/HostDrivers/freebsd/Makefile
+++ b/src/VBox/HostDrivers/freebsd/Makefile
@@ -18,7 +18,7 @@
 KBUILD_VERBOSE =
 
 all:
-	@echo "*** Building 'vboxdrv' module ***"
+	@echo "=== Building 'vboxdrv' module ==="
 	@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxdrv
 	@cp vboxdrv/vboxdrv.ko .
 	@echo
@@ -26,7 +26,7 @@ all:
 	    if [ -f vboxdrv/Module.symvers ]; then \
 	        cp vboxdrv/Module.symvers vboxnetflt; \
 	    fi; \
-	    echo "*** Building 'vboxnetflt' module ***"; \
+	    echo "=== Building 'vboxnetflt' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetflt; \
 	    cp vboxnetflt/vboxnetflt.ko .; \
 	    echo; \
@@ -35,7 +35,7 @@ all:
 	    if [ -f vboxdrv/Module.symvers ]; then \
 	        cp vboxdrv/Module.symvers vboxnetadp; \
 	    fi; \
-	    echo "*** Building 'vboxnetadp' module ***"; \
+	    echo "=== Building 'vboxnetadp' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetadp; \
 	    cp vboxnetadp/vboxnetadp.ko .; \
 	    echo; \
diff --git a/src/VBox/HostDrivers/linux/Makefile b/src/VBox/HostDrivers/linux/Makefile
index a034137..85466b1 100644
--- a/src/VBox/HostDrivers/linux/Makefile
+++ b/src/VBox/HostDrivers/linux/Makefile
@@ -37,7 +37,7 @@ else # ! KBUILD_EXTMOD
 KBUILD_VERBOSE =
 
 all:
-	@echo "*** Building 'vboxdrv' module ***"
+	@echo "=== Building 'vboxdrv' module ==="
 	@$(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxdrv
 	@cp vboxdrv/vboxdrv.ko .
 	@echo
@@ -45,7 +45,7 @@ all:
 	    if [ -f vboxdrv/Module.symvers ]; then \
 	        cp vboxdrv/Module.symvers vboxnetflt; \
 	    fi; \
-	    echo "*** Building 'vboxnetflt' module ***"; \
+	    echo "=== Building 'vboxnetflt' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetflt || exit 1; \
 	    cp vboxnetflt/vboxnetflt.ko .; \
 	    echo; \
@@ -54,7 +54,7 @@ all:
 	    if [ -f vboxdrv/Module.symvers ]; then \
 	        cp vboxdrv/Module.symvers vboxnetadp; \
 	    fi; \
-	    echo "*** Building 'vboxnetadp' module ***"; \
+	    echo "=== Building 'vboxnetadp' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxnetadp || exit 1; \
 	    cp vboxnetadp/vboxnetadp.ko .; \
 	    echo; \
@@ -63,7 +63,7 @@ all:
 	    if [ -f vboxdrv/Module.symvers ]; then \
 	        cp vboxdrv/Module.symvers vboxpci; \
 	    fi; \
-	    echo "*** Building 'vboxpci' module ***"; \
+	    echo "=== Building 'vboxpci' module ==="; \
 	    $(MAKE) KBUILD_VERBOSE=$(KBUILD_VERBOSE) -C vboxpci || exit 1; \
 	    cp vboxpci/vboxpci.ko .; \
 	    echo; \
diff --git a/src/VBox/HostServices/SharedFolders/vbsf.cpp b/src/VBox/HostServices/SharedFolders/vbsf.cpp
index 88b2bc4..5d3863b 100644
--- a/src/VBox/HostServices/SharedFolders/vbsf.cpp
+++ b/src/VBox/HostServices/SharedFolders/vbsf.cpp
@@ -1333,6 +1333,9 @@ int vbsfDirList(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, SHFLS
         {
             RTMemFree(pHandle->dir.pLastValidEntry);
             pHandle->dir.pLastValidEntry = NULL;
+
+            /* And use the newly allocated buffer from now. */
+            pDirEntry = pDirEntryOrg;
         }
 
         if (flags & SHFL_LIST_RETURN_ONE)
diff --git a/src/VBox/HostServices/SharedFolders/vbsfpath.cpp b/src/VBox/HostServices/SharedFolders/vbsfpath.cpp
index 55a32f8..5756f4a 100644
--- a/src/VBox/HostServices/SharedFolders/vbsfpath.cpp
+++ b/src/VBox/HostServices/SharedFolders/vbsfpath.cpp
@@ -111,10 +111,10 @@ static int vbsfCorrectCasing(SHFLCLIENTDATA *pClient, char *pszFullPath, char *p
                 if (   rc != VINF_SUCCESS
                     && rc != VWRN_NO_DIRENT_INFO)
                 {
-                    AssertFailed();
                     if (   rc == VERR_NO_TRANSLATION
                         || rc == VERR_INVALID_UTF8_ENCODING)
                         continue;
+                    AssertMsgFailed(("%Rrc\n", rc));
                     break;
                 }
 
diff --git a/src/VBox/Installer/linux/Makefile.include.footer b/src/VBox/Installer/linux/Makefile.include.footer
index 96904ca..7830bfd 100644
--- a/src/VBox/Installer/linux/Makefile.include.footer
+++ b/src/VBox/Installer/linux/Makefile.include.footer
@@ -70,6 +70,7 @@ $(MODULE)-y  := $(OBJS)
 # build defs
 EXTRA_CFLAGS += $(MOD_CFLAGS) $(INCL) $(KFLAGS) $(MOD_EXTRA) $(KDEBUG)
 
+.PHONY: $(MODULE)
 all: $(MODULE)
 
 obj-m += $(MODULE).o
diff --git a/src/VBox/Installer/linux/Makefile.include.header b/src/VBox/Installer/linux/Makefile.include.header
index a9bc168..bda987a 100644
--- a/src/VBox/Installer/linux/Makefile.include.header
+++ b/src/VBox/Installer/linux/Makefile.include.header
@@ -14,6 +14,12 @@
 # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
 #
 
+# Testing:
+# * Building with KERN_VER set to an installed but non-current kernel works and
+#   installs to the right location.
+# * Building with KERN_DIR and/or MODULE_DIR set uses the value specified and
+#   the default value for the unspecified one if any.
+
 #
 # These file should be included by the Makefiles for any kernel modules we
 # build as part of the Guest Additions.  The intended way of doing this is as
@@ -88,9 +94,18 @@ ifeq ($(KERNELRELEASE),)
  # building from this directory
  #
 
+ # target kernel version
+ ifndef KERN_VER
+  KERN_VER := $(shell uname -r)
+ else
+  ifneq ($(shell if test -d /lib/modules/$(KERN_VER)/build; then echo yes; fi),yes)
+   KERN_VER := $(shell uname -r)
+  endif
+ endif
+
  # kernel base directory
  ifndef KERN_DIR
-  KERN_DIR := /lib/modules/$(shell uname -r)/build
+  KERN_DIR := /lib/modules/$(KERN_VER)/build
   ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
    KERN_DIR := /usr/src/linux
    ifneq ($(shell if test -d $(KERN_DIR); then echo yes; fi),yes)
@@ -119,7 +134,7 @@ ifeq ($(KERNELRELEASE),)
  # module install dir, only for current kernel
  ifneq ($(filter install install_rpm,$(MAKECMDGOALS)),)
   ifndef MODULE_DIR
-   MODULE_DIR_TST := /lib/modules/$(shell uname -r)
+   MODULE_DIR_TST := /lib/modules/$(KERN_VER)
    ifeq ($(shell if test -d $(MODULE_DIR_TST); then echo yes; fi),yes)
     MODULE_DIR := $(MODULE_DIR_TST)/misc
    else
diff --git a/src/VBox/Installer/linux/distributions_deb b/src/VBox/Installer/linux/distributions_deb
index c7e096f..1c29f11 100644
--- a/src/VBox/Installer/linux/distributions_deb
+++ b/src/VBox/Installer/linux/distributions_deb
@@ -3,6 +3,8 @@ _Debian_stretch  = DEBIAN_9_0
 _Debian_jessie   = DEBIAN_8_0
 _Debian_wheezy   = DEBIAN_7_0
 _Debian_squeeze  = DEBIAN_6_0
+_Ubuntu_zesty    = UBUNTU_17_04
+_Ubuntu_yakkety  = UBUNTU_16_10
 _Ubuntu_xenial   = UBUNTU_16_04
 _Ubuntu_wily     = UBUNTU_15_10
 _Ubuntu_trusty   = UBUNTU_14_04
diff --git a/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp b/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp
index 698d9d4..385467a 100644
--- a/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp
+++ b/src/VBox/Installer/win/InstallHelper/VBoxInstallHelper.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2008-2016 Oracle Corporation
+ * Copyright (C) 2008-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -504,6 +504,9 @@ UINT __stdcall InstallBranding(MSIHANDLE hModule)
 
 static MSIHANDLE g_hCurrentModule = NULL;
 
+static UINT _uninstallNetFlt(MSIHANDLE hModule);
+static UINT _uninstallNetLwf(MSIHANDLE hModule);
+
 static VOID vboxDrvLoggerCallback(VBOXDRVCFG_LOG_SEVERITY enmSeverity, char *pszMsg, void *pvContext)
 {
     RT_NOREF1(pvContext);
@@ -698,7 +701,7 @@ static UINT vboxNetFltQueryInfArray(MSIHANDLE hModule, OUT LPWSTR pwszPtInf, OUT
 
 #endif /*VBOX_WITH_NETFLT*/
 
-UINT __stdcall UninstallNetFlt(MSIHANDLE hModule)
+/*static*/ UINT _uninstallNetFlt(MSIHANDLE hModule)
 {
 #ifdef VBOX_WITH_NETFLT
     INetCfg *pNetCfg;
@@ -739,11 +742,17 @@ UINT __stdcall UninstallNetFlt(MSIHANDLE hModule)
     }
 #endif /* VBOX_WITH_NETFLT */
 
-    /* Never fail the install even if we did not succeed. */
+    /* Never fail the uninstall even if we did not succeed. */
     return ERROR_SUCCESS;
 }
 
-UINT __stdcall InstallNetFlt(MSIHANDLE hModule)
+UINT __stdcall UninstallNetFlt(MSIHANDLE hModule)
+{
+    (void)_uninstallNetLwf(hModule);
+    return _uninstallNetFlt(hModule);
+}
+
+static UINT _installNetFlt(MSIHANDLE hModule)
 {
 #ifdef VBOX_WITH_NETFLT
     UINT uErr;
@@ -798,8 +807,14 @@ UINT __stdcall InstallNetFlt(MSIHANDLE hModule)
     return ERROR_SUCCESS;
 }
 
+UINT __stdcall InstallNetFlt(MSIHANDLE hModule)
+{
+    (void)_uninstallNetLwf(hModule);
+    return _installNetFlt(hModule);
+}
 
-UINT __stdcall UninstallNetLwf(MSIHANDLE hModule)
+
+/*static*/ UINT _uninstallNetLwf(MSIHANDLE hModule)
 {
 #ifdef VBOX_WITH_NETFLT
     INetCfg *pNetCfg;
@@ -840,11 +855,17 @@ UINT __stdcall UninstallNetLwf(MSIHANDLE hModule)
     }
 #endif /* VBOX_WITH_NETFLT */
 
-    /* Never fail the install even if we did not succeed. */
+    /* Never fail the uninstall even if we did not succeed. */
     return ERROR_SUCCESS;
 }
 
-UINT __stdcall InstallNetLwf(MSIHANDLE hModule)
+UINT __stdcall UninstallNetLwf(MSIHANDLE hModule)
+{
+    (void)_uninstallNetFlt(hModule);
+    return _uninstallNetLwf(hModule);
+}
+
+static UINT _installNetLwf(MSIHANDLE hModule)
 {
 #ifdef VBOX_WITH_NETFLT
     UINT uErr;
@@ -914,6 +935,12 @@ UINT __stdcall InstallNetLwf(MSIHANDLE hModule)
     return ERROR_SUCCESS;
 }
 
+UINT __stdcall InstallNetLwf(MSIHANDLE hModule)
+{
+    (void)_uninstallNetFlt(hModule);
+    return _installNetLwf(hModule);
+}
+
 
 #if 0
 static BOOL RenameHostOnlyConnectionsCallback(HDEVINFO hDevInfo, PSP_DEVINFO_DATA pDev, PVOID pContext)
@@ -1129,7 +1156,7 @@ static UINT _removeHostOnlyInterfaces(MSIHANDLE hModule, LPCWSTR pwszId)
     netCfgLoggerDisable();
 #endif /* VBOX_WITH_NETFLT */
 
-    /* Never fail the install even if we did not succeed. */
+    /* Never fail the uninstall even if we did not succeed. */
     return ERROR_SUCCESS;
 }
 
@@ -1162,7 +1189,7 @@ static UINT _stopHostOnlyInterfaces(MSIHANDLE hModule, LPCWSTR pwszId)
     netCfgLoggerDisable();
 #endif /* VBOX_WITH_NETFLT */
 
-    /* Never fail the install even if we did not succeed. */
+    /* Never fail the uninstall even if we did not succeed. */
     return ERROR_SUCCESS;
 }
 
@@ -1243,7 +1270,7 @@ static UINT _updateHostOnlyInterfaces(MSIHANDLE hModule, LPCWSTR pwszInfName, LP
     netCfgLoggerDisable();
 #endif /* VBOX_WITH_NETFLT */
 
-    /* Never fail the install even if we did not succeed. */
+    /* Never fail the update even if we did not succeed. */
     return ERROR_SUCCESS;
 }
 
@@ -1298,7 +1325,7 @@ static UINT _uninstallNetAdp(MSIHANDLE hModule, LPCWSTR pwszId)
     }
 #endif /* VBOX_WITH_NETFLT */
 
-    /* Never fail the install even if we did not succeed. */
+    /* Never fail the uninstall even if we did not succeed. */
     return ERROR_SUCCESS;
 }
 
diff --git a/src/VBox/Installer/win/VBoxMergeNetAdp6Seq.wxi b/src/VBox/Installer/win/VBoxMergeNetAdp6Seq.wxi
index 1750890..ee7719f 100644
--- a/src/VBox/Installer/win/VBoxMergeNetAdp6Seq.wxi
+++ b/src/VBox/Installer/win/VBoxMergeNetAdp6Seq.wxi
@@ -32,15 +32,26 @@
             <![CDATA[(NOT Installed) AND (VersionNT >= 600) AND ($cp_NetAdp6Driver=3)]]>
         <?endif ?>
     </Custom>
-    <!-- Don't remove the host-only interfaces on update, only on uninstall -->
+    <!-- Remove the host-only interfaces on uninstall only. Includes
+         VBoxNetAdp6 driver uninstall.
+         @todo r=klaus Clean up this inconsistency by changing what the
+         install helper DLL does. It's very surprising behavior and needs
+         digging through a lot of code to understand the where and why. -->
     <Custom Action="ca_RemoveHostOnlyInterfacesNDIS6" After="InstallInitialize" >
         <![CDATA[NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")]]>
     </Custom>
-    <!-- First stop the existing host-only interfaces on update ... -->
+    <!-- Stop the host-only interfaces on update only. Driver still has to be
+         uninstalled, and the creation of interfaces in the new installer will
+         do the actual upgrading, preserving the interfaces. -->
     <Custom Action="ca_StopHostOnlyInterfacesNDIS6" After="InstallInitialize" >
         <![CDATA[(UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]>
     </Custom>
 
+    <!-- Uninstall the driver only on package upgrade, as for uninstall it is
+         included in ca_RemoveHostOnlyInterfaces.
+         @todo r=klaus Clean up this inconsistency by changing what the
+         install helper DLL does. It's very surprising behavior and needs
+         digging through a lot of code to understand the where and why. -->
     <Custom Action="ca_UninstallNetAdp6Args" Before="ca_UninstallNetAdp6" >
         <![CDATA[(UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]>
     </Custom>
diff --git a/src/VBox/Installer/win/VBoxMergeNetAdpSeq.wxi b/src/VBox/Installer/win/VBoxMergeNetAdpSeq.wxi
index c0aaa45..a080055 100644
--- a/src/VBox/Installer/win/VBoxMergeNetAdpSeq.wxi
+++ b/src/VBox/Installer/win/VBoxMergeNetAdpSeq.wxi
@@ -32,15 +32,26 @@
             <![CDATA[(NOT Installed) AND ($cp_NetAdpDriver=3)]]>
         <?endif ?>
     </Custom>
-    <!-- Don't remove the host-only interfaces on update, only on uninstall -->
+    <!-- Remove the host-only interfaces on uninstall only. Includes
+         VBoxNetAdp driver uninstall.
+         @todo r=klaus Clean up this inconsistency by changing what the
+         install helper DLL does. It's very surprising behavior and needs
+         digging through a lot of code to understand the where and why. -->
     <Custom Action="ca_RemoveHostOnlyInterfaces" After="InstallInitialize" >
         <![CDATA[NOT (UPGRADINGPRODUCTCODE) AND (Installed) AND (REMOVE="ALL")]]>
     </Custom>
-    <!-- First stop the existing host-only interfaces on update ... -->
+    <!-- Stop the host-only interfaces on update only. Driver still has to be
+         uninstalled, and the creation of interfaces in the new installer will
+         do the actual upgrading, preserving the interfaces. -->
     <Custom Action="ca_StopHostOnlyInterfaces" After="InstallInitialize" >
         <![CDATA[(UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]>
     </Custom>
 
+    <!-- Uninstall the driver only on package upgrade, as for uninstall it is
+         included in ca_RemoveHostOnlyInterfaces.
+         @todo r=klaus Clean up this inconsistency by changing what the
+         install helper DLL does. It's very surprising behavior and needs
+         digging through a lot of code to understand the where and why. -->
     <Custom Action="ca_UninstallNetAdpArgs" Before="ca_UninstallNetAdp" >
         <![CDATA[(UPGRADINGPRODUCTCODE) AND (REMOVE="ALL")]]>
     </Custom>
diff --git a/src/VBox/Installer/win/VBoxMergeUSB.wxi b/src/VBox/Installer/win/VBoxMergeUSB.wxi
index 81cab2c..b53ddbe 100644
--- a/src/VBox/Installer/win/VBoxMergeUSB.wxi
+++ b/src/VBox/Installer/win/VBoxMergeUSB.wxi
@@ -19,7 +19,7 @@
     <Directory Id="dir_VBoxUSBFilter" Name="filter">
         <Component Id="cp_USBFilterDriver" Guid="B7D782D2-96DF-4775-A0E1-A76CF7B04B65" Win64="$(var.Property_Win64)">
             <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes" DeleteFiles="yes"
-                  Legacy="$(var.Property_DriverLegacy)" Sequence="0" PlugAndPlayPrompt="no"/>
+                  Legacy="$(var.Property_DriverLegacy)" Sequence="3" PlugAndPlayPrompt="no"/>
             <File Id="file_VBoxUSBMon.sys" Name="VBoxUSBMon.sys"
                   Source="$(env.PATH_OUT)\bin\VBoxUSBMon.sys" />
             <File Id="file_VBoxUSBMon.inf" Name="VBoxUSBMon.inf"
@@ -34,7 +34,7 @@
     <Directory Id="dir_VBoxUSBDevice" Name="device">
         <Component Id="cp_USBDeviceDriver" Guid="010FE46A-E358-43E2-8BDC-38BC8BEC82E0" Win64="$(var.Property_Win64)">
             <difxapp:Driver AddRemovePrograms="no" ForceInstall="yes"  DeleteFiles="yes"
-                  Legacy="$(var.Property_DriverLegacy)" Sequence="0" PlugAndPlayPrompt="no"/>
+                  Legacy="$(var.Property_DriverLegacy)" Sequence="3" PlugAndPlayPrompt="no"/>
             <File Id="file_VBoxUSB.sys" Name="VBoxUSB.sys"
                   Source="$(env.PATH_OUT)\bin\VBoxUSB.sys" />
             <File Id="file_VBoxUSB.inf" Name="VBoxUSB.inf"
diff --git a/src/VBox/Main/include/DisplayImpl.h b/src/VBox/Main/include/DisplayImpl.h
index 9cf149c..a10e052 100644
--- a/src/VBox/Main/include/DisplayImpl.h
+++ b/src/VBox/Main/include/DisplayImpl.h
@@ -33,6 +33,8 @@
 
 #include "DisplaySourceBitmapWrap.h"
 
+#define NEW_RESIZE
+
 class Console;
 struct VIDEORECCONTEXT;
 
@@ -155,8 +157,14 @@ public:
     int  i_registerSSM(PUVM pUVM);
 
     // public methods only for internal purposes
+#ifndef NEW_RESIZE
     int  i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM, uint32_t cbLine,
                                uint32_t w, uint32_t h, uint16_t flags);
+#else
+    int i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM,
+                              uint32_t cbLine, uint32_t w, uint32_t h, uint16_t flags,
+                              int32_t xOrigin, int32_t yOrigin, bool fVGAResize);
+#endif
     void i_handleDisplayUpdate(unsigned uScreenId, int x, int y, int w, int h);
     void i_handleUpdateVMMDevSupportsGraphics(bool fSupportsGraphics);
     void i_handleUpdateGuestVBVACapabilities(uint32_t fNewCapabilities);
@@ -300,6 +308,9 @@ private:
                                  ULONG aHeight,
                                  BitmapFormat_T aBitmapFormat,
                                  ULONG *pcbOut);
+#ifdef NEW_RESIZE
+    int processVBVAResize(PCVBVAINFOVIEW pView, PCVBVAINFOSCREEN pScreen, void *pvVRAM, bool fResetInputMapping);
+#endif
 
 #ifdef VBOX_WITH_CRHGSMI
     void i_setupCrHgsmiData(void);
diff --git a/src/VBox/Main/src-all/ExtPackManagerImpl.cpp b/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
index fc2af9f..fedabdf 100644
--- a/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
+++ b/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
@@ -2436,6 +2436,7 @@ void ExtPackManager::i_removeExtPack(const char *a_pszName)
 }
 
 #if !defined(VBOX_COM_INPROC)
+
 /**
  * Refreshes the specified extension pack.
  *
@@ -2640,14 +2641,20 @@ HRESULT ExtPackManager::i_doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace
         {
             if (pExtPack && a_fReplace)
             {
-                if (!i_areThereAnyRunningVMs())
-                    hrc = pExtPack->i_callUninstallHookAndClose(m->pVirtualBox, false /*a_ForcedRemoval*/);
-                else
+                /* We must leave the lock when calling i_areThereAnyRunningVMs,
+                   which means we have to redo the refresh call afterwards. */
+                autoLock.release();
+                bool fRunningVMs = i_areThereAnyRunningVMs();
+                autoLock.acquire();
+                hrc = i_refreshExtPack(pStrName->c_str(), false /*a_fUnusableIsError*/, &pExtPack);
+                if (fRunningVMs)
                 {
                     LogRel(("Install extension pack '%s' failed because at least one VM is still running.", pStrName->c_str()));
                     hrc = setError(E_FAIL, tr("Install extension pack '%s' failed because at least one VM is still running"),
                                    pStrName->c_str());
                 }
+                else if (SUCCEEDED(hrc) && pExtPack)
+                    hrc = pExtPack->i_callUninstallHookAndClose(m->pVirtualBox, false /*a_ForcedRemoval*/);
             }
             else if (pExtPack)
                 hrc = setError(E_FAIL,
@@ -2743,12 +2750,12 @@ HRESULT ExtPackManager::i_doUninstall(Utf8Str const *a_pstrName, bool a_fForcedR
 
     AutoCaller autoCaller(this);
     HRESULT hrc = autoCaller.rc();
-
     if (SUCCEEDED(hrc))
     {
-        AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS);
         if (a_fForcedRemoval || !i_areThereAnyRunningVMs())
         {
+            AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS);
+
             /*
              * Refresh the data we have on the extension pack as it may be made
              * stale by direct meddling or some other user.
@@ -2818,10 +2825,7 @@ HRESULT ExtPackManager::i_doUninstall(Utf8Str const *a_pstrName, bool a_fForcedR
          * extension pack (old ones will not be called).
          */
         if (m->enmContext == VBOXEXTPACKCTX_PER_USER_DAEMON)
-        {
-            autoLock.release();
             i_callAllVirtualBoxReadyHooks();
-        }
     }
 
     return hrc;
@@ -2852,7 +2856,8 @@ void ExtPackManager::i_callAllVirtualBoxReadyHooks(void)
             ++it;
     }
 }
-#endif
+
+#endif /* !VBOX_COM_INPROC */
 
 /**
  * Calls the pfnConsoleReady hook for all working extension packs.
diff --git a/src/VBox/Main/src-all/Global.cpp b/src/VBox/Main/src-all/Global.cpp
index fd31386..70f7154 100644
--- a/src/VBox/Main/src-all/Global.cpp
+++ b/src/VBox/Main/src-all/Global.cpp
@@ -141,7 +141,7 @@ const Global::OSType Global::sOSTypes[] =
 
     { "Windows", "Microsoft Windows", "Windows2012_64",     "Windows 2012 (64-bit)",
       VBOXOSTYPE_Win2k12_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3,
-       2048,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
+       2048,128, 32 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
         StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA, AudioCodecType_STAC9221  },
 
     { "Windows", "Microsoft Windows", "Windows10",          "Windows 10 (32-bit)",
@@ -154,6 +154,11 @@ const Global::OSType Global::sOSTypes[] =
        2048,128, 32 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
         StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA, AudioCodecType_STAC9221  },
 
+    { "Windows", "Microsoft Windows", "Windows2016_64",     "Windows 2016 (64-bit)",
+      VBOXOSTYPE_Win2k16_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3,
+       2048,128, 32 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
+        StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA, AudioCodecType_STAC9221  },
+
     { "Windows", "Microsoft Windows", "WindowsNT",          "Other Windows (32-bit)",
       VBOXOSTYPE_WinNT,           VBOXOSHINT_NONE,
        512,  16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
@@ -280,13 +285,13 @@ const Global::OSType Global::sOSTypes[] =
 
     { "Linux",   "Linux",             "Ubuntu",             "Ubuntu (32-bit)",
       VBOXOSTYPE_Ubuntu,          VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET | VBOXOSHINT_X2APIC,
-      1024,  16,  8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+      1024,  16, 10 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
         StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97, AudioCodecType_AD1980  },
 
     { "Linux",   "Linux",             "Ubuntu_64",          "Ubuntu (64-bit)",
       VBOXOSTYPE_Ubuntu_x64,      VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC
                                 | VBOXOSHINT_USBTABLET | VBOXOSHINT_X2APIC,
-      1024,  16,  8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
+      1024,  16, 10 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
         StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97, AudioCodecType_AD1980  },
 
     { "Linux",   "Linux",             "Xandros",            "Xandros (32-bit)",
diff --git a/src/VBox/Main/src-client/ConsoleImpl2.cpp b/src/VBox/Main/src-client/ConsoleImpl2.cpp
index 0df6235..2bea66c 100644
--- a/src/VBox/Main/src-client/ConsoleImpl2.cpp
+++ b/src/VBox/Main/src-client/ConsoleImpl2.cpp
@@ -957,7 +957,8 @@ int Console::i_configConstructorInner(PUVM pUVM, PVM pVM, AutoWriteLock *pAlock)
         /* Expose CMPXCHG16B. Currently a hack. */
         if (   osTypeId == "Windows81_64"
             || osTypeId == "Windows2012_64"
-            || osTypeId == "Windows10_64")
+            || osTypeId == "Windows10_64"
+            || osTypeId == "Windows2016_64")
         {
             LogRel(("Enabling CMPXCHG16B for Windows 8.1 / 2k12 or newer guests\n"));
             InsertConfigInteger(pCPUM, "CMPXCHG16B", true);
diff --git a/src/VBox/Main/src-client/DisplayImpl.cpp b/src/VBox/Main/src-client/DisplayImpl.cpp
index d71394a..79cfcc6 100644
--- a/src/VBox/Main/src-client/DisplayImpl.cpp
+++ b/src/VBox/Main/src-client/DisplayImpl.cpp
@@ -887,6 +887,7 @@ int Display::i_notifyCroglResize(PCVBVAINFOVIEW pView, PCVBVAINFOSCREEN pScreen,
     return VINF_SUCCESS;
 }
 
+#ifndef NEW_RESIZE
 /**
  *  Handles display resize event.
  *
@@ -897,10 +898,30 @@ int Display::i_notifyCroglResize(PCVBVAINFOVIEW pView, PCVBVAINFOSCREEN pScreen,
  */
 int Display::i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM,
                                    uint32_t cbLine, uint32_t w, uint32_t h, uint16_t flags)
+#else
+/**
+ *  Handles display resize event.
+ *
+ * @param uScreenId Screen ID
+ * @param bpp       New bits per pixel.
+ * @param pvVRAM    VRAM pointer.
+ * @param cbLine    New bytes per line.
+ * @param w         New display width.
+ * @param h         New display height.
+ * @param flags     Flags of the new video mode.
+ * @param xOrigin   New display origin X.
+ * @param yOrigin   New display origin Y.
+ * @param fVGAResize Whether the resize is originated from the VGA device (DevVGA).
+ */
+int Display::i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRAM,
+                                   uint32_t cbLine, uint32_t w, uint32_t h, uint16_t flags,
+                                   int32_t xOrigin, int32_t yOrigin, bool fVGAResize)
+#endif
 {
     LogRel(("Display::handleDisplayResize: uScreenId=%d pvVRAM=%p w=%d h=%d bpp=%d cbLine=0x%X flags=0x%X\n", uScreenId,
             pvVRAM, w, h, bpp, cbLine, flags));
 
+#ifndef NEW_RESIZE
     if (uScreenId >= mcMonitors)
         return VINF_SUCCESS;
 
@@ -987,6 +1008,132 @@ int Display::i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRA
     videoCaptureScreenChanged(uScreenId);
 #endif
 
+#else /* NEW_RESIZE */
+
+    /* Caller must not hold the object lock. */
+    AssertReturn(!isWriteLockOnCurrentThread(), VERR_INVALID_STATE);
+
+    /* Note: the old code checked if the video mode was actially chnaged and
+     * did not invalidate the source bitmap if the mode did not change.
+     * The new code always invalidates the source bitmap, i.e. it will
+     * notify the frontend even if nothing actually changed.
+     *
+     * Implementing the filtering is possible but might lead to pfnSetRenderVRAM races
+     * between this method and QuerySourceBitmap. Such races can be avoided by implementing
+     * the @todo below.
+     */
+
+    /* Make sure that the VGA device does not access the source bitmap. */
+    if (uScreenId == VBOX_VIDEO_PRIMARY_SCREEN && mpDrv)
+    {
+        /// @todo It is probably more convenient to implement
+        // mpDrv->pUpPort->pfnSetOutputBitmap(pvVRAM, cbScanline, cBits, cx, cy, bool fSet);
+        // and remove IConnector.pbData, cbScanline, cBits, cx, cy.
+        // fSet = false disables rendering and VGA can check
+        // if it is already rendering to a different bitmap, avoiding
+        // enable/disable rendering races.
+        mpDrv->pUpPort->pfnSetRenderVRAM(mpDrv->pUpPort, false);
+
+        mpDrv->IConnector.pbData     = NULL;
+        mpDrv->IConnector.cbScanline = 0;
+        mpDrv->IConnector.cBits      = 32; /* DevVGA does not work with cBits == 0. */
+        mpDrv->IConnector.cx         = 0;
+        mpDrv->IConnector.cy         = 0;
+    }
+
+    /* Update maFramebuffers[uScreenId] under lock. */
+    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    if (uScreenId >= mcMonitors)
+        return VINF_SUCCESS;
+
+    DISPLAYFBINFO *pFBInfo = &maFramebuffers[uScreenId];
+
+    /* Whether the monitor position has changed.
+     * A resize initiated by the VGA device does not change the monitor position.
+     */
+    const bool fNewOrigin =    !fVGAResize
+                            && (   pFBInfo->xOrigin != xOrigin
+                                || pFBInfo->yOrigin != yOrigin);
+
+    /* The event for disabled->enabled transition.
+     * VGA resizes also come when the guest uses VBVA mode. They do not affect pFBInfo->fDisabled.
+     * The primary screen is re-enabled when the guest leaves the VBVA mode in i_displayVBVADisable.
+     */
+    const bool fGuestMonitorChangedEvent =   !fVGAResize
+                                          && (pFBInfo->fDisabled != RT_BOOL(flags & VBVA_SCREEN_F_DISABLED));
+
+    /* Reset the update mode. */
+    pFBInfo->updateImage.pSourceBitmap.setNull();
+    pFBInfo->updateImage.pu8Address = NULL;
+    pFBInfo->updateImage.cbLine = 0;
+
+    /* Release the current source bitmap. */
+    pFBInfo->pSourceBitmap.setNull();
+
+    /* Update the video mode information. */
+    pFBInfo->w = w;
+    pFBInfo->h = h;
+    pFBInfo->u16BitsPerPixel = (uint16_t)bpp;
+    pFBInfo->pu8FramebufferVRAM = (uint8_t *)pvVRAM;
+    pFBInfo->u32LineSize = cbLine;
+    if (!fVGAResize)
+    {
+        /* Fields which are not used in not VBVA modes and not affected by a VGA resize. */
+        pFBInfo->flags = flags;
+        pFBInfo->xOrigin = xOrigin;
+        pFBInfo->yOrigin = yOrigin;
+        pFBInfo->fDisabled = RT_BOOL(flags & VBVA_SCREEN_F_DISABLED);
+        pFBInfo->fVBVAForceResize = false;
+    }
+
+    /* Prepare local vars for the notification code below. */
+    ComPtr<IFramebuffer> pFramebuffer = pFBInfo->pFramebuffer;
+    const bool fDisabled = pFBInfo->fDisabled;
+
+    alock.release();
+
+    if (!pFramebuffer.isNull())
+    {
+        HRESULT hr = pFramebuffer->NotifyChange(uScreenId, 0, 0, w, h); /** @todo origin */
+        LogFunc(("NotifyChange hr %08X\n", hr));
+        NOREF(hr);
+    }
+
+    if (fGuestMonitorChangedEvent)
+    {
+        if (fDisabled)
+            fireGuestMonitorChangedEvent(mParent->i_getEventSource(),
+                                         GuestMonitorChangedEventType_Disabled,
+                                         uScreenId,
+                                         0, 0, 0, 0);
+        else
+            fireGuestMonitorChangedEvent(mParent->i_getEventSource(),
+                                         GuestMonitorChangedEventType_Enabled,
+                                         uScreenId,
+                                         xOrigin, yOrigin, w, h);
+    }
+
+    if (fNewOrigin)
+        fireGuestMonitorChangedEvent(mParent->i_getEventSource(),
+                                     GuestMonitorChangedEventType_NewOrigin,
+                                     uScreenId,
+                                     xOrigin, yOrigin, 0, 0);
+
+    /* Inform the VRDP server about the change of display parameters. */
+    LogRelFlowFunc(("Calling VRDP\n"));
+    mParent->i_consoleVRDPServer()->SendResize();
+
+    /* And re-send the seamless rectangles if necessary. */
+    if (mfSeamlessEnabled)
+        i_handleSetVisibleRegion(mcRectVisibleRegion, mpRectVisibleRegion);
+
+#ifdef VBOX_WITH_VIDEOREC
+    videoCaptureScreenChanged(uScreenId);
+#endif
+
+#endif /* NEW_RESIZE */
+
     LogRelFlowFunc(("[%d]: default format %d\n", uScreenId, pFBInfo->fDefaultFormat));
 
     return VINF_SUCCESS;
@@ -1047,6 +1194,7 @@ void Display::i_handleDisplayUpdate(unsigned uScreenId, int x, int y, int w, int
     /* if (maFramebuffers[uScreenId].flags & VBVA_SCREEN_F_BLANK)
         return; */
 
+#ifndef NEW_RESIZE
     i_checkCoordBounds(&x, &y, &w, &h, maFramebuffers[uScreenId].w,
                                        maFramebuffers[uScreenId].h);
 
@@ -1089,6 +1237,110 @@ void Display::i_handleDisplayUpdate(unsigned uScreenId, int x, int y, int w, int
             }
         }
     }
+#else /* NEW_RESIZE */
+    DISPLAYFBINFO *pFBInfo = &maFramebuffers[uScreenId];
+    AutoReadLock alockr(this COMMA_LOCKVAL_SRC_POS);
+
+    ComPtr<IFramebuffer> pFramebuffer = pFBInfo->pFramebuffer;
+    ComPtr<IDisplaySourceBitmap> pSourceBitmap = pFBInfo->updateImage.pSourceBitmap;
+
+    alockr.release();
+
+    if (RT_LIKELY(!pFramebuffer.isNull()))
+    {
+        if (RT_LIKELY(!RT_BOOL(pFBInfo->u32Caps & FramebufferCapabilities_UpdateImage)))
+        {
+            i_checkCoordBounds(&x, &y, &w, &h, pFBInfo->w, pFBInfo->h);
+
+            if (w != 0 && h != 0)
+            {
+                pFramebuffer->NotifyUpdate(x, y, w, h);
+            }
+        }
+        else
+        {
+            if (RT_LIKELY(!pSourceBitmap.isNull()))
+            { /* likely */ }
+            else
+            {
+                /* Create a source bitmap if UpdateImage mode is used. */
+                HRESULT hr = QuerySourceBitmap(uScreenId, pSourceBitmap.asOutParam());
+                if (SUCCEEDED(hr))
+                {
+                    BYTE *pAddress = NULL;
+                    ULONG ulWidth = 0;
+                    ULONG ulHeight = 0;
+                    ULONG ulBitsPerPixel = 0;
+                    ULONG ulBytesPerLine = 0;
+                    BitmapFormat_T bitmapFormat = BitmapFormat_Opaque;
+
+                    hr = pSourceBitmap->QueryBitmapInfo(&pAddress,
+                                                        &ulWidth,
+                                                        &ulHeight,
+                                                        &ulBitsPerPixel,
+                                                        &ulBytesPerLine,
+                                                        &bitmapFormat);
+                    if (SUCCEEDED(hr))
+                    {
+                        AutoWriteLock alockw(this COMMA_LOCKVAL_SRC_POS);
+
+                        if (pFBInfo->updateImage.pSourceBitmap.isNull())
+                        {
+                            pFBInfo->updateImage.pSourceBitmap = pSourceBitmap;
+                            pFBInfo->updateImage.pu8Address = pAddress;
+                            pFBInfo->updateImage.cbLine = ulBytesPerLine;
+                        }
+
+                        pSourceBitmap = pFBInfo->updateImage.pSourceBitmap;
+
+                        alockw.release();
+                    }
+                }
+            }
+
+            if (RT_LIKELY(!pSourceBitmap.isNull()))
+            {
+                BYTE *pbAddress = NULL;
+                ULONG ulWidth = 0;
+                ULONG ulHeight = 0;
+                ULONG ulBitsPerPixel = 0;
+                ULONG ulBytesPerLine = 0;
+                BitmapFormat_T bitmapFormat = BitmapFormat_Opaque;
+
+                HRESULT hr = pSourceBitmap->QueryBitmapInfo(&pbAddress,
+                                                            &ulWidth,
+                                                            &ulHeight,
+                                                            &ulBitsPerPixel,
+                                                            &ulBytesPerLine,
+                                                            &bitmapFormat);
+                if (SUCCEEDED(hr))
+                {
+                    /* Make sure that the requested update is within the source bitmap dimensions. */
+                    i_checkCoordBounds(&x, &y, &w, &h, ulWidth, ulHeight);
+
+                    if (w != 0 && h != 0)
+                    {
+                        const size_t cbData = w * h * 4;
+                        com::SafeArray<BYTE> image(cbData);
+
+                        uint8_t *pu8Dst = image.raw();
+                        const uint8_t *pu8Src = pbAddress + ulBytesPerLine * y + x * 4;
+
+                        int i;
+                        for (i = y; i < y + h; ++i)
+                        {
+                            memcpy(pu8Dst, pu8Src, w * 4);
+                            pu8Dst += w * 4;
+                            pu8Src += ulBytesPerLine;
+                        }
+
+                        pFramebuffer->NotifyUpdateImage(x, y, w, h, ComSafeArrayAsInParam(image));
+                    }
+                }
+            }
+        }
+    }
+#endif /* NEW_RESIZE */
 
 #ifndef VBOX_WITH_HGSMI
     if (!mVideoAccelLegacy.fVideoAccelEnabled)
@@ -1575,12 +1827,24 @@ void Display::i_notifyPowerDown(void)
         DISPLAYFBINFO *pFBInfo = &maFramebuffers[uScreenId];
         if (!pFBInfo->fDisabled)
         {
+#ifndef NEW_RESIZE
             i_handleDisplayResize(uScreenId, 32,
                                   pFBInfo->pu8FramebufferVRAM,
                                   pFBInfo->u32LineSize,
                                   pFBInfo->w,
                                   pFBInfo->h,
                                   pFBInfo->flags);
+#else
+            i_handleDisplayResize(uScreenId, 32,
+                                  pFBInfo->pu8FramebufferVRAM,
+                                  pFBInfo->u32LineSize,
+                                  pFBInfo->w,
+                                  pFBInfo->h,
+                                  pFBInfo->flags,
+                                  pFBInfo->xOrigin,
+                                  pFBInfo->yOrigin,
+                                  false);
+#endif
         }
     }
 }
@@ -1654,6 +1918,7 @@ HRESULT Display::attachFramebuffer(ULONG aScreenId, const ComPtr<IFramebuffer> &
     /* The driver might not have been constructed yet */
     if (mpDrv)
     {
+#ifndef NEW_RESIZE
         /* Setup the new framebuffer. */
         i_handleDisplayResize(aScreenId, pFBInfo->u16BitsPerPixel,
                               pFBInfo->pu8FramebufferVRAM,
@@ -1661,6 +1926,15 @@ HRESULT Display::attachFramebuffer(ULONG aScreenId, const ComPtr<IFramebuffer> &
                               pFBInfo->w,
                               pFBInfo->h,
                               pFBInfo->flags);
+#else
+        /* Inform the framebuffer about the actual screen size. */
+        HRESULT hr = aFramebuffer->NotifyChange(aScreenId, 0, 0, pFBInfo->w, pFBInfo->h); /** @todo origin */
+        LogFunc(("NotifyChange hr %08X\n", hr)); NOREF(hr);
+
+        /* Re-send the seamless rectangles if necessary. */
+        if (mfSeamlessEnabled)
+            i_handleSetVisibleRegion(mcRectVisibleRegion, mpRectVisibleRegion);
+#endif
     }
 
     Console::SafeVMPtrQuiet ptrVM(mParent);
@@ -2819,6 +3093,7 @@ HRESULT Display::querySourceBitmap(ULONG aScreenId,
 
     if (pFBInfo->pSourceBitmap.isNull())
     {
+#ifndef NEW_RESIZE
         /* Create a new object. */
         ComObjPtr<DisplaySourceBitmap> obj;
         hr = obj.createObject();
@@ -2861,6 +3136,48 @@ HRESULT Display::querySourceBitmap(ULONG aScreenId,
             pFBInfo->pSourceBitmap = obj;
             pFBInfo->fDefaultFormat = fDefaultFormat;
         }
+#else /* NEW_RESIZE */
+        /* Create a new object. */
+        ComObjPtr<DisplaySourceBitmap> obj;
+        hr = obj.createObject();
+        if (SUCCEEDED(hr))
+            hr = obj->init(this, aScreenId, pFBInfo);
+
+        if (SUCCEEDED(hr))
+        {
+            pFBInfo->pSourceBitmap = obj;
+            pFBInfo->fDefaultFormat = !obj->i_usesVRAM();
+
+            if (aScreenId == VBOX_VIDEO_PRIMARY_SCREEN)
+            {
+                /* Start buffer updates. */
+                BYTE *pAddress = NULL;
+                ULONG ulWidth = 0;
+                ULONG ulHeight = 0;
+                ULONG ulBitsPerPixel = 0;
+                ULONG ulBytesPerLine = 0;
+                BitmapFormat_T bitmapFormat = BitmapFormat_Opaque;
+
+                pFBInfo->pSourceBitmap->QueryBitmapInfo(&pAddress,
+                                                        &ulWidth,
+                                                        &ulHeight,
+                                                        &ulBitsPerPixel,
+                                                        &ulBytesPerLine,
+                                                        &bitmapFormat);
+
+                mpDrv->IConnector.pbData     = pAddress;
+                mpDrv->IConnector.cbScanline = ulBytesPerLine;
+                mpDrv->IConnector.cBits      = ulBitsPerPixel;
+                mpDrv->IConnector.cx         = ulWidth;
+                mpDrv->IConnector.cy         = ulHeight;
+
+                fSetRenderVRAM = pFBInfo->fDefaultFormat;
+            }
+
+            /* Make sure that the bitmap contains the latest image. */
+            fInvalidate = pFBInfo->fDefaultFormat;
+        }
+#endif /* NEW_RESIZE */
     }
 
     if (SUCCEEDED(hr))
@@ -3056,7 +3373,11 @@ DECLCALLBACK(int) Display::i_displayResizeCallback(PPDMIDISPLAYCONNECTOR pInterf
         return VINF_VGA_RESIZE_IN_PROGRESS;
     }
 
+#ifndef NEW_RESIZE
     int rc = pThis->i_handleDisplayResize(VBOX_VIDEO_PRIMARY_SCREEN, bpp, pvVRAM, cbLine, cx, cy, VBVA_SCREEN_F_ACTIVE);
+#else
+    int rc = pThis->i_handleDisplayResize(VBOX_VIDEO_PRIMARY_SCREEN, bpp, pvVRAM, cbLine, cx, cy, 0, 0, 0, true);
+#endif
 
     /* Restore the flag.  */
     f = ASMAtomicCmpXchgBool(&pThis->fVGAResizing, false, true);
@@ -3835,6 +4156,9 @@ DECLCALLBACK(void) Display::i_displayVBVADisable(PPDMIDISPLAYCONNECTOR pInterfac
         /* Make sure that the primary screen is visible now.
          * The guest can't use VBVA anymore, so only only the VGA device output works.
          */
+#ifdef NEW_RESIZE
+        pFBInfo->flags = 0;
+#endif
         if (pFBInfo->fDisabled)
         {
             pFBInfo->fDisabled = false;
@@ -4050,6 +4374,7 @@ DECLCALLBACK(int) Display::i_displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface,
     PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface);
     Display *pThis = pDrv->pDisplay;
 
+#ifndef NEW_RESIZE
     DISPLAYFBINFO *pFBInfo = &pThis->maFramebuffers[pScreen->u32ViewIndex];
 
     if (pScreen->u16Flags & VBVA_SCREEN_F_DISABLED)
@@ -4189,7 +4514,79 @@ DECLCALLBACK(int) Display::i_displayVBVAResize(PPDMIDISPLAYCONNECTOR pInterface,
     return pThis->i_handleDisplayResize(pScreen->u32ViewIndex, pScreen->u16BitsPerPixel,
                                         (uint8_t *)pvVRAM + pScreen->u32StartOffset,
                                         pScreen->u32LineSize, pScreen->u32Width, pScreen->u32Height, pScreen->u16Flags);
+#else /* NEW_RESIZE */
+    return pThis->processVBVAResize(pView, pScreen, pvVRAM, fResetInputMapping);
+#endif /* NEW_RESIZE */
+}
+
+#ifdef NEW_RESIZE
+int Display::processVBVAResize(PCVBVAINFOVIEW pView, PCVBVAINFOSCREEN pScreen, void *pvVRAM, bool fResetInputMapping)
+{
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    DISPLAYFBINFO *pFBInfo = &maFramebuffers[pScreen->u32ViewIndex];
+
+    if (pScreen->u16Flags & VBVA_SCREEN_F_DISABLED)
+    {
+        /* Ask the framebuffer to resize using a default format. The framebuffer will be black.
+         * So if the frontend does not support GuestMonitorChangedEventType_Disabled event,
+         * the VM window will be black. */
+        uint32_t u32Width = pFBInfo->w ? pFBInfo->w : 640;
+        uint32_t u32Height = pFBInfo->h ? pFBInfo->h : 480;
+        int32_t xOrigin = pFBInfo->xOrigin;
+        int32_t yOrigin = pFBInfo->yOrigin;
+
+        alock.release();
+
+        i_notifyCroglResize(pView, pScreen, pvVRAM);
+
+        i_handleDisplayResize(pScreen->u32ViewIndex, 0, (uint8_t *)NULL, 0,
+                              u32Width, u32Height, pScreen->u16Flags, xOrigin, yOrigin, false);
+
+        return VINF_SUCCESS;
+    }
+
+    VBVAINFOSCREEN screenInfo;
+    RT_ZERO(screenInfo);
+
+    if (pScreen->u16Flags & VBVA_SCREEN_F_BLANK2)
+    {
+        /* Init a local VBVAINFOSCREEN structure, which will be used instead of
+         * the original pScreen. Set VBVA_SCREEN_F_BLANK, which will force
+         * the code below to choose the "blanking" branches.
+         */
+        screenInfo.u32ViewIndex    = pScreen->u32ViewIndex;
+        screenInfo.i32OriginX      = pFBInfo->xOrigin;
+        screenInfo.i32OriginY      = pFBInfo->yOrigin;
+        screenInfo.u32StartOffset  = 0; /* Irrelevant */
+        screenInfo.u32LineSize     = pFBInfo->u32LineSize;
+        screenInfo.u32Width        = pFBInfo->w;
+        screenInfo.u32Height       = pFBInfo->h;
+        screenInfo.u16BitsPerPixel = pFBInfo->u16BitsPerPixel;
+        screenInfo.u16Flags        = pScreen->u16Flags | VBVA_SCREEN_F_BLANK;
+
+        pScreen = &screenInfo;
+    }
+
+    if (fResetInputMapping)
+    {
+        /// @todo Rename to m* and verify whether some kind of lock is required.
+        xInputMappingOrigin = 0;
+        yInputMappingOrigin = 0;
+        cxInputMapping = 0;
+        cyInputMapping = 0;
+    }
+
+    alock.release();
+
+    i_notifyCroglResize(pView, pScreen, pvVRAM);
+
+    return i_handleDisplayResize(pScreen->u32ViewIndex, pScreen->u16BitsPerPixel,
+                                 (uint8_t *)pvVRAM + pScreen->u32StartOffset,
+                                 pScreen->u32LineSize, pScreen->u32Width, pScreen->u32Height, pScreen->u16Flags,
+                                 pScreen->i32OriginX, pScreen->i32OriginY, false);
 }
+#endif /* NEW_RESIZE */
 
 DECLCALLBACK(int) Display::i_displayVBVAMousePointerShape(PPDMIDISPLAYCONNECTOR pInterface, bool fVisible, bool fAlpha,
                                                           uint32_t xHot, uint32_t yHot,
diff --git a/src/VBox/Main/src-client/DisplayImplLegacy.cpp b/src/VBox/Main/src-client/DisplayImplLegacy.cpp
index 657b6b8..1197c41 100644
--- a/src/VBox/Main/src-client/DisplayImplLegacy.cpp
+++ b/src/VBox/Main/src-client/DisplayImplLegacy.cpp
@@ -956,11 +956,20 @@ void Display::processDisplayData(void *pvVRAM, unsigned uScreenId)
                                                  pFBInfo->w, pFBInfo->h);
                 }
 
+#ifndef NEW_RESIZE
                 i_handleDisplayResize(uScreenId, pScreen->bitsPerPixel,
                                                       (uint8_t *)pvVRAM + pFBInfo->u32Offset,
                                                       pScreen->u32LineSize,
                                                       pScreen->u16Width, pScreen->u16Height,
                                                       VBVA_SCREEN_F_ACTIVE);
+#else
+                i_handleDisplayResize(uScreenId, pScreen->bitsPerPixel,
+                                                      (uint8_t *)pvVRAM + pFBInfo->u32Offset,
+                                                      pScreen->u32LineSize,
+                                                      pScreen->u16Width, pScreen->u16Height,
+                                                      VBVA_SCREEN_F_ACTIVE,
+                                                      pScreen->xOrigin, pScreen->yOrigin, false);
+#endif
             }
         }
         else if (pHdr->u8Type == VBOX_VIDEO_INFO_TYPE_END)
diff --git a/src/VBox/Main/src-server/usb.ids b/src/VBox/Main/src-server/usb.ids
index dbcfcff..292affb 100644
--- a/src/VBox/Main/src-server/usb.ids
+++ b/src/VBox/Main/src-server/usb.ids
@@ -9,8 +9,8 @@
 #	The latest version can be obtained from
 #		http://www.linux-usb.org/usb.ids
 #
-# Version: 2015.09.28
-# Date:    2015-09-28 20:34:09
+# Version: 2017.02.12
+# Date:    2017-02-12 20:34:05
 #
 
 # Vendors, devices and interfaces. Please keep sorted.
@@ -36,6 +36,7 @@
 	145f  NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211]
 0127  IBP
 	0002  HDM Interface
+	0127  ibp
 0145  Unknown
 	0112  Card Reader
 017c  MLK
@@ -111,14 +112,26 @@
 	2109  STK541 ZigBee Development Board
 	210d  XPLAIN evaluation kit (CDC ACM)
 	2110  AVR JTAGICE3 Debugger and Programmer
+	2111  Xplained Pro board debugger and programmer
 	2122  XMEGA-A1 Explained evaluation kit
+	2140  AVR JTAGICE3 (v3.x) Debugger and Programmer
 	2141  ICE debugger
+	2145  ATMEGA328P-XMINI (CDC ACM)
 	2310  EVK11xx evaluation board
+	2404  The Micro
 	2fe4  ATxmega32A4U DFU bootloader
 	2fe6  Cactus V6 (DFU)
 	2fea  Cactus RF60 (DFU)
+	2fee  atmega8u2 DFU bootloader
+	2fef  atmega16u2 DFU bootloader
 	2ff0  atmega32u2 DFU bootloader
+	2ff1  at32uc3a3 DFU bootloader
+	2ff3  atmega16u4 DFU bootloader
 	2ff4  atmega32u4 DFU bootloader
+	2ff6  at32uc3b0/1 DFU bootloader
+	2ff7  at90usb82 DFU bootloader
+	2ff8  at32uc3a0/1 DFU bootloader
+	2ff9  at90usb646/647 DFU bootloader
 	2ffa  at90usb162 DFU bootloader
 	2ffb  at90usb AVR DFU bootloader
 	2ffd  at89c5130/c5131 DFU bootloader
@@ -174,7 +187,7 @@
 	0117  LaserJet 3200
 	011c  hn210w 802.11b Adapter
 	011d  Bluetooth 1.2 Interface [Broadcom BCM2035]
-	0121  HP49g+ Calculator
+	0121  HP 39g+ [F2224A], 39gs [F2223A], 40gs [F2225A], 48gII [F2226A], 49g+ [F2228A], 50g [F2229A, NW240AA]
 	0122  HID Internet Keyboard
 	0125  DAT72 Tape
 	0139  Barcode Scanner 4430
@@ -208,7 +221,7 @@
 	0417  LaserJet 1200 series
 	0423  HS-COMBO Cardreader
 	042a  LaserJet M1132 MFP
-	0441  HP Prime Calculator
+	0441  Prime [NW280AA, G8X92AA]
 	0504  DeskJet 885c
 	0505  ScanJet 2100c
 	0507  DVD+RW
@@ -230,6 +243,7 @@
 	0711  OfficeJet K80
 	0712  DeskJet 1180c
 	0714  Printing Support
+	0741  Prime Wireless Kit [FOK65AA]
 	0801  ScanJet 7400c
 	0804  DeskJet 816c
 	0805  HP4470C
@@ -250,6 +264,7 @@
 	0c24  Bluetooth Dongle
 	0d12  OfficeJet 9100 series
 	0d17  LaserJet 1012
+	0d4a  SK-2025 Keyboard
 	0e17  LaserJet 1015
 	0f0c  Wireless Keyboard and Optical Mouse receiver
 	0f11  OfficeJet V40
@@ -265,6 +280,7 @@
 	1017  LaserJet 1300
 	1024  Smart Card Keyboard
 	1027  Virtual keyboard and mouse
+	102a  LaserJet Professional P 1102w
 	1102  PhotoSmart 240 series
 	1104  DeskJet 959c
 	1105  ScanJet 5470c/5490c
@@ -297,6 +313,7 @@
 	1517  color LaserJet 3500
 	1524  Smart Card Keyboard - KR
 	1539  Mini Magnetic Stripe Reader
+	1541  Prime [G8X92AA]
 	1602  PhotoSmart 330 series
 	1604  DeskJet 940c
 	1605  ScanJet 5530C PhotoSmart
@@ -358,6 +375,7 @@
 	2205  ScanJet 3500c
 	2212  OfficeJet Pro L7600
 	2217  color LaserJet 9500 MFP
+	222a  LaserJet Pro MFP M125nw
 	2302  PhotoSmart 7600 series
 	2304  DeskJet 656c
 	2305  ScanJet 3970c
@@ -396,6 +414,7 @@
 	2917  LaserJet 2420
 	2a11  PSC 2150 series
 	2a17  LaserJet 2430
+	2a1d  Integrated Module with Bluetooth 2.1 Wireless technology
 	2b11  PSC 2170 series
 	2b17  LaserJet 1020
 	2c12  Officejet J4680
@@ -408,7 +427,7 @@
 	2e17  LaserJet 2600n
 	2e24  LP2275w Monitor Hub
 	2f11  PSC 1200
-	2f17  EWS 2605dn
+	2f17  Color LaserJet 2605dn
 	2f24  LP2475w Monitor Hub
 	3002  PhotoSmart P1000
 	3004  DeskJet 980c
@@ -426,6 +445,7 @@
 	3217  LaserJet 3050
 	3302  PhotoSmart 1218
 	3304  DeskJet 990c
+	3307  v125w Stick
 	3312  OfficeJet J6410
 	3317  LaserJet 3052
 	3402  PhotoSmart 1115
@@ -446,6 +466,7 @@
 	3817  LaserJet P2015 series
 	3902  PhotoSmart 130
 	3912  Officejet Pro 8500
+	3917  LaserJet P2014
 	3a02  PhotoSmart 7150
 	3a11  OfficeJet 5500 series
 	3a17  Printing Support
@@ -515,6 +536,7 @@
 	5717  LaserJet M1120n MFP
 	5811  PhotoSmart C5100 series
 	5817  LaserJet M1319f MFP
+	581d  lt4112 Gobi 4G Module Network Device
 	5911  PhotoSmart C6180
 	5912  Officejet Pro 8600
 	5a11  PhotoSmart C7100 series
@@ -607,10 +629,12 @@
 	8711  Deskjet 2050 J510
 	8804  DeskJet 6980 series
 	8904  DeskJet 6940 series
+	8911  Deskjet 1050 J410
 	8c07  Digital Stereo Headset
 	8c11  Deskjet F4500 series
 	9002  PhotoSmart M437
 	9102  PhotoSmart M537
+	9207  HD-4110 Webcam
 	9302  PhotoSmart R930 series
 	9402  PhotoSmart R837
 	9502  PhotoSmart R840 series
@@ -652,6 +676,7 @@
 	c702  PhotoSmart D7300 series
 	c802  PhotoSmart D5060 Printer
 	d104  Bluetooth Dongle
+	d507  39gII [NW249AA]
 	efbe  NEC Picty900
 	f0be  NEC Picty920
 	f1be  NEC Picty800
@@ -684,6 +709,7 @@
 03fc  Elitegroup Computer Systems
 03fd  Xilinx, Inc.
 	0008  Platform Cable USB II
+	0050  dfu downloader
 03fe  Farallon Comunications
 0400  National Semiconductor Corp.
 	05dc  Rigol Technologies DS1000USB Oscilloscope
@@ -725,7 +751,7 @@
 	6007  Serial Converter
 	6008  Serial Converter
 	6009  Serial Converter
-	6010  FT2232C Dual USB-UART/FIFO IC
+	6010  FT2232C/D/H Dual UART/FIFO IC
 	6011  FT4232H Quad HS USB-UART/FIFO IC
 	6014  FT232H Single HS USB-UART/FIFO IC
 	6015  Bridge(I2C/SPI/UART/FIFO)
@@ -769,6 +795,7 @@
 	bfda  OpenDCC (Throttle)
 	bfdb  OpenDCC (Gateway)
 	bfdc  OpenDCC (GBM)
+	c580  HID UNIKEY dongle [F-Response]
 	c630  lcd2usb interface
 	c631  i2c-tiny-usb interface
 	c632  xu1541 c64 floppy drive interface
@@ -1258,13 +1285,16 @@
 	3060  Sound Blaster Audigy 2 ZS External
 	3061  SoundBlaster Audigy 2 ZS Video Editor
 	3090  Sound Blaster Digital Music SX
+	30d0  Xmod
 	30d3  Sound Blaster Play!
+	3100  IR Receiver (SB0540)
 	3121  WoW tap chat
 	3220  Sound Blaster Tactic(3D) Sigma sound card
 	3f00  E-Mu Xboard 25 MIDI Controller
 	3f02  E-Mu 0202
 	3f04  E-Mu 0404
 	3f07  E-Mu Xmidi 1x1
+	3f0e  Xmidi 1x1 Tab
 	4003  VideoBlaster Webcam Go Plus [W9967CF]
 	4004  Nomad II MG
 	4005  Webcam Blaster Go ES
@@ -1325,6 +1355,7 @@
 	4087  Live! Cam Socialize HD 1080 [VF0680]
 	4088  Live! Cam Chat HD [VF0700]
 	4095  Live! Cam Sync HD [VF0770]
+	4097  Live! Cam Chat HD [VF0700]
 	4100  Nomad Jukebox 2
 	4101  Nomad Jukebox 3
 	4102  NOMAD MuVo^2
@@ -1499,7 +1530,10 @@
 	0600  Digital Pen SU-1B
 	0610  CS-15 (Internet Stick 3G modem)
 	0661  Lumia 620/920
+	0662  301 Dual SIM (Mass Storage)
+	0663  301 Dual SIM
 	069a  130 [RM-1035] (Charging only)
+	06fc  Lumia 640 Phone
 	0720  X (RM-980)
 	0800  Connectivity Cable DKU-5
 	0801  Data Cable DKU-6
@@ -1519,6 +1553,7 @@
 	1237  Andromeda Hub
 0424  Standard Microsystems Corp.
 	0001  Integrated Hub
+	0140  LPC47M14x hub
 	0acd  Sitecom Internal Multi Memory reader/writer MD-005
 	0fdc  Floppy
 	10cd  Sitecom Internal Multi Memory reader/writer MD-005
@@ -1546,6 +1581,7 @@
 	7500  LAN7500 Ethernet 10/100/1000 Adapter
 	9512  SMC9512/9514 USB Hub
 	9514  SMC9514 Hub
+	9904  LAN9512/LAN9514 Ethernet 10/100 Adapter (SAL10)
 	a700  2 Port Hub
 	ec00  SMSC9512/9514 Fast Ethernet Adapter
 0425  Motorola Semiconductors HK, Ltd
@@ -1584,6 +1620,7 @@
 0431  Itac Systems, Inc.
 	0100  Mouse-Trak 3-button Track Ball
 0432  Unisys Corp.
+	0031  Document Processor
 0433  Alps Electric, Inc.
 	1101  IBM Game Controller
 	abab  Keyboard
@@ -1771,6 +1808,10 @@
 	6781  Keyboard with PS/2 Mouse Port
 	6782  Keyboard
 0447  Momentum Microsystems
+0449  Duta Multi Robotik
+	0128  Menengah
+	0210  Dasar
+	0612  Lanjutan
 044a  Shamrock Tech. Co., Ltd
 044b  WSI
 044c  CCL/ITRI
@@ -1793,6 +1834,8 @@
 	ffff  Compaq Bluetooth Multiport Module
 044f  ThrustMaster, Inc.
 	0400  HOTAS Cougar
+	0402  HOTAS Warthog Joystick
+	0404  HOTAS Warthog Throttle
 	044f  GP XID
 	a003  Rage 3D Game Pad
 	a01b  PK-GP301 Driving Wheel
@@ -1816,6 +1859,7 @@
 	b651  Ferrari GT Rumble Force Wheel
 	b653  RGT Force Feedback Clutch Racing Wheel
 	b654  Ferrari GT Force Feedback Wheel
+	b687  TWCS Throttle
 	b700  Tacticalboard
 0450  DFI, Inc.
 0451  Texas Instruments, Inc.
@@ -1836,7 +1880,10 @@
 	6060  RNDIS/BeWAN ADSL2+
 	6070  RNDIS/BeWAN ADSL2+
 	625f  TUSB6250 ATA Bridge
+	8041  Hub
 	8042  Hub
+	8043  Hub
+	8140  TUSB8041 4-Port Hub
 	8142  TUSB8041 4-Port Hub
 	926b  TUSB9260 Boot Loader
 	dbc0  Device Bay Controller
@@ -1895,6 +1942,7 @@
 	0072  Navigator 335
 	0083  Bluetooth Dongle
 	0087  Ergo 525V Laser Mouse
+	0089  Genius Traveler 350
 	00ca  Pen Mouse
 	0100  EasyPen Tablet
 	0101  CueCat
@@ -2052,7 +2100,7 @@
 	0080  Digital Media Pro Keyboard
 	0083  Basic Optical Mouse
 	0084  Basic Optical Mouse
-	008a  Wireless Keyboard and Mouse
+	008a  Wireless Optical Desktop Receiver 2.0A
 	008b  Dual Receiver Wireless Mouse (IntelliPoint)
 	008c  Wireless Intellimouse Explorer 2.0
 	0095  IntelliMouse Explorer 4.0 (IntelliPoint)
@@ -2075,7 +2123,7 @@
 	00da  eHome Infrared Receiver
 	00db  Natural Ergonomic Keyboard 4000 V1.0
 	00dd  Comfort Curve Keyboard 2000 V1.0
-	00e1  Wireless Laser Mouse 6000 Reciever
+	00e1  Wireless Laser Mouse 6000 Receiver
 	00f4  LifeCam VX-6000 (SN9C20x + OV9650)
 	00f5  LifeCam VX-3000
 	00f6  Comfort Optical Mouse 1000
@@ -2083,7 +2131,7 @@
 	00f8  LifeCam NX-6000
 	00f9  Wireless Desktop Receiver 3.1
 	0202  Xbox Controller
-	0280  XBox Device
+	0280  Xbox Memory Unit (8MB)
 	0283  Xbox Communicator
 	0284  Xbox DVD Playback Kit
 	0285  Xbox Controller S
@@ -2105,12 +2153,16 @@
 	02ad  Xbox NUI Audio
 	02ae  Xbox NUI Camera
 	02b0  Xbox NUI Motor
-	02b6  Xbox 360 / Bluetooth Wireless Headset
+	02b6  Xbox360 Bluetooth Wireless Headset
 	02be  Kinect for Windows NUI Audio
 	02bf  Kinect for Windows NUI Camera
 	02c2  Kinect for Windows NUI Motor
-	02d1  XBOX One Controller for Windows
+	02d1  Xbox One Controller
 	02d5  Xbox One Digital TV Tuner
+	02dd  Xbox One Controller (Covert Forces/Firmware 2015)
+	02e3  Xbox One Elite Controller
+	02e6  Wireless XBox Controller Dongle
+	02ea  Xbox One S Controller
 	0400  Windows Powered Pocket PC 2002
 	0401  Windows Powered Pocket PC 2002
 	0402  Windows Powered Pocket PC 2002
@@ -2261,15 +2313,19 @@
 	0750  Wired Keyboard 600
 	0752  Wired Keyboard 400
 	075d  LifeCam Cinema
+	0761  LifeCam VX-2000
 	0766  LifeCam VX-800
 	0768  Sidewinder X4
 	076c  Comfort Mouse 4500
 	076d  LifeCam HD-5000
 	0772  LifeCam Studio
 	0779  LifeCam HD-3000
+	077f  LifeChat LX-6000 Headset
 	0780  Comfort Curve Keyboard 3000
 	0797  Optical Mouse 200
 	07a5  Wireless Receiver 1461C
+	07b9  Wired Keyboard 200
+	07ca  Surface Pro 3 Docking Station Audio Device
 	07f8  Wired Keyboard 600 (model 1576)
 	07fd  Nano Transceiver 1.1
 	930a  ISOUSB.SYS Intel 82930 Isochronous IO Test Board
@@ -2358,11 +2414,16 @@
 	0027  CyMotion Master Solar Keyboard
 	002a  Wireless Mouse & Keyboard
 	002d  SmartTerminal XX44
+	003c  Raptor Gaming Keyboard
+	003d  Raptor Gaming Keyboard Integrated Hub
 	003e  SmartTerminal ST-2xxx
 	0041  G86 6240 Keyboard
 	0080  eHealth Terminal ST 1503
 	0081  eHealth Keyboard G87 1504
 	0106  R-300 Wireless Mouse Receiver
+	010d  MX-Board 3.0 Keyboard
+	b090  Keyboard
+	b091  Mouse
 046b  American Megatrends, Inc.
 	0001  Keyboard
 	0101  PS/2 Keyboard, Mouse & Joystick Ports
@@ -2502,15 +2563,20 @@
 	0a0b  ClearChat Pro USB
 	0a0c  Clear Chat Comfort USB Headset
 	0a13  Z-5 Speakers
+	0a14  USB Headset
+	0a15  G35 Headset
 	0a17  G330 Headset
 	0a1f  G930
 	0a29  H600 [Wireless Headset]
 	0a37  USB Headset H540
 	0a38  Headset H340
 	0a44  Headset H390
+	0a45  960 Headset
 	0a4d  G430 Surround Sound Gaming Headset
+	0a5b  G933 Wireless Headset Dongle
 	0b02  C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode)
 	8801  Video Camera
+	b014  Bluetooth Mouse M336/M337/M535
 	b305  BT Mini-Receiver
 	bfe4  Premium Optical Wheel Mouse
 	c000  N43 [Pilot Mouse]
@@ -2581,8 +2647,10 @@
 	c06c  Optical Mouse
 	c077  M105 Optical Mouse
 	c07c  M-R0017 [G700s Rechargeable Gaming Mouse]
+	c07d  G502 Mouse
+	c07e  G402 Gaming Mouse
 	c101  UltraX Media Remote
-	c110  Harmony 785/885 Remote
+	c110  Harmony 785/880/885 Remote
 	c111  Harmony 525 Remote
 	c112  Harmony 890 Remote
 	c11f  Harmony 900/1100 Remote
@@ -2603,7 +2671,7 @@
 	c20c  WingMan Precision
 	c20d  WingMan Attack 2
 	c20e  WingMan Formula GP
-	c211  iTouch Cordless Reciever
+	c211  iTouch Cordless Receiver
 	c212  WingMan Extreme Digital 3D
 	c213  J-UH16 (Freedom 2.4 Cordless Joystick)
 	c214  ATK3 (Attack III Joystick)
@@ -2628,6 +2696,7 @@
 	c22b  Gaming Keyboard G110 G-keys
 	c22d  G510 Gaming Keyboard
 	c22e  G510 Gaming Keyboard onboard audio
+	c231  G13 Virtual Mouse
 	c245  G400 Optical Mouse
 	c246  Gaming Mouse G300
 	c248  G105 Gaming Keyboard
@@ -2650,6 +2719,7 @@
 	c29c  Speed Force Wireless Wheel for Wii
 	c2a0  Wingman Force Feedback Mouse
 	c2a1  WingMan Force Feedback Mouse
+	c2ab  G13 Joystick
 	c301  iTouch Keyboard
 	c302  iTouch Pro Keyboard
 	c303  iTouch Keyboard
@@ -2674,6 +2744,7 @@
 	c31b  Compact Keyboard K300
 	c31c  Keyboard K120
 	c31d  Media Keyboard K200
+	c332  G502 Proteus Spectrum Optical Mouse
 	c401  TrackMan Marble Wheel
 	c402  Marble Mouse (2-button)
 	c403  Turbo TrackMan Marble FX
@@ -3012,8 +3083,11 @@
 	a007  External Disk USB 3.0
 	a009  Stor.E Basics
 	a00d  STOR.E BASICS 500GB
+	a100  Canvio Alu 2TB 2.5" Black External Disk Model HDTH320EK3CA
 	a202  Canvio Basics HDD
+	a208  Canvio Basics 2TB USB 3.0 Portable Hard Drive
 	b001  Stor.E Partner
+	b207  Canvio Ready
 	d000  External Disk 2TB Model DT01ABA200
 	d010  External Disk 3TB
 	d011  Canvio Desk
@@ -3021,6 +3095,7 @@
 0482  Kyocera Corp.
 	000e  FS-1020D Printer
 	000f  FS-1920 Mono Printer
+	0015  FS-1030D printer
 	0100  Finecam S3x
 	0101  Finecam S4
 	0103  Finecam S5
@@ -3030,6 +3105,7 @@
 	0108  Digital Camera Device
 	0203  AH-K3001V
 	0204  iBurst Terminal
+	0408  FS-1320D Printer
 0483  STMicroelectronics
 	0137  BeWAN ADSL USB ST (blue or green)
 	0138  Unicorn II (ST70138B + MTC-20174TQ chipset)
@@ -3040,11 +3116,10 @@
 	2017  Biometric Smart Card Reader
 	2018  BioSimKey
 	2302  Portable Flash Device (PFD)
-	347b  ST-LINK/V2-1
-	3744  STLINK Pseudo disk
+	3744  ST-LINK/V1
 	3747  ST Micro Connect Lite
 	3748  ST-LINK/V2
-	374b  ST-LINK/V2.1 (Nucleo-F103RB)
+	374b  ST-LINK/V2.1
 	4810  ISDN adapter
 	481d  BT Digital Access adapter
 	5000  ST Micro/Ergenic ERG BT-002 Bluetooth Adapter
@@ -3084,6 +3159,7 @@
 048c  Alps Electric Ireland, Ltd
 048d  Integrated Technology Express, Inc.
 	1165  IT1165 Flash Controller
+	1172  Flash Drive
 	1336  SD/MMC Cardreader
 	1345  Multi Cardreader
 	9006  IT9135 BDA Afatech DVB-T HDTV Dongle
@@ -3158,6 +3234,7 @@
 	103c  MOTIF-RACK ES
 	1054  S90XS Keyboard/Music Synthesizer
 	160f  P-105
+	1613  Clavinova CLP535
 	2000  DGP-7
 	2001  DGP-5
 	3001  YST-MS55D USB Speaker
@@ -3344,6 +3421,7 @@
 	049b  Strobe XP 100
 	04a0  7400
 	04ac  Xerox Travel Scanner 100
+	04cd  Xerox Travel Scanner 150
 04a8  Multivideo Labs, Inc.
 	0101  Hub
 	0303  Peripheral Switch
@@ -3416,8 +3494,12 @@
 	10a8  iP6220D
 	10a9  iP6600D
 	10b6  PIXMA iP4300 Printer
+	10b7  PIXMA iP5300 Printer
 	10c2  PIXMA iP1800 Printer
 	10c4  Pixma iP4500 Printer
+	10c9  PIXMA iP4600 Printer
+	10ca  PIXMA iP3600 Printer
+	10e3  PIXMA iX6850 Printer
 	1404  W6400PG
 	1405  W8400PG
 	150f  BIJ2350 PCL
@@ -3425,6 +3507,7 @@
 	1512  BIJ1350D PCL
 	1601  DR-2080C Scanner
 	1607  DR-6080 Scanner
+	1608  DR-2580C Scanner
 	1700  PIXMA MP110 Scanner
 	1701  PIXMA MP130 Scanner
 	1702  MP410 Composite
@@ -3455,7 +3538,7 @@
 	1725  MP610 ser
 	1726  MP970 ser
 	1727  MX300 ser
-	1728  MX310 ser
+	1728  PIXMA MX310 series
 	1729  MX700 ser
 	172b  MP140 ser
 	1736  PIXMA MX320 series
@@ -3466,6 +3549,7 @@
 	1748  Pixma MG5150
 	174d  MX360 ser
 	176d  PIXMA MG2550
+	178d  PIXMA MG6853
 	1900  CanoScan LiDE 90
 	1901  CanoScan 8800F
 	1904  CanoScan LiDE 100
@@ -3476,6 +3560,7 @@
 	190a  CanoScan LiDE 210
 	190d  CanoScan 9000F Mark II
 	190e  CanoScan LiDE 120
+	190f  CanoScan LiDE 220
 	2200  CanoScan LiDE 25
 	2201  CanoScan FB320U
 	2202  CanoScan FB620U
@@ -3544,6 +3629,7 @@
 	2650  iR 6800C EUR
 	2651  iR 3100C EUR
 	2655  FP-L170/MF350/L380/L398
+	2656  iR1510-1670 CAPT Printer
 	2659  MF8100
 	265b  CAPT Printer
 	265c  iR C3220
@@ -3812,7 +3898,9 @@
 	3211  PowerShot SX130 IS
 	3212  Powershot S95
 	3214  SELPHY CP800
+	3215  EOS 60D
 	3218  EOS 600D / Rebel T3i (ptp)
+	3219  EOS 1D X
 	3223  PowerShot A3300 IS
 	3224  PowerShot A3200 IS
 	3225  PowerShot ELPH 500 HS / IXUS 310 HS
@@ -3829,7 +3917,9 @@
 	3236  PowerShot S100
 	3237  PowerShot ELPH 310 HS / IXUS 230 HS
 	3238  PowerShot SX40 HS
+	323a  EOS 5D Mark III
 	323b  EOS Rebel T4i
+	323d  EOS M
 	323e  PowerShot A1300
 	323f  PowerShot A810
 	3240  PowerShot ELPH 320 HS / IXUS 240 HS
@@ -3838,10 +3928,14 @@
 	3243  PowerShot A4000 IS
 	3244  PowerShot SX260 HS
 	3245  PowerShot SX240 HS
+	3246  PowerShot ELPH 530 HS / IXUS 510 HS
 	3247  PowerShot ELPH 520 HS / IXUS 500 HS
 	3248  PowerShot A3400 IS
 	3249  PowerShot A2400 IS
 	324a  PowerShot A2300
+	3250  EOS 6D
+	3252  EOS 1D C
+	3253  EOS 70D
 	3255  SELPHY CP900
 	3256  SELPHY CP810
 	3258  PowerShot G15
@@ -3859,10 +3953,16 @@
 	3265  Powershot ELPH 130 IS / IXUS 140
 	3266  Powershot ELPH 120 IS / IXUS 135
 	3268  PowerShot ELPH 330 HS / IXUS 255 HS
+	326f  EOS 7D Mark II
+	3270  EOS 100D
 	3271  PowerShot A2500
+	3272  EOS 700D
+	3274  PowerShot G16
+	3275  PowerShot S120
 	3276  PowerShot SX170 IS
 	3277  PowerShot SX510 HS
 	3278  PowerShot S200
+	327a  SELPHY CP910
 	327d  Powershot ELPH 115 IS / IXUS 132
 	327f  EOS Rebel T5 / EOS 1200D / EOS Kiss X70
 	3284  PowerShot D30
@@ -3877,10 +3977,18 @@
 	329a  PowerShot SX60 HS
 	329b  PowerShot SX520 HS
 	329c  PowerShot SX400 IS
+	329d  PowerShot G7 X
 	329f  PowerShot SX530 HS
 	32a6  PowerShot SX710 HS
 	32aa  Powershot ELPH 160 / IXUS 160
+	32ab  PowerShot ELPH 350HS / IXUS 275 HS
 	32ac  PowerShot ELPH 170 IS / IXUS 170
+	32ad  PowerShot SX410 IS
+	32b1  SELPHY CP1200
+	32b2  PowerShot G9 X
+	32bb  EOS M5
+	32c1  PowerShot ELPH 180 / IXUS 175
+	32c2  PowerShot SX720 HS
 04aa  DaeWoo Telecom, Ltd
 04ab  Chromatic Research
 04ac  Micro Audiometrics Corp.
@@ -3985,7 +4093,7 @@
 	4427  Portable CD ROM
 	4482  Serial Converter
 	4484  SMSC USB20H04 3-Port Hub [ThinkPad X4 UltraBase, Wistron S Note-3 Media Slice]
-	4485  Serial Converter
+	4485  ThinkPad Dock Hub
 	4524  40 Character Vacuum Fluorescent Display
 	4525  Double sided CRT
 	4535  4610 Suremark Printer
@@ -4016,6 +4124,7 @@
 	4381  SCAPS USC-1 Scanner Controller
 	4611  Storage Adapter FX2 (CY)
 	4616  Flash Disk (TPP)
+	4624  DS-Xtreme Flash Card
 	5201  Combi Keyboard-Hub (Hub)
 	5202  Combi Keyboard-Hub (Keyboard)
 	5500  HID->COM RS232 Adapter
@@ -4038,6 +4147,7 @@
 	f000  CY30700 Licorice evaluation board
 	f111  CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit
 	f115  PSoC FirstTouch Programmer
+	f232  Mono embedded computer
 	fd13  Programmable power socket
 04b5  ROHM LSI Systems USA, LLC
 	3064  Hantek DSO-3064
@@ -4102,6 +4212,7 @@
 	0142  GT-F730 [GT-S630/Perfection V33/V330 Photo]
 	0143  GT-S55
 	0144  GT-S85
+	0151  Perfection V800 Photo
 	0202  Receipt Printer M129C/TM-T70
 	0401  CP 800 Digital Camera
 	0402  PhotoPC 850z
@@ -4209,7 +4320,7 @@
 	0879  EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series]
 	087b  EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series]
 	087c  PX-1700F
-	087d  PX-B750F
+	087d  PX-B750F/WP-4525 Series
 	087f  PX-403A
 	0880  PX-434A [Stylus NX330 Series]
 	0881  PX-404A [ME OFFICE 535]
@@ -4244,6 +4355,7 @@
 	1304  iKey Token
 	1305  iKey Token
 	1306  iKey Token
+	8000  SafeNet Sentinel Hardware Key
 04ba  Toucan Systems, Ltd
 04bb  I-O Data Device, Inc.
 	0101  USB2-IDE/ATAPI Bridge Adapter
@@ -4331,6 +4443,7 @@
 	10e7  fi-5900C
 	10fe  S500
 	1150  fi-6230
+	125a  PalmSecure Sensor Device - MP
 	201d  SATA 3.0 6Gbit/s Adaptor [GROOVY]
 04c6  Toshiba America Electronic Components
 04c7  Micro Macro Technologies
@@ -4345,14 +4458,17 @@
 	072c  Revio KD20M
 	072d  Revio KD410Z
 04ca  Lite-On Technology Corp.
+	004b  Keyboard
 	004f  SK-9020 keyboard
 	1766  HID Monitor Controls
 	2004  Bluetooth 4.0 [Broadcom BCM20702A0]
 	2006  Broadcom BCM43142A0 Bluetooth Device
+	2007  Broadcom BCM43142A0 Bluetooth Device
+	3005  Atheros Bluetooth
 	300b  Atheros AR3012 Bluetooth
 	300d  Atheros AR3012 Bluetooth
 	300f  Atheros AR3012 Bluetooth
-	3014  Qualcoom Atheros Bluetooth
+	3014  Qualcomm Atheros Bluetooth
 	7025  HP HD Webcam
 	7046  TOSHIBA Web Camera - HD
 	9304  Hub
@@ -4507,6 +4623,7 @@
 	c001  PicoLCD 20x4
 	e11c  TL866CS EEPROM Programmer [MiniPRO]
 	f2c4  Macareux-labs Hygrometry Temperature Sensor
+	f2f7  Yepkit YKUSH
 	f3aa  Macareux-labs Usbce Bootloader mode
 	f437  SBE Tech Ultrasonic Anemometer
 	f4b5  SmartScope
@@ -4531,14 +4648,19 @@
 	1503  Keyboard
 	1603  Keyboard
 	1702  Keyboard LKS02
+	1818  Keyboard [Diatec Filco Majestouch 2]
 	2011  Keyboard [Diatec Filco Majestouch 1]
 	2013  Keyboard [Das Keyboard]
+	2206  Fujitsu Siemens Mouse Esprimo Q
 	2221  Keyboard
 	2323  Keyboard
 	2519  Shenzhen LogoTech 2.4GHz receiver
 	2832  HT82A832R Audio MCU
 	2834  HT82A834R Audio MCU
+	a01c  wireless multimedia keyboard with trackball [Trust ADURA 17911]
+	a050  Chatman V1
 	a055  Keyboard
+	a11b  Mouse [MX-3200]
 04da  Panasonic (Matsushita)
 	0901  LS-120 Camera
 	0912  SDR-S10
@@ -4549,6 +4671,7 @@
 	0d0a  CD-R Drive KXL-CB20AN
 	0d0d  CDRCB03
 	0d0e  DVD-ROM & CD-R/RW
+	0f07  KX-MB2030 Multifunction Laser Printer
 	0f40  Printer
 	104d  Elite Panaboard UB-T880 (HID)
 	104e  Elite Panaboard Pen Adaptor (HID)
@@ -4567,6 +4690,9 @@
 	2374  Lumix Camera (PTP mode)
 	2451  HDC-SD9
 	245b  HC-X920K (3MOS Full HD video camcorder)
+	2477  SDR-H85 Camcorder (PC mode)
+	2478  SDR-H85 Camcorder (recorder mode - SD card)
+	2479  SDR-H85 Camcorder (recorder mode - HDD)
 	2497  HDC-TM700
 	250c  Gobi Wireless Modem (QDL mode)
 	250d  Gobi Wireless Modem
@@ -4715,6 +4841,7 @@
 	0082  Touchmonitor Interface
 	00ff  Touchmonitor Interface
 04e8  Samsung Electronics Co., Ltd
+	0001  Printer Bootloader
 	0100  Kingston Flash Drive (128MB)
 	0110  Connect3D Flash Drive
 	0111  Connect3D Flash Drive
@@ -4722,6 +4849,7 @@
 	1003  MP3 Player and Recorder
 	1006  SDC-200Z
 	130c  NX100
+	1323  WB700 Camera
 	1f05  S2 Portable [JMicron] (500GB)
 	1f06  HX-MU064DA portable harddisk
 	2018  WIS09ABGN LinkStick Wireless LAN Adapter
@@ -4867,6 +4995,7 @@
 	6125  D3 Station External Hard Drive
 	61b5  M3 Portable Hard Drive 2TB
 	61b6  M3 Portable Hard Drive 1TB
+	61f3  Portable SSD T3 (MU-PT250B, MU-PT500B)
 	6601  Mobile Phone
 	6602  Galaxy
 	6603  Galaxy
@@ -4910,8 +5039,8 @@
 	6860  Galaxy (MTP)
 	6863  GT-I9500 [Galaxy S4] / GT-I9250 [Galaxy Nexus] (network tethering)
 	6864  GT-I9070 (network tethering, USB debugging enabled)
-	6865  GT-I9300 Phone [Galaxy S III] (PTP mode)
-	6866  GT-I9300 Phone [Galaxy S III] (debugging mode)
+	6865  Galaxy (PTP mode)
+	6866  Galaxy (debugging mode)
 	6868  Escape Composite driver for Android Phones: Modem+Diagnostic+ADB
 	6875  GT-B3710 Standalone LTE device (Commercial)
 	6876  GT-B3710 LTE Modem
@@ -4965,6 +5094,7 @@
 	0403  KU-0420 keyboard
 	0418  KU-0418 Tactical Pad
 	0618  RG-0618U Wireless HID Receiver & KG-0609 Wireless Keyboard with Touchpad
+	0718  wired mouse
 	0760  Acer KU-0760 Keyboard
 	0841  HP Multimedia Keyboard
 	0860  2.4G Multimedia Wireless Kit
@@ -5021,6 +5151,7 @@
 	b1b9  Asus Integrated Webcam
 	b1cf  Lenovo Integrated Camera
 	b1d6  CNF9055 Toshiba Webcam
+	b1d8  1.3M Webcam
 	b1e4  Toshiba Integrated Webcam
 	b213  Fujitsu Integrated Camera
 	b217  Lenovo Integrated Camera (0.3MP)
@@ -5043,11 +5174,13 @@
 	000a  Touchscreen
 	0103  ActiveJet K-2024 Multimedia Keyboard
 	01a4  Wireless Keyboard
+	0201  Touchscreen
 	0210  Optical Mouse
 	0212  Laser Mouse
 	0214  Lynx M9 Optical Mouse
 	0230  3D Optical Mouse
 	0232  Mouse
+	0234  Optical Mouse
 	02f4  2.4G Cordless Mouse
 	0381  Touchscreen
 	04a0  Dream Cheeky Stress/Panic Button
@@ -5488,6 +5621,7 @@
 	035c  DCP-1610NW
 	035d  MFC-1910W
 	035e  MFC-1910NW
+	0360  DCP-1618W
 	0361  MFC-1919NW
 	0364  MFC-J5625DW
 	0365  MFC-J4520DW
@@ -5550,10 +5684,14 @@
 	2015  QL-500 P-touch label printer
 	2016  QL-550 P-touch label printer
 	201a  PT-18R P-touch label printer
-	201b  QL-650TD P-Touch Label Printer
-	2027  QL-560 P-Touch Label Printer
-	202b  PT-7600 P-Touch Label Printer
+	201b  QL-650TD P-touch Label Printer
+	2027  QL-560 P-touch Label Printer
+	2028  QL-570 P-touch Label Printer
+	202b  PT-7600 P-touch Label Printer
+	2061  PT-P700 P-touch Label Printer
+	2064  PT-P700 P-touch Label Printer RemovableDisk
 	2100  Card Reader Writer
+	2102  Sewing machine
 	60a0  ADS-2000
 	60a1  ADS-2100
 	60a4  ADS-2500W
@@ -5578,6 +5716,7 @@
 	0538  Wireless Optical Mouse 2.4G [Bright]
 	0561  Flexcam 100
 	05d8  Wireless keyboard/mouse
+	05da  SPEEDLINK SNAPPY Wireless Mouse Nano
 	0c15  SPIF215A SATA bridge
 	0c25  SATALink SPIF225A
 	1528  SPCA1527A/SPCA1528 SD card camera (webcam mode)
@@ -5931,6 +6070,7 @@
 	2750  EZ-Link (EZLNKUSB.SYS)
 	2810  Cypress ATAPI Bridge
 	4d90  AmScope MD1900 camera
+	6510  Touptek UCMOS05100KPA
 	7000  PowerSpec MCE460 Front Panel LED Display
 	7777  Bluetooth Device
 	9999  AN2131 uninitialized (?)
@@ -6058,6 +6198,7 @@
 	021b  Net MD
 	021c  Hi-MD WALKMAN
 	021d  Net MD
+	0226  UP-CR10L
 	0227  Printing Support
 	022c  Net MD
 	022d  Hi-MD AUDIO
@@ -6119,7 +6260,13 @@
 	05c4  DualShock 4
 	0689  Walkman NWZ-B173F
 	06bb  WALKMAN NWZ-F805
+	06c3  RC-S380
+	07c4  ILCE-6000 (aka Alpha-6000) in Mass Storage mode
 	088c  Portable Headphone Amplifier
+	08b7  ILCE-6000 (aka Alpha-6000) in MTP mode
+	094e  ILCE-6000 (aka Alpha-6000) in PC Remote mode
+	0994  ILCE-6000 (aka Alpha-6000) in charging mode
+	0bb5  Headset MDR-1000X
 	1000  Wireless Buzz! Receiver
 054d  Try Corp.
 054e  Proside Corp.
@@ -6160,6 +6307,7 @@
 	2009  UC-210T Ethernet
 	2011  UC-2324 4xSerial Ports [mos7840]
 	2202  CS124U Miniview II KVM Switch
+	2212  Keyboard/Mouse
 	2213  CS682 2-Port USB 2.0 DVI KVM Switch
 	2221  Winbond Hermon
 	2404  4-port switch
@@ -6168,7 +6316,7 @@
 	4000  DSB-650 10Mbps Ethernet [klsi]
 	7000  Hub
 	7820  UC-2322 2xSerial Ports [mos7820]
-	8021  CS1764A [CubiQ DVI KVMP Switch]
+	8021  Hub
 0558  Truevision, Inc.
 	1009  GW Instek GDS-1000 Oscilloscope
 	100a  GW Instek GDS-1000A Oscilloscope
@@ -6284,25 +6432,25 @@
 	0002  PenPartner 6x8
 	0003  PTU-600 [Cintiq Partner]
 	0010  ET-0405 [Graphire]
-	0011  Graphire 2 4x5
-	0012  Graphire 2 5x7
-	0013  Graphire 3 4x5
-	0014  Graphire 3 6x8
-	0015  Graphire 4 4x5
-	0016  Graphire 4 6x8
-	0017  CTE-450 [Bamboo Fun]
-	0018  Bamboo Fun 6x8
-	0019  Bamboo One Medium
-	0020  Intuos 4x5
-	0021  Intuos 6x8
-	0022  Intuos 9x12
-	0023  Intuos 12x12
-	0024  Intuos 12x18
-	0026  Intuos5 touch S
-	0027  Intuos5 touch M
-	0028  Intuos5 touch L
-	0029  Intuos5 S
-	002a  Intuos5 M
+	0011  ET-0405A [Graphire2 (4x5)]
+	0012  ET-0507A [Graphire2 (5x7)]
+	0013  CTE-430 [Graphire3 (4x5)]
+	0014  CTE-630 [Graphire3 (6x8)]
+	0015  CTE-440 [Graphire4 (4x5)]
+	0016  CTE-640 [Graphire4 (6x8)]
+	0017  CTE-450 [Bamboo Fun (small)]
+	0018  CTE-650 [Bamboo Fun (medium)]
+	0019  CTE-631 [Bamboo One]
+	0020  GD-0405 [Intuos (4x5)]
+	0021  GD-0608 [Intuos (6x8)]
+	0022  GD-0912 [Intuos (9x12)]
+	0023  GD-1212 [Intuos (12x12)]
+	0024  GD-1218 [Intuos (12x18)]
+	0026  PTH-450 [Intuos5 touch (S)]
+	0027  PTH-650 [Intuos5 touch (M)]
+	0028  PTH-850 [Intuos5 touch (L)]
+	0029  PTK-450 [Intuos5 (S)]
+	002a  PTK-650 [Intuos5 (M)]
 	0030  PL400
 	0031  PL500
 	0032  PL600
@@ -6312,58 +6460,113 @@
 	0037  PL700
 	0038  PL510
 	0039  DTU-710
-	003f  Cintiq 21UX (DTZ-2100)
-	0041  Intuos2 4x5
-	0042  Intuos2 6x8
-	0043  Intuos2 9x12
-	0044  Intuos2 12x12
-	0045  Intuos2 12x18
+	003f  DTZ-2100 [Cintiq 21UX]
+	0041  XD-0405-U [Intuos2 (4x5)]
+	0042  XD-0608-U [Intuos2 (6x8)]
+	0043  XD-0912-U [Intuos2 (9x12)]
+	0044  XD-1212-U [Intuos2 (12x12)]
+	0045  XD-1218-U [Intuos2 (12x18)]
 	0047  Intuos2 6x8
-	0060  Volito
-	0061  PenStation2
-	0062  Volito2 4x5
-	0063  Volito2 2x3
-	0064  PenPartner2
-	0065  Bamboo
-	0069  Bamboo One
-	0081  Graphire Wireless 6x8
+	0057  DTK-2241
+	0059  DTH-2242 tablet
+	005b  DTH-2200 [Cintiq 22HD Touch] tablet
+	005d  DTH-2242 touchscreen
+	005e  DTH-2200 [Cintiq 22HD Touch] touchscreen
+	0060  FT-0405 [Volito, PenPartner, PenStation (4x5)]
+	0061  FT-0203 [Volito, PenPartner, PenStation (2x3)]
+	0062  CTF-420 [Volito2]
+	0063  CTF-220 [BizTablet]
+	0064  CTF-221 [PenPartner2]
+	0065  MTE-450 [Bamboo]
+	0069  CTF-430 [Bamboo One]
+	006a  CTE-460 [Bamboo One Pen (S)]
+	006b  CTE-660 [Bamboo One Pen (M)]
+	0081  CTE-630BT [Graphire Wireless (6x8)]
 	0084  Wireless adapter for Bamboo tablets
 	0090  TPC90
 	0093  TPC93
+	0097  TPC97
 	009a  TPC9A
-	00b0  Intuos3 4x5
-	00b1  Intuos3 6x18
-	00b2  Intuos3 9x12
-	00b3  Intuos3 12x12
-	00b4  Intuos3 12x19
-	00b5  Intuos3 6x11 (PTZ-631W)
-	00b7  Intuos3 4x6
-	00b8  Intuos4 4x6
-	00b9  Intuos4 6x9
-	00ba  Intuos4 8x13
-	00bb  Intuos4 12x19
+	00b0  PTZ-430 [Intuos3 (4x5)]
+	00b1  PTZ-630 [Intuos3 (6x8)]
+	00b2  PTZ-930 [Intuos3 (9x12)]
+	00b3  PTZ-1230 [Intuos3 (12x12)]
+	00b4  PTZ-1231W [Intuos3 (12x19)]
+	00b5  PTZ-631W [Intuos3 (6x11)]
+	00b7  PTZ-431W [Intuos3 (4x6)]
+	00b8  PTK-440 [Intuos4 (4x6)]
+	00b9  PTK-640 [Intuos4 (6x9)]
+	00ba  PTK-840 [Intuos4 (8x13)]
+	00bb  PTK-1240 [Intuos4 (12x19)]
 	00c0  DTF-521
 	00c4  DTF-720
-	00c5  Cintiq 20WSX
-	00c6  Cintiq 12WX
+	00c5  DTZ-2000W [Cintiq 20WSX]
+	00c6  DTZ-1200W [Cintiq 12WX]
 	00c7  DTU-1931
-	00cc  Cintiq 21UX (DTK-2100)
-	00d1  Bamboo Pen & Touch (CTH-460-DE)
-	00d3  Bamboo Fun (CTH-661)
-	00d4  Bamboo Pen (CTL-460)
-	00d6  Bamboo Pen & Touch (CTH-460)
-	00db  Bamboo Fun (CTH-661SE-NL)
-	00dd  Bamboo Pen (CTL-470)
+	00cc  DTK-2100 [Cintiq 21UX]
+	00ce  DTU-2231
+	00d0  CTT-460 [Bamboo Touch]
+	00d1  CTH-460 [Bamboo Pen & Touch]
+	00d2  CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)]
+	00d3  CTH-661 [Bamboo Fun/Comic Pen & Touch (M)]
+	00d4  CTL-460 [Bamboo Pen (S)]
+	00d5  CTL-660 [Bamboo Pen (M)]
+	00d6  CTH-460 [Bamboo Pen & Touch]
+	00d7  CTH-461 [Bamboo Fun/Craft/Comic Pen & Touch (S)]
+	00d8  CTH-661 [Bamboo Fun/Comic Pen & Touch (M)]
+	00d9  CTT-460 [Bamboo Touch]
+	00da  CTH-461SE [Bamboo Pen & Touch Special Edition (S)]
+	00db  CTH-661SE [Bamboo Pen & Touch Special Edition (M)]
+	00dc  CTT-470 [Bamboo Touch]
+	00dd  CTL-470 [Bamboo Connect]
 	00de  CTH-470 [Bamboo Fun Pen & Touch]
-	00f6  Cintiq 24HD touch (DTH-2400) touchscreen
-	00f8  Cintiq 24HD touch (DTH-2400) tablet
-	0302  Intuos CTH480S2 [Manga]
-	0307  Cintiq Companion Hybrid 13HD (DTH-A1300) tablet
-	0309  Cintiq Companion Hybrid 13HD (DTH-A1300) touchscreen
-	030e  Intuos Pen Small (CTL480)
+	00df  CTH-670 [Bamboo Create/Fun]
+	00e2  TPCE2
+	00e3  TPCE3
+	00e5  TPCE5
+	00e6  TPCE6
+	00ec  TPCEC
+	00ed  TPCED
+	00ef  TPCEF
+	00f4  DTK-2400 [Cintiq 24HD] tablet
+	00f6  DTH-2400 [Cintiq 24HD touch] touchscreen
+	00f8  DTH-2400 [Cintiq 24HD touch] tablet
+	00fa  DTK-2200 [Cintiq 22HD] tablet
+	00fb  DTU-1031
+	0100  TPC100
+	0101  TPC101
+	010d  TPC10D
+	010e  TPC10E
+	010f  TPC10F
+	0116  TPC116
+	012c  TPC12C
+	0221  MDP-123 [Inkling]
+	0300  CTL-471 [Bamboo Splash, One by Wacom (S)]
+	0301  CTL-671 [One by Wacom (M)]
+	0302  CTH-480 [Intuos Pen & Touch (S)]
+	0303  CTH-680 [Intuos Pen & Touch (M)]
+	0304  DTK-1300 [Cintiq 13HD]
+	0307  DTH-A1300 [Cintiq Companion Hybrid] tablet
+	0309  DTH-A1300 [Cintiq Companion Hybrid] touchscreen
+	030e  CTL-480 [Intuos Pen (S)]
+	0314  PTH-451 [Intuos pro (S)]
+	0315  PTH-651 [Intuos pro (M)]
+	0317  PTH-851 [Intuos pro (L)]
+	0318  CTH-301 [Bamboo]
+	032f  DTU-1031X
+	0347  Integrated Hub
+	0348  Integrated Hub
+	034a  DTH-W1320 [MobileStudio Pro 13] touchscreen
+	034b  DTH-W1620 [MobileStudio Pro 16] touchscreen
+	034d  DTH-W1320 [MobileStudio Pro 13] tablet
+	034e  DTH-W1620 [MobileStudio Pro 16] tablet
 	0400  PenPartner 4x5
+	4001  TPC4001
+	4004  TPC4004
 	4850  PenPartner 6x8
-	5010  Thinkpad T550 touchscreen
+	5000  TPC5000
+	5002  TPC5002
+	5010  TPC5010
 056b  Decicon, Inc.
 056c  eTEK Labs
 	0006  KwikLink Host-Host Connector
@@ -6406,6 +6609,7 @@
 	1300  SoftK56 Data Fax Voice CARP
 	1301  Modem Enumerator
 	1328  TrendNet TFM-561 modem
+	1804  HP Dock Audio
 	2000  SoftGate 802.11 Adapter
 	2002  SoftGate 802.11 Adapter
 	262a  tm5600 Video & Audio Grabber Capture
@@ -6847,6 +7051,7 @@
 	001e  Projector
 	001f  Projector
 	ffe5  IN34 Projector
+	ffeb  Projector IN76
 058d  Micrel Semiconductor
 058e  Tripath Technology, Inc.
 058f  Alcor Micro Corp.
@@ -6868,6 +7073,7 @@
 	6386  Memory Card
 	6387  Flash Drive
 	6390  USB 2.0-IDE bridge
+	6391  IDE Bridge
 	9213  MacAlly Kbd Hub
 	9215  AU9814 Hub
 	9254  Hub
@@ -6882,12 +7088,13 @@
 	9361  Multimedia Card Reader
 	9368  Multimedia Card Reader
 	9380  Flash Drive
+	9381  Flash Drive
 	9382  Acer/Sweex Flash drive
 	9384  qdi U2Disk T209M
 	9410  Keyboard
 	9472  Keyboard Hub
 	9510  ChunghwaTL USB02 Smartcard Reader
-	9520  EMV Certified Smart Card Reader
+	9520  Watchdata W 1981
 	9540  AU9540 Smartcard Reader
 	9720  USB-Serial Adapter
 	a014  Asus Integrated Webcam
@@ -6952,6 +7159,7 @@
 	017c  HDD/1394B
 	0251  Optical
 	0252  Optical
+	0275  ST332082 0A
 	0278  LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0]
 	027a  LPHD250-U [Portable Hard Drive Silver Series 250 Go]
 	0470  Prestige Portable Hard Drive
@@ -6976,6 +7184,7 @@
 	0829  BigDisk Extreme+
 	100c  Rugged Triple Interface Mobile Hard Drive
 	1010  Desktop Hard Drive
+	1016  Desktop Hard Drive
 	1018  Desktop Hard Drive
 	1019  Desktop Hard Drive
 	1021  Little Disk
@@ -6984,6 +7193,7 @@
 	1049  rikiki Harddrive
 	1052  P'9220 Mobile Drive
 	1064  Rugged 16 and 32 GB
+	106d  Porsche Design Mobile Drive
 	106e  Porsche Design Desktop Drive
 	a601  HardDrive
 	a602  CD R/W
@@ -7107,7 +7317,11 @@
 	0252  Internal Keyboard/Trackpad (ANSI)
 	0253  Internal Keyboard/Trackpad (ISO)
 	0254  Internal Keyboard/Trackpad (JIS)
+	0259  Internal Keyboard/Trackpad
 	0263  Apple Internal Keyboard / Trackpad (MacBook Retina)
+	0267  Magic Keyboard A1644
+	0269  Magic Mouse 2 (Lightning connector)
+	0273  Internal Keyboard/Trackpad (ISO)
 	0301  USB Mouse [Mitsumi, M4848]
 	0302  Optical Mouse [Fujitsu]
 	0304  Mighty Mouse [Mitsumi, M1152]
@@ -7207,6 +7421,8 @@
 	8242  Built-in IR Receiver
 	8281  Bluetooth Host Controller
 	8286  Bluetooth Host Controller
+	828c  Bluetooth Host Controller
+	8290  Bluetooth Host Controller
 	8300  Built-in iSight (no firmware loaded)
 	8403  Internal Memory Card Reader
 	8404  Internal Memory Card Reader
@@ -7252,6 +7468,7 @@
 05b7  Medianix Semiconductor, Inc.
 05b8  Agiler, Inc.
 	3002  Scroll Mouse
+	3223  ISY Wireless Presenter
 05b9  Philips Research Laboratories
 05ba  DigitalPersona, Inc.
 	0007  Fingerprint Reader
@@ -7316,6 +7533,7 @@
 	6001  Ten-Keypad
 05c8  Cheng Uei Precision Industry Co., Ltd (Foxlink)
 	0103  FO13FF-65 PC-CAM
+	010b  Webcam (UVC)
 	021a  HP Webcam
 	0318  Webcam
 	0361  SunplusIT INC. HP Truevision HD Webcam
@@ -7336,6 +7554,7 @@
 	1810  Pavilion Webcam [R5U870]
 	1812  Pavilion Webcam
 	1814  HD Webcam
+	1815  Dell Laptop Integrated Webcam
 	1820  Integrated Webcam
 	1830  Visual Communication Camera VGP-VCC2 [R5U870]
 	1832  Visual Communication Camera VGP-VCC3 [R5U870]
@@ -7475,6 +7694,7 @@
 	20e0  ScanMaker 9700XL
 	20ed  ScanMaker 4700
 	20ee  Micortek ScanMaker X12USL
+	2838  RT2832U
 	3008  Scanner
 	300a  4800 ICE Scanner
 	300b  4800 Scanner
@@ -7589,6 +7809,7 @@
 	a560  JumpDrive FireFly
 	a701  JumpDrive FireFly
 	a731  JumpDrive FireFly
+	a762  JumpDrive FireFly
 	a768  JumpDrive Retrax
 	a790  JumpDrive 2GB
 	a811  16GB Gizmo!
@@ -7598,8 +7819,11 @@
 	b002  USB CF Reader
 	b018  Multi-Card Reader
 	b047  SDHC Reader [RW047-7000]
+	b051  microSD RDR UHS-I Card Reader [LRWM03U-7000]
 	ba02  Workflow CFR1
+	ba0a  Workflow DD512
 	c753  JumpDrive TwistTurn
+	c75c  JumpDrive V10
 05dd  Delta Electronics, Inc.
 	ff31  AWU-120
 	ff32  FriendlyNET AeroLAN AL2011
@@ -7633,6 +7857,7 @@
 	0131  CF/SM Reader/Writer
 	0142  Multiple Slides Scanner-3600
 	0143  Multiple Frames Film Scanner-36series
+	0145  Reflecta CrystalScan 7200 Photo-Scanner
 	0180  Plustek Scanner
 	0182  Wize Media 1000
 	0189  ScanJet 4600 series
@@ -7650,6 +7875,7 @@
 	0607  Logitech G110 Hub
 	0608  Hub
 	0610  4-port hub
+	0612  Hub
 	0616  hub
 	0660  USB 2.0 Hub
 	0700  SIIG US2256 CompactFlash Card Reader
@@ -7681,9 +7907,12 @@
 	0731  GL3310 SATA 3Gb/s Bridge Controller
 	0732  All-in-One Cardreader
 	0736  microSD Reader/Writer
+	0738  Card reader
 	0741  microSD Card Reader
 	0743  SDXC and microSDXC CardReader
 	0745  Logilink CR0012
+	0748  All-in-One Cardreader
+	0751  microSD Card Reader
 	0760  USB 2.0 Card Reader/Writer
 	0761  Genesys Mass Storage Device
 	0780  USBFS DFU Adapter
@@ -7759,6 +7988,7 @@
 	262a  3dfx HammerHead FX
 	262f  HammerHead Fx
 	daae  Game Shark
+	dbae  Datel XBoxMC
 05fe  Chic Technology Corp.
 	0001  Mouse
 	0003  Cypress USB Mouse
@@ -7793,6 +8023,7 @@
 060b  Solid Year
 	0001  MacAlly Keyboard
 	0230  KSK-8003 UX Keyboard
+	0540  DeltaCo TB-106U Keyboard
 	1006  Japanese Keyboard - 260U
 	2101  Keyboard
 	2231  KSK-6001 UELX Keyboard
@@ -7817,6 +8048,8 @@
 0615  Quabbin Wire & Cable Co., Inc.
 0616  Future Techno Designs PVT, Ltd
 0617  Swiss Federal Insitute of Technology
+	000a  Thymio-II
+	000c  Thymio-II Wireless
 0618  MacAlly
 	0101  Mouse
 0619  Seiko Instruments, Inc.
@@ -7865,6 +8098,7 @@
 	0102  Wireless Keyboard/Mouse Combo [MK1152WC]
 	0201  Defender Office Keyboard (K7310) S Zodiak KM-9010
 	0252  Emerge Uni-retractable Laser Mouse
+	2410  Wireless PS3 gamepad
 	3286  Nano Receiver [Sandstrom Laser Mouse SMWLL11]
 	4101  Wireless Keyboard/Mouse
 	6301  Trust Wireless Optical Mouse MI-4150K
@@ -7948,12 +8182,15 @@
 	c107  HP webcam [dv6-1190en]
 	c335  HP TrueVision HD
 	d101  Acer CrystalEye Webcam
+	d213  UVC HD Webcam
 	d217  HP TrueVision HD
 	e201  Lenovo Integrated Webcam
 	e203  Lenovo Integrated Webcam
 	e258  HP TrueVision HD Integrated Webcam
+	e263  HP TrueVision HD Integrated Webcam
 	f102  Lenovo Integrated Webcam [R5U877]
 	f103  Lenovo Integrated Webcam [R5U877]
+	f209  HP Webcam
 	f300  UVC 0.3M Webcam
 064f  WIBU-Systems AG
 	03e9  CmStick (article no. 1001)
@@ -8176,6 +8413,7 @@
 	3507  PL3507 ATAPI6 Bridge
 	aaa0  Prolific Pharos
 	aaa2  PL2303 Serial Adapter (IODATA USB-RSAQ3)
+	aaa3  PL2303x Serial Adapter
 067c  Efficient Networks, Inc.
 	1001  Siemens SpeedStream 100MBps Ethernet
 	1022  Siemens SpeedStream 1022 802.11b Adapter
@@ -8288,12 +8526,15 @@
 0694  Lego Group
 	0001  Mindstorms Tower
 	0002  Mindstorms NXT
+	0005  Mindstorms EV3
+	0006  Mindstorms EV3 Firmware Update
 0698  Chuntex (CTX)
 	1786  1300ex Monitor
 	2003  CTX M730V built in Camera
 	9999  VLxxxx Monitor+Hub
 0699  Tektronix, Inc.
 	0347  AFG 3022B
+	036a  TDS 2024B
 069a  Askey Computer Corp.
 	0001  VC010 Webcam [pwc]
 	0303  Cable Modem
@@ -8575,6 +8816,12 @@
 	0393  CP9500D/DW Port
 	0394  CP9000D/DW Port
 	03a1  CP9550D/DW Port
+	03a5  CP9550DW-S
+	03a9  CP-9600DW
+	03aa  CP3020DA
+	03ad  CP-9800DW-S
+	03ae  CP-9800DW-S
+	3b10  P95D
 	3b30  CP-D70DW / CP-D707DW
 	3b31  CP-K60DW-S
 06d4  Cisco Systems
@@ -8793,7 +9040,7 @@
 	5100  Magic Control Technology Corp. (USB2VGA dongle)
 0713  Interval Research Corp.
 0714  NewMotion, Inc.
-	0003  ADB to USB convertor
+	0003  ADB converter
 0717  ZNK Corp.
 0718  Imation Corp.
 	0002  SuperDisk 120MB
@@ -8813,11 +9060,13 @@
 	0622  TDK Trans-It 4GB
 	0624  TDK Trans-It 16GB
 	1120  RDX External dock (redbud)
+	4006  8x Slim DVD Multi-Format Recorder External
 	d000  Disc Stakka CD/DVD Manager
 0719  Tremon Enterprises Co., Ltd
 071b  Domain Technologies, Inc.
 	0002  DTI-56362-USB Digital Interface Unit
 	0101  Audio4-USB DSP Data Acquisition Unit
+	0184  Archos 2 8GB EM184RB
 	0201  Audio4-5410 DSP Data Acquisition Unit
 	0301  SB-USB JTAG Emulator
 	3203  Rockchip Media Player
@@ -8899,8 +9148,8 @@
 	0630  VQ630 Dual Mode Digital Camera(Bulk)
 	0631  Hercules Dualpix
 	0780  Smart Cam Deluxe(composite)
-	1310  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470
-	1311  Digital Dream Epsilon 1.3
+	1310  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (mass storage mode)
+	1311  Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 (PC Cam mode)
 	1314  Mercury 2.1MEG Deluxe Classic Cam
 	2211  Jenoptik jdc 21 LCD Camera
 	2221  Mercury Digital Pro 3.1p
@@ -9001,7 +9250,7 @@
 	1015  M-Audio Keystation
 	1020  Midisport 4x4
 	1021  MidiSport 4x4
-	1030  Midisport 8x8
+	1030  M-Audio MIDISPORT 8x8
 	1031  MidiSport 8x8/s Loader
 	1033  MidiSport 8x8/s
 	1040  M-Audio MidiSport 2x4 Loader
@@ -9026,7 +9275,7 @@
 	201b  M-Audio RunTime DFU
 	201d  M-Audio Producer
 	2024  M-Audio Fast Track MKII
-	2080  M-Audio RunTime DFU
+	2080  M-Audio Fast Track Ultra
 	2081  M-Audio RunTime DFU / Fast Track Ultra 8R
 	2803  M-Audio Audiophile DFU
 	2804  M-Audio MobilePre DFU
@@ -9042,6 +9291,7 @@
 	0601  PR1500LCDRT2U UPS
 0765  X-Rite, Inc.
 	5001  Huey PRO Colorimeter
+	5010  X-Rite Pantone Color Sensor
 	5020  i1 Display Pro
 	6003  ColorMunki Smile
 	d094  X-Rite DTP94 [Quato Silver Haze Pro]
@@ -9140,13 +9390,19 @@
 	540e  Cruzer Contour Flash Drive
 	5530  Cruzer
 	5567  Cruzer Blade
+	556b  Cruzer Edge
 	556c  Ultra
 	556d  Memory Vault
 	5571  Cruzer Fit
+	5575  Cruzer Glide
 	5576  Cruzer Facet
+	5577  Cruzer Pop (8GB)
 	557d  Cruzer Force (64GB)
 	5580  SDCZ80 Flash Drive
 	5581  Ultra
+	5583  Ultra Fit
+	5590  Ultra Dual
+	5591  Ultra Flair
 	5e10  Encrypted
 	6100  Ultra II SD Plus 2GB
 	7100  Cruzer Mini
@@ -9207,6 +9463,7 @@
 	a7e8  SDDR-113 MicroMate SDHC Reader
 	b2b3  SDDR-103 MobileMate SD+ Reader
 	b4b5  SDDR-89 V4 ImageMate 12-in-1 Reader
+	b6ba  CF SDDR-289
 0782  Trackerball
 0783  C3PO
 	0003  LTC31 SmartCard Reader
@@ -9641,6 +9898,7 @@
 	4107  CW-L300 Device
 	4500  LV-20 Digital Camera
 	6101  fx-9750gII
+	6102  fx-CP400
 	6801  PL-40R
 	6802  MIDI Keyboard
 07d0  Dazzle
@@ -9712,6 +9970,8 @@
 07de  Diamond Multimedia
 	2820  VC500 Video Capture Dongle
 07df  David Electronics Co., Ltd
+07e0  NCP engineering GmbH
+	4742  VPN GovNet Box
 07e1  Ambient Technologies, Inc.
 	5201  V.90 Modem
 07e2  Elmeg GmbH & Co., Ltd
@@ -9747,9 +10007,11 @@
 	1196  BWIFI-USB54AR 802.11bg
 	a904  BeWAN ADSL
 	a905  BeWAN ADSL ST
+07fc  Thomann
+	1113  SWISSONIC EasyKeys61 Midikeyboard
 07fd  Mark of the Unicorn
 	0000  FastLane MIDI Interface
-	0001  FastLane Quad MIDI Interface
+	0001  MIDI Interface
 	0002  MOTU Audio for 64 bit
 07ff  Unknown
 	00ff  Portable Hard Drive
@@ -9786,6 +10048,7 @@
 	0001  Dual PSX Adaptor
 	0002  Dual PCS Adaptor
 	0003  PlayStation Gamepad
+	e501  SNES Gamepad
 0813  Mattel, Inc.
 	0001  Intel Play QX3 Microscope
 	0002  Dual Mode Camera Plus
@@ -9951,6 +10214,7 @@
 	9010  WNDA3100v1 802.11abgn [Atheros AR9170+AR9104]
 	9011  WNDA3100v2 802.11abgn [Broadcom BCM4323]
 	9012  WNDA4100 802.11abgn 3x3:3 [Ralink RT3573]
+	9014  WNDA3100v3 802.11abgn 2x2:2 [MediaTek MT7632U]
 	9018  WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
 	9020  WNA3100(v1) Wireless-N 300 [Broadcom BCM43231]
 	9021  WNA3100M(v1) Wireless-N 300 [Realtek RTL8192CU]
@@ -10134,14 +10398,21 @@
 	01f4  USBSIMM1
 08b9  RadioShack Corp. (Tandy)
 08bb  Texas Instruments
-	2702  Speakers
-	2704  Audio Codec
-	2706  PCM2706 Audio Codec
+	2702  PCM2702 16-bit stereo audio DAC
+	2704  PCM2704 16-bit stereo audio DAC
+	2705  PCM2705 stereo audio DAC
+	2706  PCM2706 stereo audio DAC
+	2707  PCM2707 stereo audio DAC
+	27c4  PCM2704C stereo audio DAC
+	27c5  PCM2705C stereo audio DAC
+	27c6  PCM2706C stereo audio DAC
+	27c7  PCM2707C stereo audio DAC
 	2900  PCM2900 Audio Codec
 	2901  PCM2901 Audio Codec
 	2902  PCM2902 Audio Codec
 	2904  PCM2904 Audio Codec
 	2910  PCM2912 Audio Codec
+	2912  PCM2912A Audio Codec
 	29b0  PCM2900B Audio CODEC
 	29b2  PCM2902 Audio CODEC
 	29b3  PCM2903B Audio CODEC
@@ -10196,6 +10467,7 @@
 	2011  Pocket CAM 3 Mega (storage)
 	2016  PocketCam 2 Mega
 	2018  Pencam SD 2M
+	2019  Pencam SD 2M (mass storage mode)
 	2020  Slim 3000F
 	2022  Slim 3200
 	2024  Pocket DV3500
@@ -10308,6 +10580,7 @@
 	0002  CECT M800 memory card
 08ee  CCSI/Hesso
 08f0  Corex Technologies
+	0005  CardScan 800c
 08f1  CTI Electronics Corp.
 08f2  Gotop Information Inc.
 	007f  Super Q2 Tablet
@@ -10492,6 +10765,8 @@
 	0003  GPS (various models)
 	0004  iQue 3600
 	0200  Data Card Programmer (install)
+	086e  Forerunner 735XT
+	097f  Forerunner 235
 	1200  Data Card Programmer
 	21a5  etrex Cx (msc)
 	2236  nuvi 360
@@ -10508,6 +10783,8 @@
 	2535  Edge 800
 	253c  GPSmap 62sc
 	255b  Nuvi 2505LM
+	26a1  Nuvi 55
+	47fb  nuviCam
 0920  Echelon Co.
 	7500  Network Interface
 0921  GoHubs, Inc.
@@ -10525,6 +10802,8 @@
 0924  Xerox
 	23dd  DocuPrint M760 (X760_USB)
 	3ce8  Phaser 3428 Printer
+	3cea  Phaser 3125
+	3cec  Phaser 3250
 	3d5b  Phaser 6115MFP TWAIN Scanner
 	3d6d  WorkCentre 6015N/NI
 	420f  WorkCentre PE220 Series
@@ -10555,6 +10834,7 @@
 	0009  Gigabeat F/X (HDD audio player)
 	000c  Gigabeat F (mtp)
 	0010  Gigabeat S (mtp)
+	01bf  2.5"External Hard Disk
 	0200  Integrated Bluetooth (Taiyo Yuden)
 	021c  Atheros AR3012 Bluetooth
 	0301  PCX1100U Cable Modem (WDM)
@@ -10579,6 +10859,7 @@
 	070a  Pocket PC e400 Series
 	070b  Pocket PC e800 Series
 	0a07  WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572]
+	0a08  WLM-20U2/GN-1080 802.11abgn Wireless Adapter [Atheros AR7010+AR9280]
 	0a13  AX88179 Gigabit Ethernet [Toshiba]
 	0b05  PX1220E-1G25 External hard drive
 	0b09  PX1396E-3T01 External hard drive
@@ -10631,7 +10912,7 @@
 	653d  Kingston DataTraveler 2.0 Stick (1GB)
 	653e  Flash Memory
 	6540  TransMemory Flash Memory
-	6544  TransMemory-Mini / Kingston DataTraveler 2.0 Stick (2GB)
+	6544  TransMemory-Mini / Kingston DataTraveler 2.0 Stick
 	6545  Kingston DataTraveler 102/2.0 / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick
 0931  Harmonic Data Systems, Ltd
 0932  Crescentec Corp.
@@ -10645,7 +10926,12 @@
 0933  Quantum Corp.
 0934  Spirent Communications
 0936  NuTesla
+	000a  Moebius
+	000b  iMoebius
 	000c  Rhythmedics 6 BioData Integrator
+	000d  Hypurius
+	000e  Millennius
+	000f  Purius
 	0030  Composite Device, Mass Storage Device (Flash Drive) amd HID
 	003c  Rhythmedics HID Bootloader
 0939  Lumberg, Inc.
@@ -10724,6 +11010,7 @@
 	1603  DataTraveler 1GB/2GB Pen Drive
 	1606  Eee PC 701 SD Card Reader [ENE UB6225]
 	1607  DataTraveler 100
+	160b  DataTraveler 2.0 (2GB)
 	160d  DataTraveler Vault Privacy
 	160e  DT110P/1GB Capless
 	1613  DataTraveler DT101C Flash Drive
@@ -10739,15 +11026,18 @@
 	1643  DataTraveler G3
 	1653  Data Traveler 100 G2 8 GiB
 	1656  DataTraveler Ultimate G2
+	1660  Data Traveller 108
 	1665  Digital DataTraveler SE9 64GB
-	1666  DataTraveler G4
+	1666  DataTraveler 100 G3/G4/SE9 G2
 	1689  DataTraveler SE9
 	168a  DataTraveler Micro
 	168c  DT Elite 3.0
 0954  RPM Systems Corp.
 0955  NVidia Corp.
+	7018  APX
 	7030  Tegra 3 (recovery mode)
 	7100  Tegra Device
+	7210  SHIELD Controller
 	7820  Tegra 2 AC100 developer mode
 	b400  SHIELD (debug)
 	b401  SHIELD
@@ -10780,7 +11070,13 @@
 	0204  WarpLink 802.11b Adapter
 0968  Catalyst Enterprises, Inc.
 096e  Feitian Technologies, Inc.
+	0005  ePass2000
 	0120  Microcosm Ltd Dinkey
+	0305  ePass2000Auto
+	0309  ePass3000GM
+	0401  ePass3000
+	0702  ePass3003
+	0703  ePass3003Auto
 	0802  ePass2000 (G&D STARCOS SPK 2.4)
 	0807  ePass2003
 0971  Gretag-Macbeth AG
@@ -10830,6 +11126,7 @@
 	610c  EL-610 Super Mini Electron luminescent Keyboard
 	713a  WK-713 Multimedia Keyboard
 	7160  Hyper Slim Keyboard
+099e  Trimble Navigation, Ltd
 09a3  PairGain Technologies
 09a4  Contech Research, Inc.
 09a5  VCON Telecommunications
@@ -10886,6 +11183,15 @@
 09c5  Memory Corp.
 09ca  BMC Messsysteme GmbH
 	5544  PIO
+09cb  FLIR Systems
+	1001  Network Adapter
+	1002  Ex-Series RNDIS interface
+	1004  Ex-Series UVC interface
+	1005  Ex-Series RNDIS and UVC interface
+	1006  Ex-Series RNDIS and MSD interface
+	1007  Ex-Series UVC and MSD interface
+	1008  Serial Port
+	1996  FLIR ONE Camera
 09cc  Workbit Corp.
 	0404  BAFO USB-ATA/ATAPI Bridge Controller
 09cd  Psion Dacom Home Networks, Ltd
@@ -10897,8 +11203,10 @@
 09d3  Com One
 	0001  ISDN TA / Light Rider 128K
 	000b  Bluetooth Adapter class 1 [BlueLight]
-09d7  Novatel Wireless
+09d7  NovAtel Inc.
 	0100  NovAtel FlexPack GPS receiver
+09d8  ELATEC
+	0406  TWN4 MIFARE NFC
 09d9  KRF Tech, Ltd
 09da  A4Tech Co., Ltd.
 	0006  Optical Mouse WOP-35 / Trust 450L Optical Mouse
@@ -10911,6 +11219,7 @@
 	024f  RF Receiver and G6-20D Wireless Optical Mouse
 	0260  KV-300H Isolation Keyboard
 	032b  Wireless Mouse (Battery Free)
+	1068  Bloody A90 Mouse
 	8090  X-718BK Oscar Optical Gaming Mouse
 	9033  X-718BK Optical Mouse
 	9066  F3 V-Track Gaming Mouse
@@ -11155,7 +11464,9 @@
 	2150  BCM2046 Bluetooth Device
 	2151  Bluetooth
 	2154  BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle
+	216a  BCM43142A0 Bluetooth
 	216c  BCM43142A0 Bluetooth Device
+	216d  BCM43142A0 Bluetooth 4.0
 	216f  BCM20702A0 Bluetooth
 	217d  HP Bluethunder
 	217f  BCM2045B (BDC-2.1)
@@ -11184,6 +11495,7 @@
 	5803  BCM5880 Secure Applications Processor with secure keyboard
 	5804  BCM5880 Secure Applications Processor with fingerprint swipe sensor
 	6300  Pirelli Remote NDIS Device
+	6410  BCM20703A1 Bluetooth 4.1 + LE
 	bd11  TiVo AG0100 802.11bg Wireless Adapter [Broadcom BCM4320]
 	bd13  BCM4323 802.11abgn Wireless Adapter
 	bd16  BCM4319 802.11bgn Wireless Adapter
@@ -11233,6 +11545,34 @@
 0a84  Maui Innovative Peripherals
 0a85  Idexx Labs
 0a86  NITGen Co., Ltd
+0a89  Aktiv
+	0001  Guardant Stealth/Net
+	0002  Guardant ID
+	0003  Guardant Stealth 2
+	0004  Rutoken
+	0005  Guardant Fidus
+	0006  Guardant Stealth 3
+	0007  Guardant Stealth 2
+	0008  Guardant Stealth 3 Sign/Time
+	0009  Guardant Code
+	000a  Guardant Sign Pro
+	000b  Guardant Sign Pro HID
+	000c  Guardant Stealth 3 Sign/Time
+	000d  Guardant Code HID
+	000f  Guardant System Firmware Update
+	0020  Rutoken S
+	0025  Rutoken lite
+	0026  Rutoken lite HID
+	002a  Rutoken Mass Storage
+	002b  Guardant Mass Storage
+	0030  Rutoken ECP
+	0040  Rutoken ECP HID
+	0060  Rutoken Magistra
+	0061  Rutoken Magistra
+	0069  Reader
+	0080  Rutoken PinPad Ex
+	0081  Rutoken PinPad In
+	0082  Rutoken PinPad 2
 0a8d  Picturetel
 0a8e  Japan Aviation Electronics Industry, Ltd
 	2011  Filter Driver For JAE XMC R/W
@@ -11517,6 +11857,8 @@
 	17c9  USB-AC53 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
 	17cb  Broadcom BCM20702A0 Bluetooth
 	17d1  AC51 802.11a/b/g/n/ac Wireless Adapter [Mediatek MT7610/Ralink RT2870]
+	180a  Broadcom BCM20702 Single-Chip Bluetooth 4.0 + LE
+	1825  Qualcomm Bluetooth 4.1
 	4c80  Transformer Pad TF300TG
 	4c90  Transformer Pad Infinity TF700
 	4c91  Transformer Pad Infinity TF700 (Debug mode)
@@ -11527,9 +11869,15 @@
 	4daf  Transformer Pad Infinity TF700 (Fastboot)
 	5410  MeMO Pad HD 7 (MTP mode)
 	5412  MeMO Pad HD 7 (PTP mode)
-	550f  ASUS fonepad 7
+	550f  Fonepad 7
 	6101  Cable Modem
 	620a  Remote NDIS Device
+	7772  ASUS Zenfone GO (ZB500KL) (MTP mode)
+	7773  ASUS Zenfone GO (ZB500KL) (Debug, MTP mode)
+	7774  ASUS Zenfone GO (ZB500KL) (RNDIS mode)
+	7775  ASUS Zenfone GO (ZB500KL) (Debug, RNDIS mode)
+	7776  ASUS Zenfone GO (ZB500KL) (PTP mode)
+	7777  ASUS Zenfone GO (ZB500KL) (Debug, PTP mode)
 	b700  Broadcom Bluetooth 2.1
 0b0b  Datamax-O'Neil
 	106e  Datamax E-4304
@@ -11542,10 +11890,15 @@
 0b0d  ProjectLab
 	0000  CenturyCD
 0b0e  GN Netcom
+	0348  Jabra UC VOICE 550a MS
 	034c  Jabra UC Voice 750 MS
+	0410  Jabra SPEAK 410
 	0420  Jabra SPEAK 510
 	094d  GN Netcom / Jabra REVO Wireless
+	1017  Jabra PRO 930
 	1022  Jabra PRO 9450, Type 9400BS (DECT Headset)
+	1041  Jabra PRO 9460
+	1900  Jabra Biz 1900
 	2007  GN 2000 Stereo Corded Headset
 	620c  Jabra BT620s
 	9330  Jabra GN9330 Headset
@@ -11567,6 +11920,7 @@
 	0006  SM Media-Shuttle Card Reader
 0b33  Contour Design, Inc.
 	0020  ShuttleXpress
+	0030  ShuttlePro v2
 	0700  RollerMouse Pro
 0b37  Hitachi ULSI Systems Co., Ltd
 0b38  Gear Head
@@ -11626,6 +11980,8 @@
 	3011  TT-connect S2-4600
 	3012  TT-connect CT2-4650 CI
 	3014  TT-TVStick CT2-4400
+	3015  TT-connect CT2-4650 CI
+	3017  TT-connect S2-4650 CI
 0b49  ASCII Corp.
 	064f  Trance Vibrator
 0b4b  Pine Corp. Ltd.
@@ -11707,7 +12063,7 @@
 	7720  AX88772
 	772a  AX88772A Fast Ethernet
 	772b  AX88772B
-	7e2b  AX88772B
+	7e2b  AX88772B Fast Ethernet Controller
 0b96  Sewon Telecom
 0b97  O2 Micro, Inc.
 	7732  Smart Card Reader
@@ -11936,9 +12292,12 @@
 	0ca2  Desire HD (debug mode)
 	0ca5  Android Phone [Evo Shift 4G]
 	0cae  T-Mobile MyTouch 4G Slide [Doubleshot]
+	0de5  One (M7)
 	0dea  M7_UL [HTC One]
 	0f25  One M8
+	0f63  Desire 610 Via MTP
 	0f64  Desire 601
+	0fb4  Remote NDIS based Device
 	0ff8  Desire HD (Tethering Mode)
 	0ff9  Desire / Desire HD / Hero / Thunderbolt (Charge Mode)
 	0ffe  Desire HD (modem mode)
@@ -11963,8 +12322,10 @@
 	2100  FreeAgent Go
 	2200  FreeAgent Go FW
 	2300  Expansion Portable
+	231a  Expansion Portable
 	2320  USB 3.0 bridge [Portable Expansion Drive]
 	2321  Expansion Portable
+	2322  SRD0NF1 Expansion Portable (STEA)
 	2340  FreeAgent External Hard Drive
 	3000  FreeAgent Desktop
 	3008  FreeAgent Desk 1TB
@@ -11976,19 +12337,24 @@
 	5021  FreeAgent GoFlex USB 2.0
 	5030  FreeAgent GoFlex Upgrade Cable STAE104
 	5031  FreeAgent GoFlex USB 3.0
+	5032  SATA cable
 	5070  FreeAgent GoFlex Desk
 	5071  FreeAgent GoFlex Desk
 	50a1  FreeAgent GoFlex Desk
 	50a5  FreeAgent GoFlex Desk USB 3.0
 	5121  FreeAgent GoFlex
 	5161  FreeAgent GoFlex dock
+	61b7  Maxtor M3 Portable
 	a003  Backup Plus
 	a0a1  Backup Plus Desktop
 	a0a4  Backup Plus Desktop Drive
 	ab00  Slim Portable Drive
 	ab20  Backup Plus Portable Drive
 	ab21  Backup Plus Slim
+	ab24  Backup Plus Portable Drive
 	ab31  Backup Plus Desktop Drive (5TB)
+	ab34  Backup Plus
+	ab38  Backup Plus Hub
 0bc3  IPWireless, Inc.
 	0001  UMTS-TDD (TD-CDMA) modem
 0bc4  Microcube Corp.
@@ -12022,6 +12388,7 @@
 	0106  Mass Storage Device
 	0107  Mass Storage Device
 	0108  Mass Storage Device
+	0109  microSDXC Card Reader [Hama 00091047]
 	0111  RTS5111 Card Reader Controller
 	0113  Mass Storage Device
 	0115  Mass Storage Device (Multicard Reader)
@@ -12034,7 +12401,7 @@
 	0139  RTS5139 Card Reader Controller
 	0151  Mass Storage Device (Multicard Reader)
 	0152  Mass Storage Device
-	0153  Mass Storage Device
+	0153  3-in-1 (SD/SDHC/SDXC) Card Reader
 	0156  Mass Storage Device
 	0157  Mass Storage Device
 	0158  USB 2.0 multicard reader
@@ -12049,15 +12416,22 @@
 	0184  RTS5182 Card Reader
 	0186  Card Reader
 	0301  multicard reader
+	0307  Card Reader
 	1724  RTL8723AU 802.11n WLAN Adapter
 	2831  RTL2831U DVB-T
 	2832  RTL2832U DVB-T
 	2838  RTL2838 DVB-T
 	5401  RTL 8153 USB 3.0 hub with gigabit ethernet
+	570c  Asus laptop camera
 	5730  HP 2.0MP High Definition Webcam
+	5751  Integrated Webcam
 	5775  HP "Truevision HD" laptop camera
+	57b3  Acer 640 × 480 laptop camera
+	57da  Built-In Video Camera
 	8150  RTL8150 Fast Ethernet Adapter
 	8151  RTL8151 Adapteon Business Mobile Networks BV
+	8152  RTL8152 Fast Ethernet Adapter
+	8153  RTL8153 Gigabit Ethernet Adapter
 	8171  RTL8188SU 802.11n WLAN Adapter
 	8172  RTL8191SU 802.11n WLAN Adapter
 	8174  RTL8192SU 802.11n WLAN Adapter
@@ -12067,6 +12441,7 @@
 	817f  RTL8188RU 802.11n WLAN Adapter
 	8187  RTL8187 Wireless Adapter
 	8189  RTL8187B Wireless 802.11g 54Mbps Network Adapter
+	818b  ACT-WNP-UA-005 802.11b/g/n WLAN Adapter
 	8192  RTL8191SU 802.11n Wireless Adapter
 	8193  RTL8192DU 802.11an WLAN Adapter
 	8197  RTL8187B Wireless Adapter
@@ -12085,6 +12460,7 @@
 	1909  F3307 v2 Mobile Broadband Module
 	190a  F3307 Mobile Broadband Module
 	190b  C3607w v2 Mobile Broadband Module
+	1926  H5321 gw Mobile Broadband Driver
 0bdc  Y Media Corp.
 0bdd  Orange PCS
 0be2  Kanda Tsushin Kogyo Co., Ltd
@@ -12118,10 +12494,13 @@
 	100c  Keyboard FSC KBPC PX
 	100f  miniCard D2301 802.11bg Wireless Module [SiS 163U]
 	1017  Keyboard KB SCR
+	101f  Fujitsu Full HD Pro Webcam
 0bfd  Kvaser AB
 	0004  USBcan II
 	000b  Leaf Light HS
 	000e  Leaf SemiPro HS
+0c00  FireFly Mouse Mat
+	1607  Apex M500
 0c04  MOTO Development Group, Inc.
 0c05  Appian Graphics
 0c06  Hasbro Games, Inc.
@@ -12355,6 +12734,11 @@
 	6480  Sonix 1.3 MP Laptop Integrated Webcam
 	648b  Integrated Webcam
 	64bd  Sony Visual Communication Camera
+	64d0  Integrated Webcam
+	64d2  Integrated Webcam
+	651b  HP Webcam
+	6705  Integrated HD Webcam
+	6710  Integrated Webcam
 	7401  TEMPer Temperature Sensor
 	7402  TEMPerHUM Temperature & Humidity Sensor
 	7403  Foot Switch
@@ -12526,6 +12910,10 @@
 	3050  EZ710 Smart Card Reader
 0ca7  Information Systems Laboratories
 0cad  Motorola CGISS
+	1007  APX Series Consolette
+	1030  APX Series Radio (Portable)
+	1031  APX Series Radio (Mobile)
+	1602  IMPRES Battery Data Reader
 	9001  PowerPad Pocket PC Device
 0cae  Ascom Business Systems, Ltd
 0caf  Buslink
@@ -12559,7 +12947,6 @@
 0cc4  emsys GmbH
 0cc5  Sendo
 0cc6  Intermagic Corp.
-0cc7  Kontron Medical AG
 0cc8  Technotools Corp.
 0cc9  BroadMAX Technologies, Inc.
 0cca  Amphenol
@@ -12594,18 +12981,25 @@
 	0078  Cinergy T XXS
 	0086  Cinergy Hybrid XE
 	008e  Cinergy HTC XS
+	0096  Grabby
 	0097  Cinergy T RC MKII
 	0099  AfaTech 9015 [Cinergy T Stick Dual]
 	00a5  Cinergy Hybrid Stick
 	00a9  RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black]
 	00b3  NOXON DAB/DAB+ Stick
 	00e0  NOXON DAB/DAB+ Stick V2
+	0102  Cinergy S2 Stick
+	0105  Cinergy S2 Box
 	10a7  TerraTec G3
 0cd4  Bang Olufsen
 	0101  BeolinkPC2
 0cd5  LabJack Corporation
 	0003  U3
 	0009  UE9
+0cd6  Scheidt & Bachmann
+	000c  S&B TPU
+	000e  S&B BKV
+	0011  Money Coin Unit
 0cd7  NewChip S.r.l.
 0cd8  JS Digitech, Inc.
 	2007  Smart Card Reader/JSTU-9700
@@ -12658,7 +13052,7 @@
 	6225  SD card reader (UB6225)
 	6230  SD Card Reader (UB623X)
 	6250  SD card reader (UB6250)
-0cf3  Atheros Communications, Inc.
+0cf3  Qualcomm Atheros Communications
 	0001  AR5523
 	0002  AR5523 (no firmware)
 	0003  AR5523
@@ -12674,12 +13068,15 @@
 	3002  AR3011 Bluetooth
 	3004  AR3012 Bluetooth 4.0
 	3005  AR3011 Bluetooth
+	3007  AR3012 Bluetooth 4.0 (no firmware)
 	3008  Bluetooth (AR3011)
+	311f  AR3012 Bluetooth
 	7015  TP-Link TL-WN821N v3 / TL-WN822N v2 802.11n [Atheros AR7010+AR9287]
 	9170  AR9170 802.11n
 	9271  AR9271 802.11n
 	b002  Ubiquiti WiFiStation 802.11n [Atheros AR9271]
 	b003  Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271]
+	e006  Dell Wireless 1802 Bluetooth 4.0 LE
 0cf4  Fomtex Corp.
 0cf5  Cellink Co., Ltd
 0cf6  Compucable Corp.
@@ -12715,6 +13112,7 @@
 	0001  PhotoShuttle
 	0002  Photo Printer 730 series
 	0004  Photo Printer 63xPL/PS
+	000e  P910L
 	0100  Photo Printer 63xPL/PS
 	0102  Photo Printer 64xPS
 	0103  Photo Printer 730 series
@@ -12952,7 +13350,7 @@
 	0300  Avaya Wireless Card
 	1007  Discovery Kids Digital Camera
 0d99  Trazer Technologies, Inc.
-0d9a  RTX Telecom AS
+0d9a  RTX AS
 	0001  Bluetooth Device
 0d9b  Tat Shing Electrical Co.
 0d9c  Chee Chen Hi-Technology Co., Ltd
@@ -13029,6 +13427,7 @@
 0dba  Digidesign
 	1000  Mbox 1 [Mbox]
 	3000  Mbox 2
+	b011  Eleven Rack
 0dbc  A&D Medical
 	0003  AND Serial Cable [AND Smart Cable]
 0dbe  Jiuh Shiuh Precision Industry Co., Ltd
@@ -13038,6 +13437,7 @@
 	021b  USB-2.0 IDE Adapter
 	0300  Storage Adapter
 	0333  Storage Adapter
+	0502  FSC Storagebird XL hard disk
 	0707  ZIV Drive
 0dc0  G7 Solutions (formerly Great Notions)
 0dc1  Tamagawa Seiki Co., Ltd
@@ -13047,7 +13447,7 @@
 	1104  ASEDrive IIIe KB
 	1701  ASEKey
 	1702  ASEKey
-0dc4  Macpower Peripherals, Ltd
+0dc4  inXtron, Inc.
 	0040  Mass Storage Device
 	0041  Mass Storage Device
 	0042  Mass Storage Device
@@ -13154,8 +13554,10 @@
 	005d  WLA-2000 v1.001 WLAN [RTL8191SU]
 	0060  WLA-4000 802.11bgn [Ralink RT3072]
 	0062  WLA-5000 802.11abgn [Ralink RT3572]
+	006f  WLA-5100
 	0072  AX88179 Gigabit Ethernet [Sitecom]
 	061c  LN-028 Network USB 2.0 Adapter
+	214a  IDE/SATA Combo Adapter [CN-330]
 	21f4  44 St Bluetooth Device
 	2200  Sitecom bluetooth2.0 class 2 dongle CN-512
 	2208  Sitecom bluetooth2.0 class 2 dongle CN-520
@@ -13179,6 +13581,7 @@
 0dfa  Toyo Communication Equipment Co., Ltd
 0dfc  GeneralTouch Technology Co., Ltd
 	0001  Touchscreen
+	0101  5-point Touch Screen
 0e03  Nippon Systemware Co., Ltd
 0e08  Winbest Technology Co., Ltd
 0e0b  Amigo Technology Inc.
@@ -13227,11 +13630,8 @@
 0e34  Micro Computer Control Corp.
 0e35  3Pea Technologies, Inc.
 0e36  TiePie engineering
-	0008  Handyscope HS3
-	0009  Handyscope HS3 (br)
-	000a  Handyscope HS4
-	000b  Handyscope HS4 (br)
-	000e  Handyscope HS4-DIFF
+	0009  Handyscope HS3
+	000b  Handyscope HS4
 	000f  Handyscope HS4-DIFF (br)
 	0010  Handyscope HS2
 	0011  TiePieSCOPE HS805 (br)
@@ -13333,8 +13733,10 @@
 	0003  MT6227 phone
 	0004  MT6227 phone
 	0023  S103
+	00a5  GSM modem [Medion Surfstick Model:S4222]
 	1806  Samsung SE-208 Slim Portable DVD Writer
 	1836  Samsung SE-S084 Super WriteMaster Slim External DVD writer
+	1956  Samsung SE-506 Portable BluRay Disc Writer
 	2000  MT65xx Preloader
 	3329  Qstarz BT-Q1000XT
 	763e  MT7630e Bluetooth Adapter
@@ -13453,6 +13855,9 @@
 0f0d  Hori Co., Ltd
 	0011  Real Arcade Pro 3
 0f0e  Energy Full Corp.
+0f0f  Silego Technology Inc
+	0006  GreenPak Universal Dev Board (Active Mode)
+	8006  GreenPak Universal Dev Board (Reset Mode)
 0f11  LD Didactic GmbH
 	1000  CASSY-S
 	1010  Pocket-CASSY
@@ -13472,6 +13877,7 @@
 0f13  Acetek Technology Co., Ltd
 0f14  Ingenico
 	0012  Vital'Act 3S
+	0038  XIRING Smart Card Terminal LEO V2
 0f18  Finger Lakes Instrumentation
 	0002  CCD
 	0006  Focuser
@@ -13613,6 +14019,7 @@
 	8010  Blackberry Playbook (Connect to Windows mode)
 	8011  Blackberry Playbook (Connect to Mac mode)
 	8020  Blackberry Playbook (CD-Rom mode)
+	8037  Blackberry PRIV
 0fce  Sony Ericsson Mobile Communications AB
 	0076  W910i (Multimedia mode)
 	00af  V640i Phone [PTP Camera]
@@ -13626,6 +14033,12 @@
 	0169  Xperia S
 	0172  Xperia P
 	0177  Xperia Ion [Mass Storage]
+	0188  ST26i
+	019c  C6833
+	019e  C6903
+	01a5  SO-04F
+	01a7  D5503
+	01ba  D6603 [Xperia Z3]
 	01bb  D5803 [Xperia Z3 Compact] (MTP mode)
 	0dde  Xperia Mini Pro Bootloader
 	1010  WMC Modem
@@ -13643,6 +14056,7 @@
 	5169  Xperia S [Adb-Enable Mode]
 	5177  Xperia Ion [Debug Mode]
 	518c  C1605 [Xperia E dual] MTD mode
+	51a7  D5503 (Xperia Z1 Compact)
 	614f  Xperia X12 (debug mode)
 	6166  Xperia Mini Pro
 	618c  C1605 [Xperia E dual] MSC mode
@@ -13699,6 +14113,18 @@
 	e166  Xperia Mini Pro
 	e167  XPERIA mini
 	e19b  C2005 [Xperia M dual] (Mass Storage)
+	e1a9  D5303
+	e1aa  D2303
+	e1ad  D5103
+	e1b0  D6708
+	e1b5  D2004
+	e1ba  D6683
+	e1bb  SO-02G
+	e1bc  D2203
+	e1c0  SGP621
+	e1c2  D2533
+	e1c9  E6553
+	e1cf  SGP771
 	f0fa  MN800 / Smartwatch 2 (DFU mode)
 0fcf  Dynastream Innovations, Inc.
 	1003  ANT Development Board
@@ -13731,14 +14157,16 @@
 	0100  Bluetooth Mouse
 	0101  Bluetooth IMU
 	0200  Bluetooth Keypad
+0fe2  Air Techniques
 0fe4  IN-Tech Electronics, Ltd
 0fe5  Greenconn (U.S.A.), Inc.
-0fe6  Kontron (Industrial Computer Source / ICS Advent)
+0fe6  ICS Advent
 	8101  DM9601 Fast Ethernet Adapter
 	811e  Parallel Adapter
 	9700  DM9601 Fast Ethernet Adapter
 0fe9  DVICO
 	4020  TViX M-6500
+	9010  FusionRemote IR receiver
 	db00  FusionHDTV DVB-T (MT352+LgZ201) (uninitialized)
 	db01  FusionHDTV DVB-T (MT352+LgZ201) (initialized)
 	db10  FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized)
@@ -13778,12 +14206,14 @@
 	61f9  Optimus (Various Models) MTP Mode
 	61fc  Optimus 3
 	61fe  Optimus Android Phone [USB tethering mode]
-	6300  G2/Optimus Android Phone
+	627f  G3 (VS985) Android Phone (MTP/Download mode)
+	6300  G2/Optimus Android Phone [Charge mode]
 	631c  G2/Optimus Android Phone [MTP mode]
 	631d  Optimus Android Phone (Camera/PTP Mode)
 	631e  G2/Optimus Android Phone [Camera/PTP mode]
 	631f  Optimus Android Phone (Charge Mode)
-	633e  G2 Android Phone [MTP mode]
+	633a  Ultimate 2 Android Phone L41C
+	633e  G2/G3 Android Phone [MTP/PTP/Download mode]
 	6344  G2 Android Phone [tethering mode]
 	6356  Optimus Android Phone [Virtual CD mode]
 	6800  CDMA Modem
@@ -13910,7 +14340,7 @@
 	0008  Infinity CryptoKey
 	0009  RE-BL PlayStation 3 IR-to-Bluetooth converter
 1050  Yubico.com
-	0010  Yubikey
+	0010  Yubikey (v1 or v2)
 	0110  Yubikey NEO(-N) OTP
 	0111  Yubikey NEO(-N) OTP+CCID
 	0112  Yubikey NEO(-N) CCID
@@ -13919,8 +14349,16 @@
 	0115  Yubikey NEO(-N) U2F+CCID
 	0116  Yubikey NEO(-N) OTP+U2F+CCID
 	0120  Yubikey Touch U2F Security Key
-	0200  U2F Gnubby
+	0200  Gnubby U2F
 	0211  Gnubby
+	0401  Yubikey 4 OTP
+	0402  Yubikey 4 U2F
+	0403  Yubikey 4 OTP+U2F
+	0404  Yubikey 4 CCID
+	0405  Yubikey 4 OTP+CCID
+	0406  Yubikey 4 U2F+CCID
+	0407  Yubikey 4 OTP+U2F+CCID
+	0410  Yubikey plus OTP+U2F
 1053  Immanuel Electronics Co., Ltd
 1054  BMS International Beheer N.V.
 	5004  DSL 7420 Loader
@@ -13948,13 +14386,20 @@
 	0742  My Passport Essential SE (WDBGYS)
 	0748  My Passport (WDBKXH, WDBY8L)
 	07a8  My Passport (WDBBEP), My Passport for Mac (WDBLUZ)
+	07ae  My Passport Edge for Mac (WDBJBH)
+	07ba  PiDrive (WDLB)
 	0810  My Passport Ultra (WDBZFP)
+	0816  My Passport Air (WDBBLW)
 	0820  My Passport Ultra (WDBMWV, WDBZFP)
+	0822  My Passport Ultra (WDBBUZ)
+	0824  My Passport Slim (WDBPDZ)
 	0830  My Passport Ultra (WDBZFP)
+	0837  My Passport Ultra (WDBBKD)
 	0900  MyBook Essential External HDD
 	0901  My Book Essential Edition (Green Ring) (WDG1U)
 	0902  My Book Pro Edition (WDG1T)
 	0903  My Book Premium Edition
+	0905  My Book Pro Edition II (WD10000C033-001)
 	0910  My Book Essential Edition (Green Ring) (WDG1U)
 	1001  Elements Desktop (WDE1U)
 	1003  WD Elements Desktop (WDE1UBK)
@@ -13963,6 +14408,7 @@
 	1023  Elements SE Portable (WDBABV)
 	1042  Elements SE Portable (WDBPCK)
 	1048  Elements Portable (WDBU6Y)
+	1078  Elements Portable (WDBUZG)
 	107c  Elements Desktop (WDBWLG)
 	10a2  Elements SE Portable (WDBPCK)
 	10a8  Elements Portable (WDBUZG)
@@ -13978,7 +14424,11 @@
 	1123  My Book 3.0 (WDBABP)
 	1130  My Book Essential (WDBACW)
 	1140  My Book Essential (WDBACW)
-	1230  My Book (WDBFJK0030HBK)
+	1230  My Book (WDBFJK)
+	1235  My Book (WDBFJK0040HBK)
+	2599  My Passport Ultra (WD40NMZW)
+	259d  My Passport Ultra (WDBBKD)
+	259f  My Passport Ultra (WD10JMVW)
 1059  Giesecke & Devrient GmbH
 	000b  StarSign Bio Token 3.0
 105b  Foxconn International, Inc.
@@ -15306,7 +15756,6 @@
 	0002  HDReye (before firmware loads)
 1519  Comneon
 	0020  HSIC Device
-	0443  Telit LN930
 1520  Bitwire Corp.
 1524  ENE Technology Inc
 	6680  UTS 6680
@@ -16176,6 +16625,7 @@
 	0001  iNexio Touchscreen controller
 1871  Aveo Technology Corp.
 	0101  UVC camera (Bresser microscope)
+	0141  Camera
 	0d01  USB2.0 Camera
 1873  Navilock
 	ee93  EasyLogger
@@ -16203,10 +16653,14 @@
 	0214  Portable Hard Drive
 	0216  External Hard Drive
 	0218  External Hard Drive
+	0224  Store 'n' Go Micro Plus
 	0227  Pocket Hard Drive
 	022b  Portable Hard Drive (Store'n'Go)
-	0237  Portable Harddrive (500 GB)
+	0237  Portable Harddrive
+	0243  Flash Drive (Store'n'Go)
 	0302  Flash Drive
+	0304  Store 'n' Go
+	4123  Store N Go
 18b1  Petalynx
 	0037  Maxter Remote Control
 18b4  e3C Technologies
@@ -16224,6 +16678,10 @@
 18cd  Ecamm
 	cafe  Pico iMage
 18d1  Google Inc.
+	0001  Onda V972 (storage access)
+	0003  Android-powered device using AllWinner Technology SoC
+	0006  Onda V972 MTP
+	0008  Onda V972 PTP (camera)
 	0d02  Celkon A88
 	2d00  Android-powered device in accessory mode
 	2d01  Android-powered device in accessory mode with ADB support
@@ -16234,16 +16692,23 @@
 	4e21  Nexus S
 	4e22  Nexus S (debug)
 	4e24  Nexus S (tether)
+	4e30  Galaxy Nexus (fastboot)
 	4e40  Nexus 7 (fastboot)
 	4e41  Nexus 7 (MTP)
 	4e42  Nexus 7 (debug)
 	4e43  Nexus 7 (PTP)
-	4ee1  Nexus 4 / 10
-	4ee2  Nexus 4 (debug)
-	4ee3  Nexus 4 (tether)
-	4ee4  Nexus 4 (debug + tether)
+	4e44  Nexus 7 2012 (PTP)
+	4ee0  Nexus 4 (bootloader)
+	4ee1  Nexus Device (MTP)
+	4ee2  Nexus Device (debug)
+	4ee3  Nexus 4/5/7/10 (tether)
+	4ee4  Nexus 4/5/7/10 (debug + tether)
+	4ee5  Nexus 4 (PTP)
+	4ee6  Nexus 4/5 (PTP + debug)
 	7102  Toshiba Thrive tablet
 	b004  Pandigital / B&N Novel 9" tablet
+	d001  Nexus 4 (fastboot)
+	d002  Nexus 4 (debug)
 	d109  LG G2x MTP
 	d10a  LG G2x MTP (debug)
 18d5  Starline International Group Limited
@@ -16270,7 +16735,28 @@
 	3188  ARK3188 UVC Webcam
 	3299  Webcam Carrefour
 	3366  Bresser Biolux NV
+18f8  [Maxxter]
+	0f99  Optical gaming mouse
+18fb  Scriptel Corporation
+	01c0  ST1501-STN
+	01c1  ST1526-STN
+	01c2  ST1501-PYJ
+	01c3  ST1501B-PYJ
+	01c4  ST1501-PUN
+	01c5  ST1401-STN
+	01c7  ST1526-PYJ
+	01c8  ST1501-ECA
+	01c9  ST1476-STN
+	01cb  ST1571-STN
+	0200  ST1500
+	0201  ST1550
+	0202  ST1525
+	0204  ST1400
+	0206  ST1475
+	0207  ST1570
 18fd  FineArch Inc.
+1901  GE Healthcare
+	0015  Nemo Tracker
 1908  GEMBIRD
 	1320  PhotoFrame PF-15-1
 190d  Motorola GSG
@@ -16281,6 +16767,8 @@
 	2234  Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886]
 	2235  Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886]
 	2236  Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3]
+191c  Innovative Technology LTD
+	4104  Banknote validator NV-150
 1923  FitLinxx
 	0002  Personal SyncPoint
 1926  NextWindow
@@ -16323,6 +16811,8 @@
 	0602  F71610 or F71612 Consumer Infrared Receiver/Transceiver
 	0702  Integrated Consumer Infrared Receiver/Transceiver
 	5168  F71610A or F71612A Consumer Infrared Receiver/Transceiver
+1938  Meinberg Funkuhren GmbH & Co. KG
+	0501  TCR51USB IRIG Time Code Reader
 1941  Dream Link
 	8021  WH1080 Weather Station / USB Missile Launcher
 1943  Sensoray Co., Inc.
@@ -16611,9 +17101,25 @@
 	0890  Flash Padlock
 	0a00  SP2500 Speakers
 	0a60  Vengeance K60 Keyboard
+	0c04  Link Cooling Node
 	1a01  Flash Voyager GT
+	1a03  Voyager 3.0
+	1a09  Voyager GT 3.0
 	1a0a  Survivor Stealth Flash Drive
+	1a0b  Flash Voyager LS
+	1a15  Voyager Slider Flash Drive
 	1a90  Flash Voyager GT
+	1ab1  Voyager
+	1b04  Raptor K50 Keyboard
+	1b07  Vengeance K65 Gaming Keyboard
+	1b08  Vengeance K95 Keyboard
+	1b09  Vengeance K70R keyboard
+	1b11  K95 RGB Mechanical Gaming Keyboard
+	1b13  Vengeance K70RGB keyboard
+	1c00  Controller for Corsair Link
+	1c0c  RM850i Power Supply
+1b1f  eQ-3 Entwicklung GmbH
+	c00f  HM-CFG-USB/HM-CFG-USB-2 [HomeMatic Configuration adapter]
 1b20  MStar Semiconductor, Inc.
 1b22  WiLinx Corp.
 1b26  Cellex Power Products, Inc.
@@ -16912,9 +17418,236 @@
 	000c  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
 	000e  Ralink RT3070 802.11b/g/n Wireless Lan USB Device
 1d50  OpenMoko, Inc.
-	5119  GTA01/GTA02 U-Boot Bootloader
+	1db5  IDBG (DFU)
+	1db6  IDBG
+	5117  Neo1973/FreeRunner kernel usbnet (g_ether, CDC Ethernet) mode
+	5118  Neo1973/FreeRunner Debug board (V2+)
+	5119  Neo1973/FreeRunner u-boot cdc_acm serial port
+	511a  HXD8 u-boot usbtty CDC ACM Mode
+	511b  SMDK2440 u-boot usbtty CDC ACM mode
+	511c  SMDK2443 u-boot usbtty CDC ACM mode
+	511d  QT2410 u-boot usbtty CDC ACM mode
+	5120  Neo1973/FreeRunner u-boot usbtty generic serial
+	5121  Neo1973/FreeRunner kernel mass storage (g_storage) mode
+	5122  Neo1973/FreeRunner kernel cdc_ether USB network
+	5123  Neo1973/FreeRunner internal USB CSR4 module
+	5124  Neo1973/FreeRunner Bluetooth Device ID service
+	5300  Rockbox
+	6000  Ubertooth Zero
+	6001  Ubertooth Zero (DFU)
+	6002  Ubertooth One
+	6003  Ubertooth One (DFU)
+	6004  LeoLipo
+	6005  LED Flower S
+	6006  LED Cube
+	6007  LED Flower
+	6008  Kisbee 802.15.4 transceiver
+	6009  Adjacent Reality Tracker
+	600a  AVR Programmer
+	600b  Hypna Go Go
+	600c  CatNip LPC1343 development board
+	600d  Enhanced RoboBrrd Brain board
+	600e  OpenRISC Ordb2a-ep4ce22 development board
+	600f  Paparazzi Lisa/M (DFU)
+	6010  OpenPipe: OSHW Bagpipes MIDI controller
+	6011  LeoLipo (DFU)
+	6012  Universal C64 Cartridge
+	6013  DiscFerret magnetic disc analyser (bootloader)
+	6014  DiscFerret magnetic disc analyser
+	6015  Smoothieboard
+	6016  phInterface
+	6017  Black Magic Debug Probe (DFU)
+	6018  Black Magic Debug Probe (Application)
+	6019  4pi 5 axis motion controller
+	601a  Paparazzi Lisa/M
+	601b  IST-2 chronograph for bullet speeds
+	601c  EPOSMote II
+	601e  5x5 STM32 prototyping board
+	601f  uNSF
+	6020  Toad3
+	6021  AlphaSphere
+	6022  LightPack
+	6023  Pixelkit
+	6024  Illucia
+	6025  Keyglove (HID)
+	6027  Key64 Keyboard
+	6028  Teensy 2.0 Development Board [ErgoDox Keyboard]
+	602a  Marlin 2.0 (Mass Storage)
 	602b  FPGALink
+	602c  5nes5snes (5x8)
+	602d  5nes5snes (4x12)
+	602e  Flexibity
+	602f  K-copter
+	6030  USB-oscope
+	6031  Handmade GSM GPS tracker
+	6033  frobiac / adnw keyboard
+	6034  Tiflomag Ergo 2
+	6035  FreeLaserTag Gun
+	6036  FreeLaserTag Big Brother
+	6037  FreeLaserTag Node
+	6038  Monaka
+	6039  eXtreme Feedback Device
+	603a  TiLDA
+	603b  Raspiface
+	603c  Paparazzi (bootloader)
+	603d  Paparazzi (Serial)
+	603e  Paparazzi (Mass Storage)
+	603f  airGuitar
+	6040  moco
+	6041  AlphaSphere (bootloader)
+	6042  Dspace robot controller
+	6043  pc-power
+	6044  open-usb-can (DFU)
+	6045  open-usb-can
+	6046  mimus-weigand
+	6047  RfCat Chronos Dongle
+	6048  RfCat Dons Dongle
+	6049  RfCat Chronos bootloader
+	604a  RfCat Dons bootloader
+	604b  HackRF Jawbreaker Software-Defined Radio
+	604c  Makibox A6
+	604d  Paella Pulse height analyzer
+	604e  Miniscope v2b
+	604f  Miniscope v2c
+	6050  GoodFET
+	6051  pinocc.io
+	6052  APB Team Robotic Development Board
 	6053  Darkgame Controller
+	6054  Satlab/AAUSAT3 BlueBox
+	6056  The Glitch
+	605b  RfCat YARD Stick One
+	605c  YARD Stick One bootloader
+	605d  Funky Sensor v2
+	605e  Blinkiverse Analog LED Fader
+	605f  Small DIP package Cypress FX2
+	6060  Data logger using the Cypress FX2
+	6061  Power Manager
+	6063  CPC FPGA
+	6064  CPC FPGA (DFU)
+	6065  CPC FPGA (Serial)
+	6066  Nuand BladeRF
+	6067  Orbotron 9000 (Serial)
+	6068  Orbotron 9000 (HID)
+	6069  xser (DFU)
+	606a  xser (legacy)
+	606b  S08-245, urJtag compatible firmware for S08JS
+	606c  Blinkytape full-color light tape
+	606d  TinyG open source motion controller
+	606e  Reefangel Evolution 1.0
+	6070  Open Pinball Project
+	6071  The Glitch HID
+	6072  The Glitch Disk
+	6073  The Glitch Serial
+	6074  The Glitch MIDI
+	6075  The Glitch RawHID
+	6076  Vultureprog BIOS chip programmer
+	6077  PaintDuino
+	6078  DTplug
+	607a  Fadecandy
+	607b  RCDongle for IR remote control
+	607c  OpenVizsla USB sniffer/analyzer
+	607d  Spark Core Arduino-compatible board with WiFi
+	607f  Spark Core Arduino-compatible board with WiFi (bootloader)
+	6080  arcin arcade controller
+	6081  BladeRF (bootloader)
+	6082  Facecandy (DFU)
+	6083  LightUp (bootloader)
+	6084  arcin arcade controller (DFU)
+	6085  IRKit for controlloing home electronics from iOS devices
+	6086  OneRNG entropy device
+	6088  picp PIC16F145x based PIC16F145x programmer
+	6089  Great Scott Gadgets HackRF One SDR
+	608a  BLEduino
+	608b  Loctronix ASR-2300 SDR/motion sensing module
+	608c  Fx2lafw
+	608d  Fx2lafw
+	608e  Fx2lafw
+	608f  Fx2lafw
+	6090  Fx2lafw
+	6091  Fx2lafw
+	6092  Fx2lafw
+	6093  Fx2lafw
+	6094  Fx2lafw
+	6095  Fx2lafw
+	6096  LightUp (sketch)
+	6097  Tessel JavaScript enabled Microcontroller with built-in WiFi
+	6098  RFIDler
+	6099  RASDR Radio Astronomy SDR Rx Interface
+	609a  RASDR Radio Astronomy SDR Tx Interface
+	609b  RASDR Radio Astronomy SDR (bootloader)
+	609c  antiAFK keyboard
+	609d  PIC16F145x bootloader
+	609e  Clyde Lamp by Fabule (bootloader)
+	609f  Clyde Lamp by Fabule (sketch)
+	60a0  Smoothiepanel robotic control interface
+	60a1  Airspy
+	60a2  barebox (DFU)
+	60a3  keyboard (bootloader)
+	60a4  Papilio Duo (AVR)
+	60a5  Papilio Duo (FPGA)
+	60a6  HydraBus/HydraNFC (bootloader)
+	60a7  HydraBus/HydraNFC
+	60a8  reserved
+	60a9  Blinky Light Controller (DFU)
+	60aa  Blinky Light Controller
+	60ab  AllPixel
+	60ac  OpenBLT generic microcontroller (bootloader)
+	60b0  Waterott Arduino based Clock (caterina bootloader)
+	60b1  Drinkbot (processing)
+	60b2  Drinkbot (OTG-tablet support)
+	60b3  calc.pw password generator device (standard)
+	60b4  calc.pw password generator device (enhanced)
+	60b5  TimVideos' HDMI2USB (FX2) - Unconfigured device
+	60b6  TimVideos' HDMI2USB (FX2) - Firmware load/upgrade
+	60b7  TimVideos' HDMI2USB (FX2) - HDMI/DVI Capture Device
+	60b8  TimVideos' HDMI2USB (Soft+UTMI) - Unconfigured device
+	60b9  TimVideos' HDMI2USB (Soft+UTMI) - Firmware upgrade
+	60ba  TimVideos' HDMI2USB (Soft+UTMI) - HDMI/DVI Capture Device
+	60bc  Simple CC25xx programmer / serial board
+	60bd  Open Source control interface for multimedia applications
+	60be  Pixelmatix Aurora (bootloader)
+	60bf  Pixelmatix Aurora
+	60c1  BrewBit Model-T pOSHW temperature controller for homebrewers (bootloader)
+	60c2  BrewBit Model-T pOSHW temperature controller for homebrewers
+	60c3  X Antenna Tracker arduino board
+	60c6  USBtrng hardware random number generator
+	60c7  Zubax GNSS positioning module for light UAV systems
+	60c8  Xlink data transfer and control system for Commodore C64
+	60c9  random number generator
+	60ca  FinalKey password manager
+	60cb  PteroDAQ Data Acquisition on FRDM-KL25Z and future boards
+	60cc  LamDiNao
+	60de  Cryptech.is random number generator
+	60df  Numato Opsis HDMI2USB board (unconfigured)
+	60e0  Numato Opsis HDMI2USB board (JTAG Programming Mode)
+	60e1  Numato Opsis HDMI2USB board (User Mode)
+	60e2  Osmocom SIMtrace 2 (DFU)
+	60e3  Osmocom SIMtrace 2
+	60e4  3D printed racing game - (Catalina CDC bootloader)
+	60e5  3D printed racing game
+	60e6  replacement for GoodFET/FaceDancer - GreatFet
+	60e7  replacement for GoodFET/FaceDancer - GreatFet target
+	60e8  Alpen Clack keyboard
+	60e9  keyman64 keyboard itercepter
+	60ea  Wiggleport FPGA-based I/O board
+	60ec  Duet 3D Printer Controller
+	60f0  UDAD-T1 data aquisition device (boot)
+	60f1  UDAD-T1 data aquisition device
+	60f2  UDAD-T2 data aquisition device (boot)
+	60f3  UDAD-T2 data aquisition device
+	60f4  Uniti ARC motor controller
+	60f5  EightByEight Blinky Badge (DFU)
+	60f6  EightByEight Blinky Badge
+	60f7  cardio NFC/RFID card reader (bootloader)
+	60f8  cardio NFC/RFID card reader
+	60fc  OnlyKey Two-factor Authentication and Password Solution
+	6100  overlay64 video overlay module
+	6104  ScopeFun open source instrumentation
+	6108  Myriad-RF LimeSDR
+	610c  Magic Keys (boot)
+	610d  Magic Keys
+	8085  Box0 (box0-v5)
+	cc15  rad1o badge for CCC congress 2015
 1d57  Xenta
 	0005  Wireless Receiver (Keyboard and Mouse)
 	0006  Wireless Receiver (RC Laser Pointer)
@@ -16939,6 +17672,9 @@
 	0200  Qemu Audio Device
 1d90  Citizen
 	201e  PPU-700
+1d9d  Sigma Sport
+	1010  Docking Station Topline 2009
+	1011  Docking Station Topline 2012
 1de1  Actions Microelectronics Co.
 	1101  Generic Display Device (Mass storage mode)
 	c101  Generic Display Device
@@ -17473,6 +18209,8 @@
 	00dc  aes220 FPGA Mini-Module
 2478  Tripp-Lite
 	2008  U209-000-R Serial Port
+248a  Maxxter
+	8366  Wireless Optical Mouse ACT-MUSW-002
 249c  M2Tech s.r.l.
 24e1  Paratronic
 	3001  Adp-usb
@@ -17547,6 +18285,13 @@
 	1042  MPIO FY670
 	1043  HCT HMD-180A
 	1044  HCT HMD-180A
+273f  Hughski Limited
+	1000  ColorHug bootloader
+	1001  ColorHug
+	1002  ColorHug+
+	1003  ColorHug+ Bootloader
+	1004  ColorHug2
+	1005  ColorHug2 bootloader
 2770  NHJ, Ltd
 	0a01  ScanJet 4600 series
 	905c  Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35
@@ -17623,10 +18368,14 @@
 	200b  MX Phone (PTP)
 	200c  MX Phone (PTP & ADB)
 	2012  MX Phone (MTP & ACM)
+2b24  KeepKey LLC
+	0001  Bitcoin hardware wallet
 2c02  Planex Communications
 	14ea  GW-US11H WLAN
 2c1a  Dolphin Peripherals
 	0000  Wireless Optical Mouse
+2dcf  Dialog Semiconductor
+	c952  Audio Class 2.0 Devices
 2fb2  Fujitsu, Ltd
 3125  Eagletron
 	0001  TrackerPod Camera Stand
diff --git a/src/VBox/Main/src-server/win/svcmain.cpp b/src/VBox/Main/src-server/win/svcmain.cpp
index 62d52fe..a5846e2 100644
--- a/src/VBox/Main/src-server/win/svcmain.cpp
+++ b/src/VBox/Main/src-server/win/svcmain.cpp
@@ -40,7 +40,7 @@
 #include <iprt/path.h>
 #include <iprt/getopt.h>
 #include <iprt/message.h>
-#include <iprt\asm.h>
+#include <iprt/asm.h>
 
 class CExeModule : public ATL::CComModule
 {
@@ -152,14 +152,14 @@ HINSTANCE g_hInstance = NULL;
 * Wrapper for Win API function ShutdownBlockReasonCreate
 * This function defined starting from Vista only.
 */
-BOOL ShutdownBlockReasonCreateAPI(HWND hWnd,LPCWSTR pwszReason)
+static BOOL ShutdownBlockReasonCreateAPI(HWND hWnd, LPCWSTR pwszReason)
 {
     BOOL result = FALSE;
     typedef BOOL(WINAPI *PFNSHUTDOWNBLOCKREASONCREATE)(HWND hWnd, LPCWSTR pwszReason);
 
     PFNSHUTDOWNBLOCKREASONCREATE pfn = (PFNSHUTDOWNBLOCKREASONCREATE)GetProcAddress(
             GetModuleHandle(L"User32.dll"), "ShutdownBlockReasonCreate");
-    _ASSERTE(pfn);
+    AssertPtr(pfn);
     if (pfn)
         result = pfn(hWnd, pwszReason);
     return result;
@@ -169,21 +169,20 @@ BOOL ShutdownBlockReasonCreateAPI(HWND hWnd,LPCWSTR pwszReason)
 * Wrapper for Win API function ShutdownBlockReasonDestroy
 * This function defined starting from Vista only.
 */
-BOOL ShutdownBlockReasonDestroyAPI(HWND hWnd)
+static BOOL ShutdownBlockReasonDestroyAPI(HWND hWnd)
 {
     BOOL result = FALSE;
     typedef BOOL(WINAPI *PFNSHUTDOWNBLOCKREASONDESTROY)(HWND hWnd);
 
     PFNSHUTDOWNBLOCKREASONDESTROY pfn = (PFNSHUTDOWNBLOCKREASONDESTROY)GetProcAddress(
         GetModuleHandle(L"User32.dll"), "ShutdownBlockReasonDestroy");
-    _ASSERTE(pfn);
+    AssertPtr(pfn);
     if (pfn)
         result = pfn(hWnd);
     return result;
 }
 
-
-LRESULT CALLBACK WinMainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+static LRESULT CALLBACK WinMainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
 {
     LRESULT rc = 0;
     switch (msg)
@@ -231,11 +230,10 @@ LRESULT CALLBACK WinMainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
     return rc;
 }
 
-
-int CreateMainWindow()
+static int CreateMainWindow()
 {
     int rc = VINF_SUCCESS;
-    _ASSERTE(g_hMainWindow == NULL);
+    Assert(g_hMainWindow == NULL);
 
     LogFlow(("CreateMainWindow\n"));
 
@@ -283,9 +281,9 @@ int CreateMainWindow()
 }
 
 
-void DestroyMainWindow()
+static void DestroyMainWindow()
 {
-    _ASSERTE(g_hMainWindow != NULL);
+    Assert(g_hMainWindow != NULL);
     Log(("SVCMain: DestroyMainWindow \n"));
     if (g_hMainWindow != NULL)
     {
@@ -337,9 +335,6 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpC
      */
     RTR3InitExe(argc, &argv, 0);
 
-
-    /* Note that all options are given lowercase/camel case/uppercase to
-     * approximate case insensitive matching, which RTGetOpt doesn't offer. */
     static const RTGETOPTDEF s_aOptions[] =
     {
         { "--embedding",    'e',    RTGETOPT_REQ_NOTHING | RTGETOPT_FLAG_ICASE },
@@ -506,7 +501,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpC
 
     int nRet = 0;
     HRESULT hRes = com::Initialize(false /*fGui*/, fRun /*fAutoRegUpdate*/);
-    _ASSERTE(SUCCEEDED(hRes));
+    AssertLogRelMsg(SUCCEEDED(hRes), ("SVCMAIN: init failed: %Rhrc\n", hRes));
 
     g_pModule = new CExeModule();
     if(g_pModule == NULL)
diff --git a/src/VBox/Runtime/Makefile.kmk b/src/VBox/Runtime/Makefile.kmk
index 3b91918..c52fef7 100644
--- a/src/VBox/Runtime/Makefile.kmk
+++ b/src/VBox/Runtime/Makefile.kmk
@@ -537,6 +537,7 @@ RuntimeR3_SOURCES       = \
 	common/string/RTStrPrintHexBytes.cpp \
 	common/string/RTStrStartsWith.cpp \
 	common/string/RTStrIStartsWith.cpp \
+	common/string/RTStrICmpAscii.cpp \
 	common/string/RTStrStr.cpp \
 	common/string/RTUtf16Copy.cpp \
 	common/string/RTUtf16CopyAscii.cpp \
@@ -635,6 +636,7 @@ RuntimeR3_SOURCES       = \
 	generic/RTPathGetCurrentDrive-generic.cpp \
 	generic/RTPathIsSame-generic.cpp \
 	generic/RTTimerLRCreate-generic.cpp \
+	generic/rtStrFormatKernelAddress-generic.cpp \
 	generic/mempool-generic.cpp \
 	generic/semfastmutex-generic.cpp \
 	generic/semxroads-generic.cpp \
@@ -1879,6 +1881,8 @@ RuntimeR0_SOURCES      := \
 	common/string/RTStrCopyEx.cpp \
 	common/string/RTStrCopyP.cpp \
 	common/string/RTStrCopyPEx.cpp \
+	common/string/RTStrCmp.cpp \
+	common/string/RTStrICmpAscii.cpp \
 	common/string/RTStrNLen.cpp \
 	common/string/RTStrNLenEx.cpp \
 	common/table/avlgcptr.cpp \
@@ -1988,13 +1992,10 @@ RuntimeR0Drv_TEMPLATE   = VBoxR0DrvLib
 RuntimeR0Drv_SDKS.win   = ReorderCompilerIncs $(VBOX_WINDDK) $(VBOX_WINPSDK)INCS VBOX_OPENSSL
 RuntimeR0Drv_DEFS       = IN_RT_R0 RT_WITH_VBOX RT_WITHOUT_NOCRT_WRAPPERS RT_NO_EXPORT_SYMBOL NOFILEID
 RuntimeR0Drv_DEFS.win   = IN_SUP_R0 LDR_ONLY_PE
-RuntimeR0Drv_DEFS.linux = MODULE KBUILD_MODNAME=KBUILD_STR\(vboxdrv\) KBUILD_BASENAME=KBUILD_STR\(vboxdrv\) IN_SUP_R0
 
 RuntimeR0Drv_INCS      := $(PATH_SUB_CURRENT) include
 RuntimeR0Drv_INCS.freebsd = \
 	$(PATH_STAGE)/gen-sys-hdrs
-RuntimeR0Drv_INCS.linux = \
-	r0drv/linux
 RuntimeR0Drv_INCS.solaris = \
 	r0drv/solaris/vbi/i86pc \
 	r0drv/solaris/vbi/i86pc/sys
@@ -2062,9 +2063,11 @@ RuntimeR0Drv_SOURCES    = \
 	common/string/RTStrCopyEx.cpp \
 	common/string/RTStrCopyP.cpp \
 	common/string/RTStrCopyPEx.cpp \
+	common/string/RTStrICmpAscii.cpp \
 	common/string/RTStrNCmp.cpp \
 	common/string/RTStrNLen.cpp \
 	common/string/RTStrNLenEx.cpp \
+	common/string/RTUtf16ICmpAscii.cpp \
 	common/string/straprintf.cpp \
 	common/string/strformat.cpp \
 	common/string/strformatnum.cpp \
@@ -2093,6 +2096,7 @@ RuntimeR0Drv_SOURCES    = \
  	generic/RTSemEventWaitNoResume-2-ex-generic.cpp \
  	generic/RTSemEventMultiWait-2-ex-generic.cpp \
  	generic/RTSemEventMultiWaitNoResume-2-ex-generic.cpp \
+	generic/rtStrFormatKernelAddress-generic.cpp \
 	generic/critsect-generic.cpp \
 	generic/errvars-generic.cpp \
 	generic/uuid-generic.cpp \
@@ -2591,8 +2595,10 @@ ifdef VBOX_WITH_RAW_MODE
  	common/string/strncmp.cpp \
  	common/string/strpbrk.cpp \
  	common/string/strprintf.cpp \
+	common/string/RTStrCmp.cpp \
  	common/string/RTStrCopy.cpp \
  	common/string/RTStrCopyEx.cpp \
+	common/string/RTStrICmpAscii.cpp \
  	common/table/avllu32.cpp \
  	common/table/avlou32.cpp \
  	common/table/avlogcphys.cpp \
@@ -2608,6 +2614,7 @@ ifdef VBOX_WITH_RAW_MODE
  	common/time/timesup.cpp \
  	gc/initterm-gc.cpp \
  	generic/RTAssertShouldPanic-generic.cpp \
+	generic/rtStrFormatKernelAddress-generic.cpp \
 	generic/errvars-generic.cpp \
  	\
  	$(RuntimeNoCrt_SOURCES)
diff --git a/src/VBox/Runtime/common/crypto/x509-core.cpp b/src/VBox/Runtime/common/crypto/x509-core.cpp
index 4ef1956..c699980 100644
--- a/src/VBox/Runtime/common/crypto/x509-core.cpp
+++ b/src/VBox/Runtime/common/crypto/x509-core.cpp
@@ -690,7 +690,7 @@ RTDECL(bool) RTCrX509Name_ConstraintMatch(PCRTCRX509NAME pConstraint, PCRTCRX509
 /**
  * Mapping between X.500 object IDs and short and long names.
  *
- * See RFC-1327, ...
+ * See RFC-1327, RFC-4519 ...
  */
 static struct
 {
@@ -702,17 +702,30 @@ static struct
 {
     {   "0.9.2342.19200300.100.1.3",  RT_STR_TUPLE("Mail"),                 "Rfc822Mailbox" },
     {   "0.9.2342.19200300.100.1.25", RT_STR_TUPLE("DC"),                   "DomainComponent" },
-    {   "1.2.840.113549.1.9.1",       RT_STR_TUPLE("Email"),                "EmailAddress" },
+    {   "1.2.840.113549.1.9.1",       RT_STR_TUPLE("Email") /*nonstandard*/,"EmailAddress" },
     {   "2.5.4.3",                    RT_STR_TUPLE("CN"),                   "CommonName" },
-    {   "2.5.4.4",                    RT_STR_TUPLE("S"),                    "Surname" },
+    {   "2.5.4.4",                    RT_STR_TUPLE("SN"),                   "Surname" },
+    {   "2.5.4.5",                    RT_STR_TUPLE("SRN") /*nonstandard*/,  "SerialNumber" },
     {   "2.5.4.6",                    RT_STR_TUPLE("C"),                    "CountryName" },
     {   "2.5.4.7",                    RT_STR_TUPLE("L"),                    "LocalityName" },
-    {   "2.5.4.8",                    RT_STR_TUPLE("ST"),                   "StatOrProviceName" },
+    {   "2.5.4.8",                    RT_STR_TUPLE("ST"),                   "StateOrProviceName" },
+    {   "2.5.4.9",                    RT_STR_TUPLE("street"),               "Street" },
     {   "2.5.4.10",                   RT_STR_TUPLE("O"),                    "OrganizationName" },
-    {   "2.5.4.11",                   RT_STR_TUPLE("OU"),                   "OrganizationUnitName" },
-    {   "2.5.4.42",                   RT_STR_TUPLE("G"),                    "GivenName" },
-    {   "2.5.4.43",                   RT_STR_TUPLE("I"),                    "Initials" },
-    {   "2.5.4.44",                   RT_STR_TUPLE("GQ"),                   "GenerationQualifier" },
+    {   "2.5.4.11",                   RT_STR_TUPLE("OU"),                   "OrganizationalUnitName" },
+    {   "2.5.4.12",                   RT_STR_TUPLE("title"),                "Title" },
+    {   "2.5.4.13",                   RT_STR_TUPLE("desc"),                 "Description" },
+    {   "2.5.4.15",                   RT_STR_TUPLE("BC") /*nonstandard*/,   "BusinessCategory" },
+    {   "2.5.4.17",                   RT_STR_TUPLE("ZIP") /*nonstandard*/,  "PostalCode" },
+    {   "2.5.4.18",                   RT_STR_TUPLE("POBox") /*nonstandard*/,"PostOfficeBox" },
+    {   "2.5.4.20",                   RT_STR_TUPLE("PN") /*nonstandard*/,   "TelephoneNumber" },
+    {   "2.5.4.33",                   RT_STR_TUPLE("RO") /*nonstandard*/,   "RoleOccupant" },
+    {   "2.5.4.34",                   RT_STR_TUPLE("SA") /*nonstandard*/,   "StreetAddress" },
+    {   "2.5.4.41",                   RT_STR_TUPLE("N") /*nonstandard*/,    "Name" },
+    {   "2.5.4.42",                   RT_STR_TUPLE("GN"),                   "GivenName" },
+    {   "2.5.4.43",                   RT_STR_TUPLE("I") /*nonstandard*/,    "Initials" },
+    {   "2.5.4.44",                   RT_STR_TUPLE("GQ") /*nonstandard*/,   "GenerationQualifier" },
+    {   "2.5.4.46",                   RT_STR_TUPLE("DNQ") /*nonstandard*/,  "DNQualifier" },
+    {   "2.5.4.51",                   RT_STR_TUPLE("HID") /*nonstandard*/,  "HouseIdentifier" },
 };
 
 
diff --git a/src/VBox/Runtime/common/ldr/ldrEx.cpp b/src/VBox/Runtime/common/ldr/ldrEx.cpp
index 2e58781..d72166c 100644
--- a/src/VBox/Runtime/common/ldr/ldrEx.cpp
+++ b/src/VBox/Runtime/common/ldr/ldrEx.cpp
@@ -639,6 +639,9 @@ RTDECL(int) RTLdrQueryPropEx(RTLDRMOD hLdrMod, RTLDRPROP enmProp, void *pvBits,
             *pcbRet = sizeof(uint64_t);
             AssertReturn(cbBuf == sizeof(uint32_t) || cbBuf == sizeof(uint64_t), VERR_INVALID_PARAMETER);
             break;
+        case RTLDRPROP_INTERNAL_NAME:
+            *pcbRet = 0;
+            break;
 
         default:
             AssertFailedReturn(VERR_INVALID_FUNCTION);
diff --git a/src/VBox/Runtime/common/ldr/ldrPE.cpp b/src/VBox/Runtime/common/ldr/ldrPE.cpp
index 0a32bd5..adb1e0f 100644
--- a/src/VBox/Runtime/common/ldr/ldrPE.cpp
+++ b/src/VBox/Runtime/common/ldr/ldrPE.cpp
@@ -1802,6 +1802,74 @@ static int rtLdrPE_CountImports(PRTLDRMODPE pThis, void const *pvBits)
     return rc;
 }
 
+/**
+ * Worker for rtLdrPE_QueryImportModule and rtLdrPE_QueryInternalName that
+ * copies a zero termianted string at the given RVA into the RTLdrQueryPropEx
+ * output buffer.
+ *
+ * @returns IPRT status code. If VERR_BUFFER_OVERFLOW, pcbBuf is required size.
+ * @param   pThis           The PE module instance.
+ * @param   pvBits          Image bits if the caller had them available, NULL if
+ *                          not. Saves a couple of file accesses.
+ * @param   uRvaString      The RVA of the string to copy.
+ * @param   cbMaxString     The max string length.
+ * @param   pvBuf           The output buffer.
+ * @param   cbBuf           The buffer size.
+ * @param   pcbRet          Where to return the number of bytes we've returned
+ *                          (or in case of VERR_BUFFER_OVERFLOW would have).
+ */
+static int rtLdrPE_QueryNameAtRva(PRTLDRMODPE pThis, void const *pvBits, uint32_t uRvaString, uint32_t cbMaxString,
+                                  void *pvBuf, size_t cbBuf, size_t *pcbRet)
+{
+    int rc;
+    if (   uRvaString >= pThis->cbHeaders
+        && uRvaString < pThis->cbImage)
+    {
+        /*
+         * Limit the string.
+         */
+        uint32_t cbMax = pThis->cbImage - uRvaString;
+        if (cbMax > cbMaxString)
+            cbMax = cbMaxString;
+        char *pszString;
+        rc = rtldrPEReadPartByRva(pThis, pvBits, uRvaString, cbMax, (void const **)&pszString);
+        if (RT_SUCCESS(rc))
+        {
+            /*
+             * Make sure it's null terminated and valid UTF-8 encoding.
+             *
+             * Which encoding this really is isn't defined, I think,
+             * but we need to make sure we don't get bogus UTF-8 into
+             * the process, so making sure it's valid UTF-8 is a good
+             * as anything else since it covers ASCII.
+             */
+            size_t cchString = RTStrNLen(pszString, cbMaxString);
+            if (cchString < cbMaxString)
+            {
+                rc = RTStrValidateEncodingEx(pszString, cchString, 0 /*fFlags*/);
+                if (RT_SUCCESS(rc))
+                {
+                    /*
+                     * Copy out the result and we're done.
+                     * (We have to do all the cleanup code though, so no return success here.)
+                     */
+                    *pcbRet = cchString + 1;
+                    if (cbBuf >= cchString + 1)
+                        memcpy(pvBuf, pszString, cchString + 1);
+                    else
+                        rc = VERR_BUFFER_OVERFLOW;
+                }
+            }
+            else
+                rc = VERR_BAD_EXE_FORMAT;
+            rtldrPEFreePart(pThis, pvBits, pszString);
+        }
+    }
+    else
+        rc = VERR_BAD_EXE_FORMAT;
+    return rc;
+}
+
 
 /**
  * Worker for rtLdrPE_QueryProp that retrievs the name of an import DLL.
@@ -1840,56 +1908,13 @@ static int rtLdrPE_QueryImportModule(PRTLDRMODPE pThis, void const *pvBits, uint
 
         /*
          * Retrieve the import table descriptor.
+         * Using 1024 as the max name length (should be more than enough).
          */
         PCIMAGE_IMPORT_DESCRIPTOR pImpDesc;
         rc = rtldrPEReadPartByRva(pThis, pvBits, offEntry, sizeof(*pImpDesc), (void const **)&pImpDesc);
         if (RT_SUCCESS(rc))
         {
-            if (   pImpDesc->Name >= pThis->cbHeaders
-                && pImpDesc->Name < pThis->cbImage)
-            {
-                /*
-                 * Limit the name to 1024 bytes (more than enough for everyone).
-                 */
-                uint32_t cchNameMax = pThis->cbImage - pImpDesc->Name;
-                if (cchNameMax > 1024)
-                    cchNameMax = 1024;
-                char *pszName;
-                rc = rtldrPEReadPartByRva(pThis, pvBits, pImpDesc->Name, cchNameMax, (void const **)&pszName);
-                if (RT_SUCCESS(rc))
-                {
-                    /*
-                     * Make sure it's null terminated and valid UTF-8 encoding.
-                     *
-                     * Which encoding this really is isn't defined, I think,
-                     * but we need to make sure we don't get bogus UTF-8 into
-                     * the process, so making sure it's valid UTF-8 is a good
-                     * as anything else since it covers ASCII.
-                     */
-                    size_t cchName = RTStrNLen(pszName, cchNameMax);
-                    if (cchName < cchNameMax)
-                    {
-                        rc = RTStrValidateEncodingEx(pszName, cchName, 0 /*fFlags*/);
-                        if (RT_SUCCESS(rc))
-                        {
-                            /*
-                             * Copy out the result and we're done.
-                             * (We have to do all the cleanup code though, so no return success here.)
-                             */
-                            *pcbRet = cchName + 1;
-                            if (cbBuf >= cchName + 1)
-                                memcpy(pvBuf, pszName, cchName + 1);
-                            else
-                                rc = VERR_BUFFER_OVERFLOW;
-                        }
-                    }
-                    else
-                        rc = VERR_BAD_EXE_FORMAT;
-                    rtldrPEFreePart(pThis, pvBits, pszName);
-                }
-            }
-            else
-                rc = VERR_BAD_EXE_FORMAT;
+            rc = rtLdrPE_QueryNameAtRva(pThis, pvBits, pImpDesc->Name, 1024 /*cchMaxString*/, pvBuf, cbBuf, pcbRet);
             rtldrPEFreePart(pThis, pvBits, pImpDesc);
         }
     }
@@ -1904,6 +1929,38 @@ static int rtLdrPE_QueryImportModule(PRTLDRMODPE pThis, void const *pvBits, uint
 }
 
 
+/**
+ * Worker for rtLdrPE_QueryProp that retrievs the internal module name.
+ *
+ * @returns IPRT status code. If VERR_BUFFER_OVERFLOW, pcbBuf is required size.
+ * @param   pThis           The PE module instance.
+ * @param   pvBits          Image bits if the caller had them available, NULL if
+ *                          not. Saves a couple of file accesses.
+ * @param   pvBuf           The output buffer.
+ * @param   cbBuf           The buffer size.
+ * @param   pcbRet          Where to return the number of bytes we've returned
+ *                          (or in case of VERR_BUFFER_OVERFLOW would have).
+ */
+static int rtLdrPE_QueryInternalName(PRTLDRMODPE pThis, void const *pvBits, void *pvBuf, size_t cbBuf, size_t *pcbRet)
+{
+    *pcbRet = 0;
+
+    if (   pThis->ExportDir.Size < sizeof(IMAGE_EXPORT_DIRECTORY)
+        || pThis->ExportDir.VirtualAddress == 0)
+        return VERR_NOT_FOUND;
+
+    PCIMAGE_EXPORT_DIRECTORY pExpDir;
+    int rc = rtldrPEReadPartByRva(pThis, pvBits, pThis->ExportDir.VirtualAddress, sizeof(*pExpDir), (void const **)&pExpDir);
+    if (RT_SUCCESS(rc))
+    {
+        rc = rtLdrPE_QueryNameAtRva(pThis, pvBits, pExpDir->Name, 1024 /*cchMaxString*/, pvBuf, cbBuf, pcbRet);
+        rtldrPEFreePart(pThis, pvBits, pExpDir);
+    }
+
+    return rc;
+}
+
+
 /** @interface_method_impl{RTLDROPS,pfnQueryProp} */
 static DECLCALLBACK(int) rtldrPE_QueryProp(PRTLDRMODINTERNAL pMod, RTLDRPROP enmProp, void const *pvBits,
                                            void *pvBuf, size_t cbBuf, size_t *pcbRet)
@@ -1971,6 +2028,9 @@ static DECLCALLBACK(int) rtldrPE_QueryProp(PRTLDRMODINTERNAL pMod, RTLDRPROP enm
                 *(uint64_t *)pvBuf = pModPe->offNtHdrs;
             return VINF_SUCCESS;
 
+        case RTLDRPROP_INTERNAL_NAME:
+            return rtLdrPE_QueryInternalName(pModPe, pvBits, pvBuf, cbBuf, pcbRet);
+
         default:
             return VERR_NOT_FOUND;
     }
diff --git a/src/VBox/Runtime/common/ldr/ldrkStuff.cpp b/src/VBox/Runtime/common/ldr/ldrkStuff.cpp
index 96d4e5d..d3f8c47 100644
--- a/src/VBox/Runtime/common/ldr/ldrkStuff.cpp
+++ b/src/VBox/Runtime/common/ldr/ldrkStuff.cpp
@@ -844,6 +844,7 @@ static DECLCALLBACK(int) rtkldr_QueryProp(PRTLDRMODINTERNAL pMod, RTLDRPROP enmP
 {
     PRTLDRMODKLDR pThis = (PRTLDRMODKLDR)pMod;
     int           rc;
+    size_t const  cbBufAvail = cbBuf;
     switch (enmProp)
     {
         case RTLDRPROP_UUID:
@@ -854,6 +855,19 @@ static DECLCALLBACK(int) rtkldr_QueryProp(PRTLDRMODINTERNAL pMod, RTLDRPROP enmP
             cbBuf = RT_MIN(cbBuf, sizeof(RTUUID));
             break;
 
+        case RTLDRPROP_INTERNAL_NAME:
+            if (!pThis->pMod->cchName)
+                return VERR_NOT_FOUND;
+            cbBuf = pThis->pMod->cchName + 1;
+            if (cbBufAvail < cbBuf)
+            {
+                if (pcbRet)
+                    *pcbRet = cbBufAvail;
+                return VERR_BUFFER_OVERFLOW;
+            }
+            memcpy(pvBuf, pThis->pMod->pszName, cbBuf);
+            break;
+
         default:
             return VERR_NOT_FOUND;
     }
diff --git a/src/VBox/Runtime/common/table/table.cpp b/src/VBox/Runtime/common/string/RTStrICmpAscii.cpp
similarity index 53%
copy from src/VBox/Runtime/common/table/table.cpp
copy to src/VBox/Runtime/common/string/RTStrICmpAscii.cpp
index af1b52a..aef9449 100644
--- a/src/VBox/Runtime/common/table/table.cpp
+++ b/src/VBox/Runtime/common/string/RTStrICmpAscii.cpp
@@ -1,10 +1,10 @@
-/* $Id: table.cpp $ */
+/* $Id: RTStrICmpAscii.cpp $ */
 /** @file
- * IPRT - AVL tree, RTHCPHYS, unique keys.
+ * IPRT - RTUtf16ICmpAscii.
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2010-2016 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -24,13 +24,55 @@
  * terms and conditions of either the GPL or the CDDL or both.
  */
 
-#ifndef NOFILEID
-static const char szFileId[] = "Id: kAVLULInt.c,v 1.4 2003/02/13 02:02:38 bird Exp $";
-#endif
-
 
 /*********************************************************************************************************************************
 *   Header Files                                                                                                                 *
 *********************************************************************************************************************************/
-#include <iprt/table.h>
+#include <iprt/string.h>
+#include "internal/iprt.h"
+
+#include <iprt/assert.h>
+#include <iprt/ctype.h>
+
+
+RTDECL(int) RTStrICmpAscii(const char *psz1, const char *psz2)
+{
+    if (psz1 == psz2)
+        return 0;
+    if (!psz1)
+        return -1;
+    if (!psz2)
+        return 1;
+
+    for (;;)
+    {
+        RTUNICP uc1;
+        int rc = RTStrGetCpEx(&psz1, &uc1);
+        if (RT_SUCCESS(rc))
+        {
+            unsigned char uch2 = *psz2++; Assert(uch2 < 0x80);
+
+            /* compare */
+            int iDiff = uc1 - uch2;
+            if (iDiff)
+            {
+                if (uc1 >= 0x80)
+                    return 1;
+
+                iDiff = RT_C_TO_LOWER(uc1) - RT_C_TO_LOWER(uch2); /* Return lower cased diff! */
+                if (iDiff)
+                    return iDiff;
+            }
+
+            if (uch2)
+            { /* likely */ }
+            else
+                return 0;
+        }
+        /* Hit some bad encoding, continue in case sensitive mode. */
+        else
+            return RTStrCmp(psz1 - 1, psz2);
+    }
+}
+RT_EXPORT_SYMBOL(RTStrICmpAscii);
 
diff --git a/src/VBox/Runtime/common/string/strformatrt.cpp b/src/VBox/Runtime/common/string/strformatrt.cpp
index 51a5f16..9837c1c 100644
--- a/src/VBox/Runtime/common/string/strformatrt.cpp
+++ b/src/VBox/Runtime/common/string/strformatrt.cpp
@@ -251,6 +251,7 @@ DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, co
             case 'I':
             case 'X':
             case 'U':
+            case 'K':
             {
                 /*
                  * Interpret the type.
@@ -304,6 +305,7 @@ DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, co
                     { STRMEM("I32"),     sizeof(int32_t),        10, RTSF_INT,   RTSTR_F_VALSIGNED },
                     { STRMEM("I64"),     sizeof(int64_t),        10, RTSF_INT,   RTSTR_F_VALSIGNED },
                     { STRMEM("I8"),      sizeof(int8_t),         10, RTSF_INT,   RTSTR_F_VALSIGNED },
+                    { STRMEM("Kv"),      sizeof(RTHCPTR),        16, RTSF_INT,   RTSTR_F_OBFUSCATE_PTR },
                     { STRMEM("Rv"),      sizeof(RTRCPTR),        16, RTSF_INTW,  0 },
                     { STRMEM("Tbool"),   sizeof(bool),           10, RTSF_BOOL,  0 },
                     { STRMEM("Tfile"),   sizeof(RTFILE),         10, RTSF_INT,   0 },
@@ -362,6 +364,7 @@ DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, co
                     int16_t             i16;
                     int32_t             i32;
                     int64_t             i64;
+                    RTR0INTPTR          uR0Ptr;
                     RTFAR16             fp16;
                     RTFAR32             fp32;
                     RTFAR64             fp64;
@@ -469,6 +472,17 @@ DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, co
                     }
                 }
 
+#ifndef DEBUG
+                /*
+                 * For now don't show the address.
+                 */
+                if (fFlags & RTSTR_F_OBFUSCATE_PTR)
+                {
+                    cch = rtStrFormatKernelAddress(szBuf, sizeof(szBuf), u.uR0Ptr, cchWidth, cchPrecision, fFlags);
+                    return pfnOutput(pvArgOutput, szBuf, cch);
+                }
+#endif
+
                 /*
                  * Format the output.
                  */
diff --git a/src/VBox/Runtime/common/table/avl_Base.cpp.h b/src/VBox/Runtime/common/table/avl_Base.cpp.h
index 3fc89cb..5ed5e9d 100644
--- a/src/VBox/Runtime/common/table/avl_Base.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_Base.cpp.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2012 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avl_Destroy.cpp.h b/src/VBox/Runtime/common/table/avl_Destroy.cpp.h
index 5ae2521..ba42216 100644
--- a/src/VBox/Runtime/common/table/avl_Destroy.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_Destroy.cpp.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avl_DoWithAll.cpp.h b/src/VBox/Runtime/common/table/avl_DoWithAll.cpp.h
index fad8e72..199a0bc 100644
--- a/src/VBox/Runtime/common/table/avl_DoWithAll.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_DoWithAll.cpp.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avl_Get.cpp.h b/src/VBox/Runtime/common/table/avl_Get.cpp.h
index 9b24592..77d0b5b 100644
--- a/src/VBox/Runtime/common/table/avl_Get.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_Get.cpp.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 1999-2012 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avl_GetBestFit.cpp.h b/src/VBox/Runtime/common/table/avl_GetBestFit.cpp.h
index ad21749..f383804 100644
--- a/src/VBox/Runtime/common/table/avl_GetBestFit.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_GetBestFit.cpp.h
@@ -6,7 +6,7 @@
  */
 
 /*
- * Copyright (C) 1999-2012 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avl_Range.cpp.h b/src/VBox/Runtime/common/table/avl_Range.cpp.h
index be4de7b..c16b368 100644
--- a/src/VBox/Runtime/common/table/avl_Range.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_Range.cpp.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avl_RemoveBestFit.cpp.h b/src/VBox/Runtime/common/table/avl_RemoveBestFit.cpp.h
index 45f9bc3..7416855 100644
--- a/src/VBox/Runtime/common/table/avl_RemoveBestFit.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_RemoveBestFit.cpp.h
@@ -6,7 +6,7 @@
  */
 
 /*
- * Copyright (C) 1999-2011 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avl_RemoveNode.cpp.h b/src/VBox/Runtime/common/table/avl_RemoveNode.cpp.h
index ce87aa3..2594b20 100644
--- a/src/VBox/Runtime/common/table/avl_RemoveNode.cpp.h
+++ b/src/VBox/Runtime/common/table/avl_RemoveNode.cpp.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2012 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlgcphys.cpp b/src/VBox/Runtime/common/table/avlgcphys.cpp
index 04eec90..590f750 100644
--- a/src/VBox/Runtime/common/table/avlgcphys.cpp
+++ b/src/VBox/Runtime/common/table/avlgcphys.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlgcptr.cpp b/src/VBox/Runtime/common/table/avlgcptr.cpp
index 7ca154e..2a85c2f 100644
--- a/src/VBox/Runtime/common/table/avlgcptr.cpp
+++ b/src/VBox/Runtime/common/table/avlgcptr.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlhcphys.cpp b/src/VBox/Runtime/common/table/avlhcphys.cpp
index c1d0215..d3e5ff7 100644
--- a/src/VBox/Runtime/common/table/avlhcphys.cpp
+++ b/src/VBox/Runtime/common/table/avlhcphys.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avllu32.cpp b/src/VBox/Runtime/common/table/avllu32.cpp
index 1952b3c..b0906a9 100644
--- a/src/VBox/Runtime/common/table/avllu32.cpp
+++ b/src/VBox/Runtime/common/table/avllu32.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2012 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlogcphys.cpp b/src/VBox/Runtime/common/table/avlogcphys.cpp
index aae3e7c..278a8fc 100644
--- a/src/VBox/Runtime/common/table/avlogcphys.cpp
+++ b/src/VBox/Runtime/common/table/avlogcphys.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlogcptr.cpp b/src/VBox/Runtime/common/table/avlogcptr.cpp
index 441273f..8a5368e 100644
--- a/src/VBox/Runtime/common/table/avlogcptr.cpp
+++ b/src/VBox/Runtime/common/table/avlogcptr.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlohcphys.cpp b/src/VBox/Runtime/common/table/avlohcphys.cpp
index 81402a9..2e0179a 100644
--- a/src/VBox/Runtime/common/table/avlohcphys.cpp
+++ b/src/VBox/Runtime/common/table/avlohcphys.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avloioport.cpp b/src/VBox/Runtime/common/table/avloioport.cpp
index cd0a282..b80814e 100644
--- a/src/VBox/Runtime/common/table/avloioport.cpp
+++ b/src/VBox/Runtime/common/table/avloioport.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlou32.cpp b/src/VBox/Runtime/common/table/avlou32.cpp
index f86bedd..0b74815 100644
--- a/src/VBox/Runtime/common/table/avlou32.cpp
+++ b/src/VBox/Runtime/common/table/avlou32.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlpv.cpp b/src/VBox/Runtime/common/table/avlpv.cpp
index 612617f..1aea277 100644
--- a/src/VBox/Runtime/common/table/avlpv.cpp
+++ b/src/VBox/Runtime/common/table/avlpv.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlrfoff.cpp b/src/VBox/Runtime/common/table/avlrfoff.cpp
index d941a37..4a60f23 100644
--- a/src/VBox/Runtime/common/table/avlrfoff.cpp
+++ b/src/VBox/Runtime/common/table/avlrfoff.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlrgcptr.cpp b/src/VBox/Runtime/common/table/avlrgcptr.cpp
index 9b3eb0d..54b5884 100644
--- a/src/VBox/Runtime/common/table/avlrgcptr.cpp
+++ b/src/VBox/Runtime/common/table/avlrgcptr.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlrogcphys.cpp b/src/VBox/Runtime/common/table/avlrogcphys.cpp
index c4e1c6e..3278588 100644
--- a/src/VBox/Runtime/common/table/avlrogcphys.cpp
+++ b/src/VBox/Runtime/common/table/avlrogcphys.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlrogcptr.cpp b/src/VBox/Runtime/common/table/avlrogcptr.cpp
index c5a6443..fc781ea 100644
--- a/src/VBox/Runtime/common/table/avlrogcptr.cpp
+++ b/src/VBox/Runtime/common/table/avlrogcptr.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlroioport.cpp b/src/VBox/Runtime/common/table/avlroioport.cpp
index d7a2b3b..6242b09 100644
--- a/src/VBox/Runtime/common/table/avlroioport.cpp
+++ b/src/VBox/Runtime/common/table/avlroioport.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlroogcptr.cpp b/src/VBox/Runtime/common/table/avlroogcptr.cpp
index c90781c..9bfa838 100644
--- a/src/VBox/Runtime/common/table/avlroogcptr.cpp
+++ b/src/VBox/Runtime/common/table/avlroogcptr.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlrpv.cpp b/src/VBox/Runtime/common/table/avlrpv.cpp
index a0e24a2..3518cc5 100644
--- a/src/VBox/Runtime/common/table/avlrpv.cpp
+++ b/src/VBox/Runtime/common/table/avlrpv.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlru64.cpp b/src/VBox/Runtime/common/table/avlru64.cpp
index 7a19de9..eab04a5 100644
--- a/src/VBox/Runtime/common/table/avlru64.cpp
+++ b/src/VBox/Runtime/common/table/avlru64.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlruintptr.cpp b/src/VBox/Runtime/common/table/avlruintptr.cpp
index 8e99d59..433dafe 100644
--- a/src/VBox/Runtime/common/table/avlruintptr.cpp
+++ b/src/VBox/Runtime/common/table/avlruintptr.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlu32.cpp b/src/VBox/Runtime/common/table/avlu32.cpp
index 2a223d0..a5fddaa 100644
--- a/src/VBox/Runtime/common/table/avlu32.cpp
+++ b/src/VBox/Runtime/common/table/avlu32.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avluintptr.cpp b/src/VBox/Runtime/common/table/avluintptr.cpp
index 82ca9e6..2e7cecd 100644
--- a/src/VBox/Runtime/common/table/avluintptr.cpp
+++ b/src/VBox/Runtime/common/table/avluintptr.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/avlul.cpp b/src/VBox/Runtime/common/table/avlul.cpp
index fc0b43a..03f6500 100644
--- a/src/VBox/Runtime/common/table/avlul.cpp
+++ b/src/VBox/Runtime/common/table/avlul.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
diff --git a/src/VBox/Runtime/common/table/table.cpp b/src/VBox/Runtime/common/table/table.cpp
index af1b52a..52e3586 100644
--- a/src/VBox/Runtime/common/table/table.cpp
+++ b/src/VBox/Runtime/common/table/table.cpp
@@ -1,10 +1,10 @@
 /* $Id: table.cpp $ */
 /** @file
- * IPRT - AVL tree, RTHCPHYS, unique keys.
+ * IPRT - Generic Tables/Containers, just a thought so far.
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -24,10 +24,6 @@
  * terms and conditions of either the GPL or the CDDL or both.
  */
 
-#ifndef NOFILEID
-static const char szFileId[] = "Id: kAVLULInt.c,v 1.4 2003/02/13 02:02:38 bird Exp $";
-#endif
-
 
 /*********************************************************************************************************************************
 *   Header Files                                                                                                                 *
diff --git a/src/VBox/Runtime/common/table/table.cpp b/src/VBox/Runtime/generic/rtStrFormatKernelAddress-generic.cpp
similarity index 51%
copy from src/VBox/Runtime/common/table/table.cpp
copy to src/VBox/Runtime/generic/rtStrFormatKernelAddress-generic.cpp
index af1b52a..481d325 100644
--- a/src/VBox/Runtime/common/table/table.cpp
+++ b/src/VBox/Runtime/generic/rtStrFormatKernelAddress-generic.cpp
@@ -1,10 +1,10 @@
-/* $Id: table.cpp $ */
+/* $Id: rtStrFormatKernelAddress-generic.cpp $ */
 /** @file
- * IPRT - AVL tree, RTHCPHYS, unique keys.
+ * IPRT - IPRT String Formatter, ring-0 addresses.
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -24,13 +24,51 @@
  * terms and conditions of either the GPL or the CDDL or both.
  */
 
-#ifndef NOFILEID
-static const char szFileId[] = "Id: kAVLULInt.c,v 1.4 2003/02/13 02:02:38 bird Exp $";
-#endif
-
 
 /*********************************************************************************************************************************
 *   Header Files                                                                                                                 *
 *********************************************************************************************************************************/
-#include <iprt/table.h>
+#define LOG_GROUP RTLOGGROUP_STRING
+#include <iprt/string.h>
+#include "internal/iprt.h"
+
+#include <iprt/assert.h>
+#include <iprt/string.h>
+
+#include "internal/string.h"
+
+
+
+DECLHIDDEN(size_t) rtStrFormatKernelAddress(char *pszBuf, size_t cbBuf, RTR0INTPTR uPtr, signed int cchWidth,
+                                            signed int cchPrecision, unsigned int fFlags)
+{
+#ifndef DEBUG
+    RT_NOREF(uPtr, cchWidth, cchPrecision);
+# if R0_ARCH_BITS == 64
+    static const char s_szObfuscated[] = "0xXXXXXXXXXXXXXXXX";
+# else
+    static const char s_szObfuscated[] = "0xXXXXXXXX";
+# endif
+    size_t      cbSrc  = sizeof(s_szObfuscated);
+    const char *pszSrc = s_szObfuscated;
+    if (!(fFlags & RTSTR_F_SPECIAL))
+    {
+        pszSrc += 2;
+        cbSrc  -= 2;
+    }
+    if (cbSrc <= cbBuf)
+    {
+        memcpy(pszBuf, pszSrc, cbSrc);
+        return cbSrc - 1;
+    }
+    AssertFailed();
+    memcpy(pszBuf, pszSrc, cbBuf);
+    pszBuf[cbBuf - 1] = '\0';
+    return cbBuf - 1;
+
+#else  /* DEBUG */
+    Assert(cbBuf >= 64);
+    return RTStrFormatNumber(pszBuf, uPtr, 16, cchWidth, cchPrecision, fFlags);
+#endif /* DEBUG */
+}
 
diff --git a/src/VBox/Runtime/include/internal/string.h b/src/VBox/Runtime/include/internal/string.h
index 799d104..933a5d4 100644
--- a/src/VBox/Runtime/include/internal/string.h
+++ b/src/VBox/Runtime/include/internal/string.h
@@ -52,6 +52,20 @@ DECLHIDDEN(size_t) rtstrFormatRt(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, co
 DECLHIDDEN(size_t) rtstrFormatType(PFNRTSTROUTPUT pfnOutput, void *pvArgOutput, const char **ppszFormat, va_list *pArgs,
                                    int cchWidth, int cchPrecision, unsigned fFlags, char chArgSize);
 
+/**
+ * Format kernel address into @a pszBuf.
+ *
+ * @returns Number of bytes returned.
+ * @param   pszBuf          The return buffer.
+ * @param   cbBuf           The buffer size.
+ * @param   uPtr            The ring-0 pointer value.
+ * @param   cchWidth        The specified width, -1 if not given.
+ * @param   cchPrecision    The specified precision.
+ * @param   fFlags          Format flags, RTSTR_F_XXX.
+ */
+DECLHIDDEN(size_t) rtStrFormatKernelAddress(char *pszBuf, size_t cbBuf, RTR0INTPTR uPtr, signed int cchWidth,
+                                            signed int cchPrecision, unsigned int fFlags);
+
 #ifdef RT_WITH_ICONV_CACHE
 DECLHIDDEN(void) rtStrIconvCacheInit(struct RTTHREADINT *pThread);
 DECLHIDDEN(void) rtStrIconvCacheDestroy(struct RTTHREADINT *pThread);
diff --git a/src/VBox/Runtime/common/table/table.cpp b/src/VBox/Runtime/r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.c
similarity index 57%
copy from src/VBox/Runtime/common/table/table.cpp
copy to src/VBox/Runtime/r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.c
index af1b52a..1cac65b 100644
--- a/src/VBox/Runtime/common/table/table.cpp
+++ b/src/VBox/Runtime/r0drv/linux/rtStrFormatKernelAddress-r0drv-linux.c
@@ -1,10 +1,10 @@
-/* $Id: table.cpp $ */
+/* $Id: rtStrFormatKernelAddress-r0drv-linux.c $ */
 /** @file
- * IPRT - AVL tree, RTHCPHYS, unique keys.
+ * IPRT - IPRT String Formatter, ring-0 addresses.
  */
 
 /*
- * Copyright (C) 2001-2010 knut st. osmundsen (bird-src-spam at anduin.net)
+ * Copyright (C) 2006-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
  * available from http://www.virtualbox.org. This file is free software;
@@ -24,13 +24,33 @@
  * terms and conditions of either the GPL or the CDDL or both.
  */
 
-#ifndef NOFILEID
-static const char szFileId[] = "Id: kAVLULInt.c,v 1.4 2003/02/13 02:02:38 bird Exp $";
-#endif
-
 
 /*********************************************************************************************************************************
 *   Header Files                                                                                                                 *
 *********************************************************************************************************************************/
-#include <iprt/table.h>
+#define LOG_GROUP RTLOGGROUP_STRING
+#include "the-linux-kernel.h"
+#include "internal/iprt.h"
+
+#include <iprt/assert.h>
+#include <iprt/string.h>
 
+#include "internal/string.h"
+
+
+DECLHIDDEN(size_t) rtStrFormatKernelAddress(char *pszBuf, size_t cbBuf, RTR0INTPTR uPtr, signed int cchWidth,
+                                            signed int cchPrecision, unsigned int fFlags)
+{
+#if !defined(DEBUG) && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
+    RT_NOREF(cchWidth, cchPrecision);
+    /* use the Linux kernel function which is able to handle "%pK" */
+    static const char s_szFmt[] = "0x%pK";
+    const char *pszFmt = s_szFmt;
+    if (!(fFlags & RTSTR_F_SPECIAL))
+        pszFmt += 2;
+    return scnprintf(pszBuf, cbBuf, pszFmt, uPtr);
+#else
+    Assert(cbBuf >= 64);
+    return RTStrFormatNumber(pszBuf, uPtr, 16, cchWidth, cchPrecision, fFlags);
+#endif
+}
diff --git a/src/VBox/Runtime/r3/win/init-win.cpp b/src/VBox/Runtime/r3/win/init-win.cpp
index 4fed218..bec550b 100644
--- a/src/VBox/Runtime/r3/win/init-win.cpp
+++ b/src/VBox/Runtime/r3/win/init-win.cpp
@@ -173,7 +173,7 @@ static RTWINOSTYPE rtR3InitWinSimplifiedVersion(OSVERSIONINFOEXW const *pOSInfoE
                  && dwMinorVersion == 3)
         {
             if (bProductType != VER_NT_WORKSTATION)
-               enmVer = kRTWinOSType_2012R2;
+                enmVer = kRTWinOSType_2012R2;
             else
                 enmVer = kRTWinOSType_81;
         }
diff --git a/src/VBox/Runtime/testcase/tstLdr-4.cpp b/src/VBox/Runtime/testcase/tstLdr-4.cpp
index 846c1c3..cd224fe 100644
--- a/src/VBox/Runtime/testcase/tstLdr-4.cpp
+++ b/src/VBox/Runtime/testcase/tstLdr-4.cpp
@@ -206,10 +206,25 @@ static int testLdrOne(const char *pszFilename)
                 RTPrintf("tstLdr-4: load #%d Test1 -> %#x\n", i, rc);
                 cErrors++;
             }
+
+            /* While we're here, check a couple of RTLdrQueryProp calls too */
+            void *pvBits = aLoads[i].pvBits;
+            for (unsigned iBits = 0; iBits < 2; iBits++, pvBits = NULL)
+            {
+                union
+                {
+                    char szName[127];
+                } uBuf;
+                rc = RTLdrQueryPropEx(aLoads[i].hLdrMod, RTLDRPROP_INTERNAL_NAME, aLoads[i].pvBits,
+                                      uBuf.szName, sizeof(uBuf.szName), NULL);
+                if (RT_SUCCESS(rc))
+                    RTPrintf("tstLdr-4: internal name #%d: '%s'\n", i, uBuf.szName);
+                else if (rc != VERR_NOT_FOUND && rc != VERR_NOT_SUPPORTED)
+                    RTPrintf("tstLdr-4: internal name #%d failed: %Rrc\n", i, rc);
+            }
         }
     }
 
-
     /*
      * Clean up.
      */
diff --git a/src/VBox/Runtime/testcase/tstUtf8.cpp b/src/VBox/Runtime/testcase/tstUtf8.cpp
index d3af54a..3c28ee1 100644
--- a/src/VBox/Runtime/testcase/tstUtf8.cpp
+++ b/src/VBox/Runtime/testcase/tstUtf8.cpp
@@ -741,6 +741,25 @@ void TstRTStrXCmp(RTTEST hTest)
     CHECK_DIFF(RTStrICmp("AbCdEG", "aBcDef"), > ); /* diff performed on the lower case cp. */
 
 
+    RTTestSub(hTest, "RTStrICmpAscii");
+    CHECK_DIFF(RTStrICmpAscii(NULL, NULL), == );
+    CHECK_DIFF(RTStrICmpAscii(NULL, ""), < );
+    CHECK_DIFF(RTStrICmpAscii("", NULL), > );
+    CHECK_DIFF(RTStrICmpAscii("", ""), == );
+    CHECK_DIFF(RTStrICmpAscii("abcdef", "abcdef"), == );
+    CHECK_DIFF(RTStrICmpAscii("abcdef", "abcde"), > );
+    CHECK_DIFF(RTStrICmpAscii("abcde", "abcdef"), < );
+    CHECK_DIFF(RTStrICmpAscii("abcdeg", "abcdef"), > );
+    CHECK_DIFF(RTStrICmpAscii("abcdef", "abcdeg"), < );
+
+    CHECK_DIFF(RTStrICmpAscii("abcdeF", "abcdef"), ==);
+    CHECK_DIFF(RTStrICmpAscii("abcdef", "abcdeF"), ==);
+    CHECK_DIFF(RTStrICmpAscii("ABCDEF", "abcdef"), ==);
+    CHECK_DIFF(RTStrICmpAscii("abcdef", "ABCDEF"), ==);
+    CHECK_DIFF(RTStrICmpAscii("AbCdEf", "aBcDeF"), ==);
+    CHECK_DIFF(RTStrICmpAscii("AbCdEg", "aBcDeF"), > );
+    CHECK_DIFF(RTStrICmpAscii("AbCdEG", "aBcDef"), > ); /* diff performed on the lower case cp. */
+
 
     RTTestSub(hTest, "RTStrNICmp");
     CHECK_DIFF(RTStrNICmp(NULL, NULL, RTSTR_MAX), == );
diff --git a/src/VBox/Runtime/win/RTErrConvertFromWin32.cpp b/src/VBox/Runtime/win/RTErrConvertFromWin32.cpp
index c49559d..c8ed995 100644
--- a/src/VBox/Runtime/win/RTErrConvertFromWin32.cpp
+++ b/src/VBox/Runtime/win/RTErrConvertFromWin32.cpp
@@ -426,6 +426,11 @@ RTR3DECL(int)  RTErrConvertFromWin32(unsigned uNativeCode)
         case ERROR_NOT_A_REPARSE_POINT: return VERR_NOT_SYMLINK;
 
         case NTE_BAD_ALGID:         return VERR_CR_PKIX_UNKNOWN_DIGEST_TYPE;
+
+#ifndef STATUS_ELEVATION_REQUIRED
+# define STATUS_ELEVATION_REQUIRED 0xc000042c
+#endif
+        case STATUS_ELEVATION_REQUIRED: return VERR_PRIVILEGE_NOT_HELD;
     }
 
     /* unknown error. */
diff --git a/src/VBox/Storage/DMG.cpp b/src/VBox/Storage/DMG.cpp
index 403fd94..36b79ed 100644
--- a/src/VBox/Storage/DMG.cpp
+++ b/src/VBox/Storage/DMG.cpp
@@ -1769,7 +1769,8 @@ static DECLCALLBACK(int) dmgCheckIfValid(const char *pszFilename, PVDINTERFACE p
         rc = vdIfIoIntFileGetSize(pIfIo, pStorage, &cbFile);
     else
         rc = RTVfsFileGetSize(hDmgFileInXar, &cbFile);
-    if (RT_SUCCESS(rc))
+    if (   RT_SUCCESS(rc)
+        && cbFile >= sizeof(DMGUDIF))
     {
         DMGUDIF  Ftr;
         uint64_t offFtr = cbFile - sizeof(Ftr);
@@ -1801,6 +1802,8 @@ static DECLCALLBACK(int) dmgCheckIfValid(const char *pszFilename, PVDINTERFACE p
             else
                 rc = VERR_VD_DMG_INVALID_HEADER;
         }
+        else
+            rc = VERR_VD_DMG_INVALID_HEADER;
     }
     else
         rc = VERR_VD_DMG_INVALID_HEADER;
diff --git a/src/VBox/VMM/VMMAll/IEMAll.cpp b/src/VBox/VMM/VMMAll/IEMAll.cpp
index 988f2a6..b8d1e37 100644
--- a/src/VBox/VMM/VMMAll/IEMAll.cpp
+++ b/src/VBox/VMM/VMMAll/IEMAll.cpp
@@ -10668,6 +10668,8 @@ IEM_STATIC VBOXSTRICTRC iemMemMarkSelDescAccessed(PVMCPU pVCpu, uint16_t uSel)
     do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0] = (a_u64Value); \
          IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[1] = 0; \
     } while (0)
+#define IEM_MC_STORE_XREG_U32(a_iXReg, a_u32Value) \
+    do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au32[0] = (a_u32Value); } while (0)
 #define IEM_MC_STORE_XREG_U32_ZX_U128(a_iXReg, a_u32Value) \
     do { IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[0] = (uint32_t)(a_u32Value); \
          IEM_GET_CTX(pVCpu)->CTX_SUFF(pXState)->x87.aXMM[(a_iXReg)].au64[1] = 0; \
diff --git a/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h b/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
index dbcd827..1aec818 100644
--- a/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
+++ b/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
@@ -1616,6 +1616,48 @@ FNIEMOP_DEF(iemOp_movups_Wps_Vps__movupd_Wpd_Vpd__movss_Wss_Vss__movsd_Vsd_Wsd)
             IEM_MC_END();
         }
     }
+    else if (fRelevantPrefix == IEM_OP_PRF_REPZ /*0xf3*/)
+    {
+        IEMOP_MNEMONIC("movss Wss,Vss");
+        uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
+        if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT))
+        {
+            /*
+             * Register, register.
+             */
+            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
+            IEM_MC_BEGIN(0, 1);
+            IEM_MC_LOCAL(uint32_t,                  uSrc);
+
+            IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
+            IEM_MC_ACTUALIZE_SSE_STATE_FOR_CHANGE();
+            IEM_MC_FETCH_XREG_U32(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);
+            IEM_MC_STORE_XREG_U32((bRm & X86_MODRM_RM_MASK) | pVCpu->iem.s.uRexB, uSrc);
+
+            IEM_MC_ADVANCE_RIP();
+            IEM_MC_END();
+        }
+        else
+        {
+            /*
+             * Memory, register.
+             */
+            IEM_MC_BEGIN(0, 2);
+            IEM_MC_LOCAL(uint32_t,                  uSrc);
+            IEM_MC_LOCAL(RTGCPTR,                   GCPtrEffSrc);
+
+            IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0);
+            IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
+            IEM_MC_MAYBE_RAISE_SSE_RELATED_XCPT();
+            IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ();
+
+            IEM_MC_FETCH_XREG_U32(uSrc, ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK) | pVCpu->iem.s.uRexReg);
+            IEM_MC_STORE_MEM_U32(pVCpu->iem.s.iEffSeg, GCPtrEffSrc, uSrc);
+
+            IEM_MC_ADVANCE_RIP();
+            IEM_MC_END();
+        }
+    }
     else
     {
         IEMOP_BITCH_ABOUT_STUB();
diff --git a/src/VBox/VMM/VMMR0/GMMR0.cpp b/src/VBox/VMM/VMMR0/GMMR0.cpp
index 5c72aca..0ea42a1 100644
--- a/src/VBox/VMM/VMMR0/GMMR0.cpp
+++ b/src/VBox/VMM/VMMR0/GMMR0.cpp
@@ -914,13 +914,13 @@ static DECLCALLBACK(int) gmmR0TermDestroyChunk(PAVLU32NODECORE pNode, void *pvGM
     PGMMCHUNK pChunk = (PGMMCHUNK)pNode;
 
     if (pChunk->cFree != (GMM_CHUNK_SIZE >> PAGE_SHIFT))
-        SUPR0Printf("GMMR0Term: %p/%#x: cFree=%d cPrivate=%d cShared=%d cMappings=%d\n", pChunk,
+        SUPR0Printf("GMMR0Term: %RKv/%#x: cFree=%d cPrivate=%d cShared=%d cMappings=%d\n", pChunk,
                     pChunk->Core.Key, pChunk->cFree, pChunk->cPrivate, pChunk->cShared, pChunk->cMappingsX);
 
     int rc = RTR0MemObjFree(pChunk->hMemObj, true /* fFreeMappings */);
     if (RT_FAILURE(rc))
     {
-        SUPR0Printf("GMMR0Term: %p/%#x: RTRMemObjFree(%p,true) -> %d (cMappings=%d)\n", pChunk,
+        SUPR0Printf("GMMR0Term: %RKv/%#x: RTRMemObjFree(%RKv,true) -> %d (cMappings=%d)\n", pChunk,
                     pChunk->Core.Key, pChunk->hMemObj, rc, pChunk->cMappingsX);
         AssertRC(rc);
     }
@@ -1458,7 +1458,7 @@ static bool gmmR0CleanupVMScanChunk(PGMM pGMM, PGVM pGVM, PGMMCHUNK pChunk)
                         ||  pChunk->cPrivate != cPrivate
                         ||  pChunk->cShared != cShared))
         {
-            SUPR0Printf("gmmR0CleanupVMScanChunk: Chunk %p/%#x has bogus stats - free=%d/%d private=%d/%d shared=%d/%d\n",
+            SUPR0Printf("gmmR0CleanupVMScanChunk: Chunk %RKv/%#x has bogus stats - free=%d/%d private=%d/%d shared=%d/%d\n",
                         pChunk, pChunk->Core.Key, pChunk->cFree, cFree, pChunk->cPrivate, cPrivate, pChunk->cShared, cShared);
             pChunk->cFree = cFree;
             pChunk->cPrivate = cPrivate;
@@ -1476,7 +1476,7 @@ static bool gmmR0CleanupVMScanChunk(PGMM pGMM, PGVM pGVM, PGMMCHUNK pChunk)
             pChunk->hGVM = NIL_GVM_HANDLE;
         else if (pChunk->cFree != GMM_CHUNK_NUM_PAGES)
         {
-            SUPR0Printf("gmmR0CleanupVMScanChunk: %p/%#x: cFree=%#x - it should be 0 in bound mode!\n",
+            SUPR0Printf("gmmR0CleanupVMScanChunk: %RKv/%#x: cFree=%#x - it should be 0 in bound mode!\n",
                         pChunk, pChunk->Core.Key, pChunk->cFree);
             AssertMsgFailed(("%p/%#x: cFree=%#x - it should be 0 in bound mode!\n", pChunk, pChunk->Core.Key, pChunk->cFree));
 
@@ -1510,7 +1510,7 @@ static bool gmmR0CleanupVMScanChunk(PGMM pGMM, PGVM pGVM, PGMMCHUNK pChunk)
             int rc = RTR0MemObjFree(hMemObj, false /* fFreeMappings (NA) */);
             if (RT_FAILURE(rc))
             {
-                SUPR0Printf("gmmR0CleanupVMScanChunk: %p/%#x: mapping #%x: RTRMemObjFree(%p,false) -> %d \n",
+                SUPR0Printf("gmmR0CleanupVMScanChunk: %RKv/%#x: mapping #%x: RTRMemObjFree(%RKv,false) -> %d \n",
                             pChunk, pChunk->Core.Key, i, hMemObj, rc);
                 AssertRC(rc);
             }
diff --git a/src/VBox/VMM/VMMR0/GVMMR0.cpp b/src/VBox/VMM/VMMR0/GVMMR0.cpp
index c3daa4a..9260993 100644
--- a/src/VBox/VMM/VMMR0/GVMMR0.cpp
+++ b/src/VBox/VMM/VMMR0/GVMMR0.cpp
@@ -526,7 +526,7 @@ GVMMR0DECL(void) GVMMR0Term(void)
     g_pGVMM = NULL;
     if (RT_UNLIKELY(!VALID_PTR(pGVMM)))
     {
-        SUPR0Printf("GVMMR0Term: pGVMM=%p\n", pGVMM);
+        SUPR0Printf("GVMMR0Term: pGVMM=%RKv\n", pGVMM);
         return;
     }
 
@@ -1204,7 +1204,7 @@ GVMMR0DECL(int) GVMMR0DestroyVM(PVM pVM)
     }
     else
     {
-        SUPR0Printf("GVMMR0DestroyVM: pHandle=%p:{.pVM=%p, .hEMT0=%p, .ProcId=%u, .pvObj=%p} pVM=%p hSelf=%p\n",
+        SUPR0Printf("GVMMR0DestroyVM: pHandle=%RKv:{.pVM=%p, .hEMT0=%p, .ProcId=%u, .pvObj=%p} pVM=%p hSelf=%p\n",
                     pHandle, pHandle->pVM, pHandle->hEMT0, pHandle->ProcId, pHandle->pvObj, pVM, hSelf);
         gvmmR0CreateDestroyUnlock(pGVMM);
         rc = VERR_GVMM_IPE_2;
diff --git a/src/VBox/VMM/VMMR3/PDMUsb.cpp b/src/VBox/VMM/VMMR3/PDMUsb.cpp
index c09e8f2..bb87d4f 100644
--- a/src/VBox/VMM/VMMR3/PDMUsb.cpp
+++ b/src/VBox/VMM/VMMR3/PDMUsb.cpp
@@ -683,7 +683,7 @@ static int pdmR3UsbCreateDevice(PVM pVM, PPDMUSBHUB pHub, PPDMUSB pUsbDev, int i
     {
         AssertMsgFailed(("Failed to construct '%s'/%d! %Rra\n", pUsbIns->pReg->szName, pUsbIns->iInstance, rc));
         if (rc == VERR_VERSION_MISMATCH)
-            rc = VERR_PDM_DRIVER_VERSION_MISMATCH;
+            rc = VERR_PDM_USBDEV_VERSION_MISMATCH;
     }
     if (fAtRuntime)
         pdmR3UsbDestroyDevice(pVM, pUsbIns);
diff --git a/src/VBox/VMM/VMMR3/VMEmt.cpp b/src/VBox/VMM/VMMR3/VMEmt.cpp
index a13ee36..424b0ca 100644
--- a/src/VBox/VMM/VMMR3/VMEmt.cpp
+++ b/src/VBox/VMM/VMMR3/VMEmt.cpp
@@ -96,10 +96,12 @@ int vmR3EmulationThreadWithId(RTTHREAD hThreadSelf, PUVMCPU pUVCpu, VMCPUID idCp
     for (;;)
     {
         /*
-         * During early init there is no pVM, so make a special path
+         * During early init there is no pVM and/or pVCpu, so make a special path
          * for that to keep things clearly separate.
          */
-        if (!pUVM->pVM)
+        PVM    pVM   = pUVM->pVM;
+        PVMCPU pVCpu = pUVCpu->pVCpu;
+        if (!pVCpu || !pVM)
         {
             /*
              * Check for termination first.
@@ -153,8 +155,6 @@ int vmR3EmulationThreadWithId(RTTHREAD hThreadSelf, PUVMCPU pUVCpu, VMCPUID idCp
              * We check for state changes in addition to status codes when
              * servicing requests. (Look after the ifs.)
              */
-            PVM    pVM   = pUVM->pVM;
-            PVMCPU pVCpu = pUVCpu->pVCpu;
             enmBefore = pVM->enmVMState;
             if (pUVM->vm.s.fTerminateEMT)
             {
@@ -227,16 +227,18 @@ int vmR3EmulationThreadWithId(RTTHREAD hThreadSelf, PUVMCPU pUVCpu, VMCPUID idCp
          * or start the VM, in that case we'll get a change in VM status
          * indicating that we're now running.
          */
-        if (    RT_SUCCESS(rc)
-            &&  pUVM->pVM)
+        if (RT_SUCCESS(rc))
         {
-            PVM     pVM   = pUVM->pVM;
-            PVMCPU  pVCpu = &pVM->aCpus[idCpu];
-            if (    pVM->enmVMState == VMSTATE_RUNNING
-                &&  VMCPUSTATE_IS_STARTED(VMCPU_GET_STATE(pVCpu)))
+            pVM = pUVM->pVM;
+            if (pVM)
             {
-                rc = EMR3ExecuteVM(pVM, pVCpu);
-                Log(("vmR3EmulationThread: EMR3ExecuteVM() -> rc=%Rrc, enmVMState=%d\n", rc, pVM->enmVMState));
+                pVCpu = &pVM->aCpus[idCpu];
+                if (   pVM->enmVMState == VMSTATE_RUNNING
+                    && VMCPUSTATE_IS_STARTED(VMCPU_GET_STATE(pVCpu)))
+                {
+                    rc = EMR3ExecuteVM(pVM, pVCpu);
+                    Log(("vmR3EmulationThread: EMR3ExecuteVM() -> rc=%Rrc, enmVMState=%d\n", rc, pVM->enmVMState));
+                }
             }
         }
 
diff --git a/src/VBox/VMM/VMMR3/VMMSwitcher.cpp b/src/VBox/VMM/VMMR3/VMMSwitcher.cpp
index 63e4d34..88ac9a1 100644
--- a/src/VBox/VMM/VMMR3/VMMSwitcher.cpp
+++ b/src/VBox/VMM/VMMR3/VMMSwitcher.cpp
@@ -286,7 +286,7 @@ int vmmR3SwitcherInit(PVM pVM)
             }
             while (i-- > 0)
             {
-                LogRel(("VMM: Core code alloc attempt #%d: pvR3=%p pvR0=%p HCPhys=%RHp\n",
+                LogRel(("VMM: Core code alloc attempt #%d: pvR3=%p pvR0=%RKv HCPhys=%RHp\n",
                         i, paBadTries[i].pvR3, paBadTries[i].pvR0, paBadTries[i].HCPhys));
                 SUPR3ContFree(paBadTries[i].pvR3, paBadTries[i].cb >> PAGE_SHIFT);
             }
@@ -324,7 +324,7 @@ int vmmR3SwitcherInit(PVM pVM)
         {
             pVM->vmm.s.pvCoreCodeRC = GCPtr;
             MMR3HyperReserve(pVM, PAGE_SIZE, "fence", NULL);
-            LogRel(("VMM: CoreCode: R3=%RHv R0=%RHv RC=%RRv Phys=%RHp cb=%#x\n",
+            LogRel(("VMM: CoreCode: R3=%RHv R0=%RKv RC=%RRv Phys=%RHp cb=%#x\n",
                     pVM->vmm.s.pvCoreCodeR3, pVM->vmm.s.pvCoreCodeR0, pVM->vmm.s.pvCoreCodeRC, pVM->vmm.s.HCPhysCoreCode, pVM->vmm.s.cbCoreCode));
 
             /*
diff --git a/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp b/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp
index 4f1f89b..44202ae 100644
--- a/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp
+++ b/src/VBox/VMM/VMMRZ/PGMRZDynMap.cpp
@@ -1520,7 +1520,7 @@ DECLINLINE(uint32_t) pgmR0DynMapPage(PPGMRZDYNMAP pThis, RTHCPHYS HCPhys, int32_
         ASMAtomicDecS32(&paPages[iPage].cRefs);
         PGMRZDYNMAP_SPINLOCK_RELEASE(pThis);
         *ppvPage = NULL;
-        AssertLogRelMsgFailedReturn(("cRefs=%d iPage=%p HCPhys=%RHp\n", cRefs, iPage, HCPhys), UINT32_MAX);
+        AssertLogRelMsgFailedReturn(("cRefs=%d iPage=%u HCPhys=%RHp\n", cRefs, iPage, HCPhys), UINT32_MAX);
     }
     void *pvPage = paPages[iPage].pvPage;
 
diff --git a/src/VBox/VMM/testcase/tstIEMCheckMc.cpp b/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
index 1a3902b..e317af0 100644
--- a/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
+++ b/src/VBox/VMM/testcase/tstIEMCheckMc.cpp
@@ -488,6 +488,7 @@ IEMOPMEDIAF2 g_iemAImpl_pcmpeqd;
 #define IEM_MC_STORE_XREG_U128(a_iXReg, a_u128Value)        do { CHK_TYPE(uint128_t, a_u128Value); (void)fSseWrite; } while (0)
 #define IEM_MC_STORE_XREG_U64(a_iXReg, a_u64Value)          do { CHK_TYPE(uint64_t,  a_u64Value);  (void)fSseWrite; } while (0)
 #define IEM_MC_STORE_XREG_U64_ZX_U128(a_iXReg, a_u64Value)  do { CHK_TYPE(uint64_t,  a_u64Value);  (void)fSseWrite; } while (0)
+#define IEM_MC_STORE_XREG_U32(a_iXReg, a_u32Value)          do { CHK_TYPE(uint32_t,  a_u32Value);  (void)fSseWrite; } while (0)
 #define IEM_MC_STORE_XREG_U32_ZX_U128(a_iXReg, a_u32Value)  do { CHK_TYPE(uint32_t,  a_u32Value);  (void)fSseWrite; } while (0)
 #define IEM_MC_REF_XREG_U128(a_pu128Dst, a_iXReg)           do { (a_pu128Dst) = (uint128_t *)((uintptr_t)0);        CHK_PTYPE(uint128_t *, a_pu128Dst);       (void)fSseWrite; } while (0)
 #define IEM_MC_REF_XREG_U128_CONST(a_pu128Dst, a_iXReg)     do { (a_pu128Dst) = (uint128_t const *)((uintptr_t)0);  CHK_PTYPE(uint128_t const *, a_pu128Dst); (void)fSseWrite; } while (0)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-virtualbox/virtualbox.git



More information about the Pkg-virtualbox-commits mailing list