[Pkg-virtualbox-commits] [virtualbox] 02/04: Imported Upstream version 5.1.2-dfsg

Gianfranco Costamagna locutusofborg at moszumanska.debian.org
Fri Jul 22 12:14:09 UTC 2016


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

locutusofborg pushed a commit to branch experimental
in repository virtualbox.

commit 7752df40212b3efe1ad32d40a1b6de490aaba9ee
Author: Gianfranco Costamagna <costamagnagianfranco at yahoo.it>
Date:   Fri Jul 22 13:18:17 2016 +0200

    Imported Upstream version 5.1.2-dfsg
---
 Config.kmk                                         |   18 +-
 Makefile.kmk                                       |    9 +
 configure                                          |   10 +-
 doc/manual/en_US/images/vbox-sdl.png               |  Bin 287450 -> 865462 bytes
 doc/manual/en_US/user_BasicConcepts.xml            |    3 +
 doc/manual/en_US/user_Glossary.xml                 |   10 -
 doc/manual/en_US/user_GuestAdditions.xml           |  235 +-
 doc/manual/en_US/user_Installation.xml             |  143 +-
 doc/manual/en_US/user_Networking.xml               |   27 +
 doc/manual/en_US/user_VBoxManage.xml               |  544 ++-
 doc/manual/fr_FR/images/vbox-sdl.png               |  Bin 955880 -> 865462 bytes
 doc/manual/user_ChangeLogImpl.xml                  |  316 +-
 include/VBox/HostServices/Service.h                |    4 +-
 include/VBox/com/array.h                           |   14 +-
 include/VBox/settings.h                            |    2 +-
 include/VBox/shflsvc.h                             |    4 +-
 include/VBox/vmm/cpum.h                            |    2 +-
 include/VBox/vmm/iem.h                             |    5 +
 include/VBox/vmm/pdmaudioifs.h                     |   20 +-
 include/VBox/vmm/pgm.h                             |   14 +
 include/VBox/vmm/rem.h                             |    2 -
 include/VBox/vmm/vm.h                              |   30 +-
 include/VBox/vusb.h                                |    2 +-
 include/iprt/cdefs.h                               |   31 +-
 include/iprt/cpp/utils.h                           |    2 +-
 include/iprt/crypto/pem.h                          |   14 +-
 include/iprt/crypto/x509.h                         |    7 +
 include/iprt/uint128.h                             |   20 +
 include/iprt/x86.h                                 |    3 +
 src/VBox/Additions/common/crOpenGL/egl.c           |   97 +-
 src/VBox/Additions/linux/installer/vboxadd.sh      |   39 +-
 src/VBox/Debugger/DBGCCommands.cpp                 |   16 -
 src/VBox/Debugger/DBGPlugInLinux.cpp               |  481 +-
 src/VBox/Devices/Audio/AudioMixBuffer.cpp          |   22 +-
 src/VBox/Devices/Audio/AudioMixer.h                |    1 -
 src/VBox/Devices/Audio/DevIchAc97.cpp              |   85 +-
 src/VBox/Devices/Audio/DevSB16.cpp                 |  142 +-
 src/VBox/Devices/Audio/DrvAudio.cpp                |  358 +-
 src/VBox/Devices/Audio/DrvAudio.h                  |   20 +
 src/VBox/Devices/Audio/DrvHostCoreAudio.cpp        |  469 +-
 .../BiosCommonCode/MakeAlternativeSource.cpp       |    8 +-
 src/VBox/Devices/Bus/DevPciIch9.cpp                |    7 +-
 .../Bus/Pci/IdeControllerDxe/IdeController.c       |    2 +
 .../EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_iso9660.c   |    2 +-
 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 +-
 .../Devices/Network/slirp/libalias/alias_nbt.c     |    2 +-
 .../Devices/Network/slirp/libalias/alias_proxy.c   |    4 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative286.asm     | 4910 ++++++++++---------
 .../Devices/PC/BIOS/VBoxBiosAlternative286.md5sum  |    2 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative386.asm     | 4586 +++++++++---------
 .../Devices/PC/BIOS/VBoxBiosAlternative386.md5sum  |    2 +-
 .../Devices/PC/BIOS/VBoxBiosAlternative8086.asm    | 4936 ++++++++++----------
 .../Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum |    2 +-
 src/VBox/Devices/PC/BIOS/floppy.c                  |   30 +-
 src/VBox/Devices/USB/DrvVUSBRootHub.cpp            |   58 +-
 src/VBox/Devices/USB/VUSBDevice.cpp                |   18 +-
 src/VBox/Devices/USB/VUSBInternal.h                |   38 +-
 src/VBox/Frontends/VirtualBox/Makefile.kmk         |    4 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts |  144 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts |  139 +-
 .../Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts   |  139 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts |  142 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts |  144 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts |  225 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts |  752 +--
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts |  178 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts |  319 +-
 .../Frontends/VirtualBox/nls/VirtualBox_fa_IR.ts   |  139 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts |  151 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts |  151 +-
 .../Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts   |  145 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts |  156 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts |  139 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts |  145 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts |  178 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts |  139 +-
 .../Frontends/VirtualBox/nls/VirtualBox_km_KH.ts   |  149 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts |  139 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts |  142 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts |  142 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts |  139 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts |  142 +-
 .../Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts   |  436 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts |  142 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts |  179 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts |  142 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts |  139 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts |  142 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts |  139 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts |  178 +-
 src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts |  145 +-
 .../Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts   |  174 +-
 .../Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts   |  449 +-
 .../Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts   |  544 ++-
 src/VBox/Frontends/VirtualBox/nls/qt_el.ts         |  392 +-
 src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts      |    2 +-
 .../VirtualBox/src/VBoxSnapshotDetailsDlg.cpp      |    8 +-
 .../src/converter/UIConverterBackendGlobal.cpp     |   72 +-
 .../VirtualBox/src/extensions/QIDialog.cpp         |   12 +-
 .../Frontends/VirtualBox/src/extensions/QIDialog.h |   37 +-
 .../VirtualBox/src/extensions/QIMessageBox.cpp     |    5 +
 .../VirtualBox/src/extradata/UIExtraDataDefs.h     |    3 +-
 .../VirtualBox/src/globals/UIActionPool.cpp        |   18 +
 .../VirtualBox/src/globals/UIActionPool.h          |   10 +
 .../VirtualBox/src/globals/UIMessageCenter.cpp     |    2 +-
 .../VirtualBox/src/globals/VBoxGlobal.cpp          |    9 -
 .../Frontends/VirtualBox/src/globals/VBoxGlobal.h  |    1 -
 .../VirtualBox/src/runtime/UIKeyboardHandler.cpp   |   24 +-
 .../VirtualBox/src/runtime/UIMachineLogic.cpp      |   16 +-
 .../information/UIInformationConfiguration.cpp     |  182 +
 .../information/UIInformationConfiguration.h       |   72 +
 .../runtime/information/UIInformationDataItem.cpp  |  226 +-
 .../runtime/information/UIVMInformationDialog.cpp  |   12 +-
 .../src/runtime/normal/UIMachineWindowNormal.cpp   |   60 +-
 .../src/runtime/normal/UIMachineWindowNormal.h     |    9 +-
 .../VirtualBox/src/selector/UISelectorWindow.cpp   |   26 +-
 .../VirtualBox/src/selector/UISelectorWindow.h     |    5 +
 .../src/selector/graphics/chooser/UIGChooser.cpp   |   15 -
 .../src/selector/graphics/chooser/UIGChooser.h     |    4 -
 .../selector/graphics/chooser/UIGChooserModel.cpp  |   10 -
 .../selector/graphics/chooser/UIGChooserModel.h    |    7 -
 .../settings/machine/UIMachineSettingsDisplay.cpp  |    9 -
 .../VirtualBox/src/widgets/UIHostComboEditor.cpp   |   82 +-
 .../VirtualBox/src/widgets/UIHostComboEditor.h     |    7 +
 .../UIWizardImportAppPageBasic2.cpp                |   31 +-
 src/VBox/HostDrivers/Support/SUPLib.cpp            |    2 +-
 .../HostDrivers/Support/darwin/SUPLib-darwin.cpp   |    2 +-
 .../HostDrivers/VBoxUSB/darwin/USBLib-darwin.cpp   |    4 +-
 .../SharedClipboard/darwin-pasteboard.h            |    1 -
 src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec  |    4 +
 src/VBox/Main/Makefile.kmk                         |    8 +-
 src/VBox/Main/idl/VirtualBox.xidl                  |    2 +-
 src/VBox/Main/include/GuestCtrlImplPrivate.h       |    1 +
 src/VBox/Main/include/GuestDnDPrivate.h            |    2 +-
 src/VBox/Main/include/HGCMObjects.h                |    2 +-
 src/VBox/Main/include/VirtualBoxClientImpl.h       |    2 +-
 src/VBox/Main/src-all/DisplayResampleImage.cpp     |  212 +-
 src/VBox/Main/src-all/DisplayUtils.cpp             |    2 +-
 src/VBox/Main/src-all/ProgressImpl.cpp             |    2 +-
 src/VBox/Main/src-client/ConsoleImpl.cpp           |   14 +-
 src/VBox/Main/src-client/ConsoleImpl2.cpp          |   12 +-
 src/VBox/Main/src-client/ConsoleVRDPServer.cpp     |   10 +-
 src/VBox/Main/src-client/DisplayImpl.cpp           |   48 +-
 src/VBox/Main/src-client/DisplayImplLegacy.cpp     |    2 -
 src/VBox/Main/src-client/DrvAudioVRDE.cpp          |    8 +-
 src/VBox/Main/src-client/GuestDnDTargetImpl.cpp    |    1 +
 src/VBox/Main/src-client/GuestSessionImpl.cpp      |   12 +-
 src/VBox/Main/src-client/MachineDebuggerImpl.cpp   |    2 +-
 src/VBox/Main/src-client/MouseImpl.cpp             |    4 +-
 src/VBox/Main/src-client/PCIRawDevImpl.cpp         |    4 +-
 src/VBox/Main/src-client/RemoteUSBDeviceImpl.cpp   |    4 +-
 src/VBox/Main/src-client/UsbCardReader.cpp         |   32 +-
 src/VBox/Main/src-client/UsbWebcamInterface.cpp    |    4 +-
 src/VBox/Main/src-client/VMMDevInterface.cpp       |    1 -
 src/VBox/Main/src-client/xpcom/module.cpp          |   35 +-
 src/VBox/Main/src-server/ApplianceImplImport.cpp   |   14 +-
 src/VBox/Main/src-server/ClientWatcher.cpp         |    2 +-
 src/VBox/Main/src-server/HostUSBDeviceImpl.cpp     |    6 +-
 src/VBox/Main/src-server/MachineImpl.cpp           |   12 +-
 src/VBox/Main/src-server/MediumImpl.cpp            |    5 +-
 src/VBox/Main/src-server/NetworkAdapterImpl.cpp    |   11 +-
 src/VBox/Main/src-server/NetworkServiceRunner.cpp  |    1 +
 src/VBox/Main/src-server/VFSExplorerImpl.cpp       |    5 +-
 src/VBox/Main/src-server/generic/NetIf-generic.cpp |    2 +-
 .../src-server/generic/USBProxyBackendUsbIp.cpp    |    3 +-
 src/VBox/Main/src-server/linux/NetIf-linux.cpp     |    8 +-
 .../Main/src-server/linux/PerformanceLinux.cpp     |   20 +-
 src/VBox/Main/src-server/linux/USBGetDevices.cpp   |    8 +-
 .../Main/src-server/linux/USBProxyBackendLinux.cpp |    4 +-
 src/VBox/Main/src-server/win/svcmain.cpp           |    6 +
 src/VBox/Main/src-server/xpcom/server.cpp          |   12 +-
 src/VBox/Main/xml/Settings.cpp                     |   76 +-
 src/VBox/Runtime/common/crypto/pemfile.cpp         |   15 +-
 src/VBox/Runtime/common/crypto/x509-file.cpp       |   77 +-
 src/VBox/Runtime/common/dbg/dbgmod.cpp             |    2 +-
 src/VBox/Runtime/common/dbg/dbgmodexports.cpp      |    7 +
 src/VBox/Storage/VD.cpp                            |    2 +-
 src/VBox/VMM/Makefile.kmk                          |   60 +-
 src/VBox/VMM/VMMAll/APICAll.cpp                    |    2 +-
 src/VBox/VMM/VMMAll/AllPdbTypeHack.cpp             |  110 +
 src/VBox/VMM/VMMAll/CPUMAllRegs.cpp                |    8 +-
 src/VBox/VMM/VMMAll/EMAll.cpp                      |    1 -
 src/VBox/VMM/VMMAll/GIMAllHv.cpp                   |   37 +-
 src/VBox/VMM/VMMAll/IEMAll.cpp                     |  563 ++-
 src/VBox/VMM/VMMAll/IEMAllAImplC.cpp               |  174 +-
 src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h              |   62 +-
 src/VBox/VMM/VMMAll/PATMAll.cpp                    |    5 +-
 src/VBox/VMM/VMMAll/PDMAllCritSect.cpp             |    3 +-
 src/VBox/VMM/VMMAll/PGMAll.cpp                     |    3 +
 src/VBox/VMM/VMMAll/PGMAllPhys.cpp                 |  139 +
 src/VBox/VMM/VMMAll/TRPMAll.cpp                    |    1 -
 src/VBox/VMM/VMMR0/HMSVMR0.cpp                     |    1 -
 src/VBox/VMM/VMMR0/HMVMXR0.cpp                     |   46 +-
 src/VBox/VMM/VMMR3/CPUM.cpp                        |    1 -
 src/VBox/VMM/VMMR3/CSAM.cpp                        |    1 -
 src/VBox/VMM/VMMR3/DBGFAddr.cpp                    |    1 -
 src/VBox/VMM/VMMR3/DBGFDisas.cpp                   |    1 -
 src/VBox/VMM/VMMR3/EM.cpp                          |    9 -
 src/VBox/VMM/VMMR3/EMRaw.cpp                       |    3 -
 src/VBox/VMM/VMMR3/FTM.cpp                         |    2 -
 src/VBox/VMM/VMMR3/GIM.cpp                         |    1 -
 src/VBox/VMM/VMMR3/GIMHv.cpp                       |   60 +-
 src/VBox/VMM/VMMR3/IEMR3.cpp                       |   63 +-
 src/VBox/VMM/VMMR3/MMHyper.cpp                     |    1 -
 src/VBox/VMM/VMMR3/MMPagePool.cpp                  |    1 -
 src/VBox/VMM/VMMR3/PATM.cpp                        |    1 -
 src/VBox/VMM/VMMR3/PATMSSM.cpp                     |    1 -
 src/VBox/VMM/VMMR3/PDMDriver.cpp                   |    4 +-
 src/VBox/VMM/VMMR3/PGMPhys.cpp                     |    2 +
 src/VBox/VMM/VMMR3/TRPM.cpp                        |  135 +-
 src/VBox/VMM/include/GIMHvInternal.h               |   29 +
 src/VBox/VMM/include/IEMInternal.h                 |   26 +-
 src/VBox/VMM/include/PGMInternal.h                 |    1 -
 src/VBox/VMM/include/REMInternal.h                 |    4 +-
 src/VBox/VMM/include/internal/pgm.h                |   24 -
 src/VBox/VMM/testcase/tstVMM.cpp                   |   16 +-
 src/VBox/VMM/testcase/tstVMStructSize.cpp          |    2 +
 src/VBox/ValidationKit/testdriver/reporter.py      |    7 +-
 src/VBox/ValidationKit/testdriver/vboxwrappers.py  |    4 +-
 .../testmanager/batch/virtual_test_sheriff.py      |   67 +-
 .../ValidationKit/tests/additions/tdAddBasic1.py   |   39 +-
 .../tests/storage/tdStorageBenchmark1.py           |   73 +-
 src/libs/xpcom18a4/Makefile.kmk                    |    1 +
 src/libs/xpcom18a4/nsprpub/pr/src/cplus/rctime.cpp |    2 +-
 src/libs/xpcom18a4/nsprpub/pr/src/misc/prtime.c    |    2 +-
 src/libs/xpcom18a4/python/src/TypeObject.cpp       |    2 +-
 src/libs/xpcom18a4/python/src/VariantUtils.cpp     |    2 +
 .../xpcom18a4/xpcom/components/nsCategoryManager.h |    4 +-
 src/libs/xpcom18a4/xpcom/io/nsDirectoryService.cpp |    2 +-
 src/libs/xpcom18a4/xpcom/io/nsLocalFileOS2.cpp     |    2 +
 src/libs/xpcom18a4/xpcom/io/nsLocalFileUnix.cpp    |    2 +-
 src/libs/xpcom18a4/xpcom/io/nsLocalFileWin.cpp     |    2 +
 src/libs/xpcom18a4/xpcom/threads/nsAutoLock.h      |   42 +-
 src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_idl.c |    2 +-
 .../xpcom18a4/xpcom/typelib/xpt/src/xpt_struct.c   |    2 +-
 src/recompiler/VBoxREM.def                         |    4 +-
 src/recompiler/VBoxREMWrapper.cpp                  |   24 +-
 src/recompiler/VBoxRecompiler.c                    |   93 +-
 src/recompiler/cpu-exec.c                          |   11 +-
 src/recompiler/target-i386/cpu.h                   |    3 +
 src/recompiler/tcg/i386/tcg-target.c               |    2 +-
 248 files changed, 17228 insertions(+), 11918 deletions(-)

diff --git a/Config.kmk b/Config.kmk
index bfbe877..bcd13a3 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 = 0
+VBOX_VERSION_BUILD = 2
 # 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.
@@ -1596,8 +1596,8 @@ VBOX_GCC_WARN_PEDANTIC = -Wshadow $(VBOX_GCC_WARN) -Wno-long-long
 ifdef VBOX_WITH_MASOCHISTIC_WARNINGS
  VBOX_GCC_WARN_PEDANTIC += -Wunused-variable -Wunused-function -Wunused-label -Wunused-parameter
 endif
-VBOX_GCC_PEDANTIC_CXX ?= -pedantic -Wshadow $(VBOX_GCC_WARN_PEDANTIC) -Wno-long-long $(VBOX_GCC_Wno-return-type-c-linkage)
-VBOX_GCC_PEDANTIC_C   ?= -pedantic -Wshadow $(VBOX_GCC_WARN_PEDANTIC) -Wno-long-long -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Werror-implicit-function-declaration
+VBOX_GCC_PEDANTIC_CXX ?= -pedantic $(VBOX_GCC_WARN_PEDANTIC) $(VBOX_GCC_Wno-return-type-c-linkage)
+VBOX_GCC_PEDANTIC_C   ?= -pedantic $(VBOX_GCC_WARN_PEDANTIC) -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -Werror-implicit-function-declaration
 ifeq ($(KBUILD_TARGET),win)
  VBOX_C_CXX_FLAGS_NO_UNUSED_PARAMETERS = #-Wdxxxx
 else
@@ -4011,7 +4011,7 @@ TEMPLATE_VBOXR0DRV_CXXFLAGS            = $(VBOX_DARWIN_DEF_SDK_CXXFLAGS) -mkerne
 # -Werror=deprecated-objc-isa-usage \
 # -Werror=objc-root-class \
 # -Wno-missing-field-initializers -Wno-missing-prototypes -Wunreachable-code \
-# -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function \
+# -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function \
 # -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body \
 # -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants \
 # -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion \
@@ -5082,7 +5082,7 @@ else # the GCC guys:
 
 TEMPLATE_VBOXMAINEXE_TOOL                = $(VBOX_GCC_TOOL)
 TEMPLATE_VBOXMAINEXE_CXXFLAGS            = -g $(VBOX_GCC_pipe) \
-	$(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) -Wno-long-long -Wno-non-virtual-dtor -Wshadow \
+	$(VBOX_GCC_PEDANTIC_CXX) $(VBOX_GCC_Wno-variadic-macros) -Wshadow \
 	-fshort-wchar -fpermissive -fexceptions -frtti $(VBOX_GCC_OPT) $(VBOX_GCC_FP) -fno-strict-aliasing \
 	$(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK)
 ifdef VBOX_WITH_DTRACE_R3_MAIN
@@ -5599,18 +5599,18 @@ ifdef VBOX_WITH_QTGUI
 
   ## @todo Use VBOX_GCC_PEDANTIC_CXX?
   TEMPLATE_VBOXQTGUIEXE_CXXFLAGS = \
-	-g $(VBOX_GCC_pipe) $(filter-out -Wno-unused,$(VBOX_GCC_WARN)) -frtti -fno-exceptions -Wno-non-virtual-dtor \
+	-g $(VBOX_GCC_pipe) $(filter-out -Wno-unused,$(VBOX_GCC_WARN)) -frtti -fno-exceptions \
 	-Wno-long-long -fshort-wchar -fno-strict-aliasing \
 	$(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) \
 	$(VBOX_GCC_Wno-return-type-c-linkage) $(VBOX_GCC_std) $(VBOX_GCC_IPRT_FMT_CHECK)
   TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.x86 = -m32
   TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.amd64 = -m64
   TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.linux = -pthread
-  TEMPLATE_VBOXQTGUIEXE_OBJCFLAGS = -g $(VBOX_GCC_pipe) $(VBOX_GCC_PEDANTIC_C) -Wno-long-long -fno-exceptions $(VBOX_GCC_IPRT_FMT_CHECK)
+  TEMPLATE_VBOXQTGUIEXE_OBJCFLAGS = -g $(VBOX_GCC_pipe) $(VBOX_GCC_PEDANTIC_C) -fno-exceptions $(VBOX_GCC_IPRT_FMT_CHECK)
   TEMPLATE_VBOXQTGUIEXE_OBJCFLAGS.x86 = $(TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.x86)
   TEMPLATE_VBOXQTGUIEXE_OBJCFLAGS.amd64 = $(TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.amd64)
   TEMPLATE_VBOXQTGUIEXE_OBJCXXFLAGS = \
-	-g $(VBOX_GCC_pipe) $(VBOX_GCC_PEDANTIC_CXX) -Wno-non-virtual-dtor -Wno-long-long \
+	-g $(VBOX_GCC_pipe) $(VBOX_GCC_PEDANTIC_CXX) \
 	-frtti -fno-exceptions $(VBOX_GCC_fvisibility-hidden) $(VBOX_GCC_fvisibility-inlines-hidden) $(VBOX_GCC_IPRT_FMT_CHECK)
   TEMPLATE_VBOXQTGUIEXE_OBJCXXFLAGS.x86 = $(TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.x86)
   TEMPLATE_VBOXQTGUIEXE_OBJCXXFLAGS.amd64 = $(TEMPLATE_VBOXQTGUIEXE_CXXFLAGS.amd64)
@@ -6545,7 +6545,7 @@ endif
 SVN                    ?= svn$(HOSTSUFF_EXE)
 VBOX_SVN_REV_KMK        = $(PATH_OUT)/revision.kmk
 ifndef VBOX_SVN_REV
- VBOX_SVN_REV_FALLBACK := $(patsubst %:,,  $Rev: 108711 $  )
+ VBOX_SVN_REV_FALLBACK := $(patsubst %:,,  $Rev: 108956 $  )
  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         :=
diff --git a/Makefile.kmk b/Makefile.kmk
index 4f6a130..4bffaf2 100644
--- a/Makefile.kmk
+++ b/Makefile.kmk
@@ -214,6 +214,15 @@ else # VBOX_WITH_QTGUI_V5
    Frameworks/$(qtmod).framework/$(qtmod)=>Versions/5/$(qtmod) \
    Frameworks/$(qtmod).framework/Resources=>Versions/5/Resources)
  else # win x11
+  if1of ($(KBUILD_TARGET), linux solaris)
+   ifndef VBOX_ONLY_BUILD
+    ifneq ($(VBOX_GCC_VERSION_CXX),)
+     ifeq ($(int-ge $(VBOX_GCC_VERSION_CXX),40400),)
+      $(error gcc >= 4.4 required when compiling against Qt5!)
+     endif
+    endif
+   endif
+  endif
   if defined(VBOX_WITH_ORACLE_QT) || defined(VBOX_WITH_QT_PAYLOAD)
    include $(KBUILD_PATH)/units/qt5.kmk
    ifeq ($(KBUILD_TARGET),win)
diff --git a/configure b/configure
index b1ad214..1bfe187 100755
--- a/configure
+++ b/configure
@@ -439,14 +439,14 @@ check_gcc()
       elif [ $cc_maj -eq 4 -a $cc_min -eq 0 -a "$OS" = "darwin" ]; then
         log_success "found version $cc_ver"
       # gcc-4.0 is allowed for Darwin only
-      elif [ $cc_maj -lt 3 \
-             -o \( $cc_maj -eq 3 -a $cc_min -lt 2 \) \
-             -o \( $cc_maj -eq 4 -a $cc_min -lt 1 -a "$OS" != "darwin" \) \
+      elif [ $cc_maj -lt 4 \
+             -o \( $cc_maj -eq 4 -a $cc_min -lt 4 -a "$OS" != "darwin" \) \
+             -o \( $cc_maj -eq 4 -a $cc_min -lt 2 -a "$OS"  = "darwin" \) \
              -o \( $cc_maj -eq 4 -a $cc_min -gt 9 \) \
              -o \( $cc_maj -eq 5 -a $cc_min -gt 9 \) \
              -o \( $cc_maj -eq 6 -a $cc_min -gt 1 \) \
              -o $cc_maj -gt 6 ]; then
-        log_failure "gcc version $cc_maj.$cc_min found, expected gcc 3.x with x>1 or gcc 4.x, gcc 5.x or gcc 6.x"
+        log_failure "gcc version $cc_maj.$cc_min found, expected gcc 4.x, gcc 5.x or gcc 6.x"
         fail really
       else
         log_success "found version $cc_ver"
@@ -2116,7 +2116,7 @@ extern "C" int main(void)
 }
 EOF
   found=
-  SUPPYTHONLIBS="python2.7 python2.6"
+  SUPPYTHONLIBS="python2.7 python2.6 python3.1 python3.2 python3.3 python3.4 python3.5 python3.5m"
   for p in $PYTHONDIR; do
     for d in $SUPPYTHONLIBS; do
       for b in lib/x86_64-linux-gnu lib/i386-linux-gnu lib64 lib/64 lib; do
diff --git a/doc/manual/en_US/images/vbox-sdl.png b/doc/manual/en_US/images/vbox-sdl.png
index 87e036d..2c5b9fb 100644
Binary files a/doc/manual/en_US/images/vbox-sdl.png and b/doc/manual/en_US/images/vbox-sdl.png differ
diff --git a/doc/manual/en_US/user_BasicConcepts.xml b/doc/manual/en_US/user_BasicConcepts.xml
index 3e1a54e..b0212f2 100644
--- a/doc/manual/en_US/user_BasicConcepts.xml
+++ b/doc/manual/en_US/user_BasicConcepts.xml
@@ -1009,6 +1009,9 @@
     <para>On a Linux host, depending on your host configuration, you can also
     select between the OSS, ALSA or the PulseAudio subsystem. On newer Linux
     distributions, the PulseAudio subsystem should be preferred.</para>
+
+    <para>Since VirtualBox 5.0 only OSS is supported on Solaris hosts - the "Solaris Audio" 
+    audio backend is no longer supported on Solaris hosts.</para>
   </sect1>
 
   <sect1 id="settings-network">
diff --git a/doc/manual/en_US/user_Glossary.xml b/doc/manual/en_US/user_Glossary.xml
index 38d3af2..f81db3e 100644
--- a/doc/manual/en_US/user_Glossary.xml
+++ b/doc/manual/en_US/user_Glossary.xml
@@ -118,16 +118,6 @@
         linkend="networkingdetails" />.</para>
       </glossdef>
     </glossentry>
-
-    <glossentry>
-      <glossterm>DKMS</glossterm>
-
-      <glossdef>
-        <para>Dynamic Kernel Module Support. A framework that simplifies
-        installing and updating external kernel modules on Linux machines; see
-        <xref linkend="externalkernelmodules" />.</para>
-      </glossdef>
-    </glossentry>
   </glossdiv>
 
   <glossdiv>
diff --git a/doc/manual/en_US/user_GuestAdditions.xml b/doc/manual/en_US/user_GuestAdditions.xml
index 5453386..0833b96 100644
--- a/doc/manual/en_US/user_GuestAdditions.xml
+++ b/doc/manual/en_US/user_GuestAdditions.xml
@@ -594,18 +594,9 @@
             be performed in your Linux <emphasis>guest</emphasis> instead of
             on a Linux host system, as described there.</para>
 
-            <para>Again, as with Linux hosts, we recommend using DKMS if it is
-            available for the guest system. If it is not installed, use this
-            command for Ubuntu/Debian systems:
-            <screen>sudo apt-get install dkms</screen>
-            or for Fedora systems: <screen>yum install dkms</screen></para>
-
-            <para>Be sure to install DKMS <emphasis>before</emphasis>
-            installing the Linux Guest Additions. If DKMS is not available
-            or not installed, the guest kernel modules will need to be
-            recreated manually whenever the guest kernel is updated using
-            the command <screen>rcvboxadd setup</screen> as root.
-            </para>
+            <para>If you suspect that something has gone wrong, check that your
+            guest is set up correctly and try executing the command
+            <screen>rcvboxadd setup</screen> as root.</para>
           </listitem>
 
           <listitem>
@@ -624,226 +615,6 @@
 
           </listitem>
         </orderedlist>
-
-        <para>For your convenience, we provide the following step-by-step
-        instructions for freshly installed copies of recent versions of the most
-        popular Linux distributions. After these preparational steps, you can
-        execute the VirtualBox Guest Additions installer as described
-        above.</para>
-
-        <sect4>
-          <title>Ubuntu</title>
-
-          <para><orderedlist>
-              <listitem>
-                <para>In order to fully update your guest system, open a
-                terminal and run <screen>apt-get update</screen> as root
-                followed by <screen>apt-get upgrade</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Install DKMS using <screen>apt-get install dkms</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Reboot your guest system in order to activate the
-                updates and then proceed as described above.</para>
-              </listitem>
-            </orderedlist></para>
-        </sect4>
-
-        <sect4>
-          <title>Fedora</title>
-
-          <para><orderedlist>
-              <listitem>
-                <para>In order to fully update your guest system, open a
-                terminal and run <screen>yum update</screen> as root.</para>
-              </listitem>
-
-              <listitem>
-                <para>Install DKMS and the GNU C compiler using <screen>yum install dkms</screen>
-                followed by <screen>yum install gcc</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Reboot your guest system in order to activate the
-                updates and then proceed as described above.</para>
-              </listitem>
-            </orderedlist></para>
-        </sect4>
-
-        <sect4>
-          <title>openSUSE</title>
-
-          <para><orderedlist>
-              <listitem>
-                <para>In order to fully update your guest system, open a
-                terminal and run <screen>zypper update</screen> as root.</para>
-              </listitem>
-
-              <listitem>
-                <para>Install the make tool and the GNU C compiler using
-                <screen>zypper install make gcc</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Reboot your guest system in order to activate the
-                updates.</para>
-              </listitem>
-
-              <listitem>
-                <para>Find out which kernel you are running using <screen>uname -a</screen>
-                An example would be
-                <computeroutput>2.6.31.12-0.2-default</computeroutput> which
-                refers to the "default" kernel. Then install the correct
-                kernel development package. In the above example this would be
-                <screen>zypper install kernel-default-devel</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Make sure that your running kernel
-                (<computeroutput>uname -a</computeroutput>) and the kernel
-                packages you have installed (<computeroutput>rpm -qa
-                kernel\*</computeroutput>) have the exact same version number.
-                Proceed with the installation as described above.</para>
-              </listitem>
-            </orderedlist></para>
-        </sect4>
-
-        <sect4>
-          <title>SuSE Linux Enterprise Desktop (SLED)</title>
-
-          <para><orderedlist>
-              <listitem>
-                <para>In order to fully update your guest system, open a
-                terminal and run <screen>zypper update</screen> as root.</para>
-              </listitem>
-
-              <listitem>
-                <para>Install the GNU C compiler using <screen>zypper install gcc</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Reboot your guest system in order to activate the
-                updates.</para>
-              </listitem>
-
-              <listitem>
-                <para>Find out which kernel you are running using <screen>uname -a</screen>
-                An example would be
-                <computeroutput>2.6.27.19-5.1-default</computeroutput> which
-                refers to the "default" kernel. Then install the correct
-                kernel development package. In the above example this would be
-                <screen>zypper install kernel-syms kernel-source</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Make sure that your running kernel
-                (<computeroutput>uname -a</computeroutput>) and the kernel
-                packages you have installed (<computeroutput>rpm -qa
-                kernel\*</computeroutput>) have the exact same version number.
-                Proceed with the installation as described above.</para>
-              </listitem>
-            </orderedlist></para>
-        </sect4>
-
-        <sect4>
-          <title>Mandrake</title>
-
-          <para><orderedlist>
-              <listitem>
-                <para>Mandrake ships with the VirtualBox Guest Additions which
-                will be replaced if you follow these steps.</para>
-              </listitem>
-
-              <listitem>
-                <para>In order to fully update your guest system, open a
-                terminal and run <screen>urpmi --auto-update</screen>
-                as root.</para>
-              </listitem>
-
-              <listitem>
-                <para>Reboot your system in order to activate the
-                updates.</para>
-              </listitem>
-
-              <listitem>
-                <para>Install DKMS using <screen>urpmi dkms</screen> and make
-                sure to choose the correct kernel-devel package when asked by
-                the installer (use <computeroutput>uname -a</computeroutput>
-                to compare).</para>
-              </listitem>
-            </orderedlist></para>
-        </sect4>
-
-        <sect4>
-          <title>Oracle Linux, Red Hat Enterprise Linux and CentOS</title>
-
-          <para><orderedlist>
-              <listitem>
-                <para>For versions prior to 6, add <computeroutput>divider=10</computeroutput>
-                to the kernel boot options in
-                <computeroutput>/etc/grub.conf</computeroutput> to reduce the
-                idle CPU load.</para>
-              </listitem>
-
-              <listitem>
-                <para>In order to fully update your guest system, open a
-                terminal and run <screen>yum update</screen> as root.</para>
-              </listitem>
-
-              <listitem>
-                <para>Install the GNU C compiler and the kernel development
-                packages using <screen>yum install gcc</screen> followed by
-                <screen>yum install kernel-devel</screen> For Oracle UEK
-                kernels, use <screen>yum install kernel-uek-devel</screen>
-                to install the UEK kernel headers.</para>
-              </listitem>
-
-              <listitem>
-                <para>Reboot your guest system in order to activate the
-                updates and then proceed as described above.</para>
-              </listitem>
-
-              <listitem>
-                <para>In case Oracle Linux does not find the
-                required packages, you either have to install them from a
-                different source (e.g. DVD) or use Oracle's public Yum server
-                located at <ulink
-                url="http://public-yum.oracle.com/">http://public-yum.oracle.com</ulink>.</para>
-              </listitem>
-            </orderedlist></para>
-        </sect4>
-
-        <sect4>
-          <title>Debian</title>
-
-          <para><orderedlist>
-              <listitem>
-                <para>In order to fully update your guest system, open a
-                terminal and run <screen>apt-get update</screen> as root
-                followed by <screen>apt-get upgrade</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Install the make tool and the GNU C compiler using
-                <screen>apt-get install make gcc</screen></para>
-              </listitem>
-
-              <listitem>
-                <para>Reboot your guest system in order to activate the
-                updates.</para>
-              </listitem>
-
-              <listitem>
-                <para>Determine the exact version of your kernel using
-                <computeroutput>uname -a</computeroutput> and install the
-                correct version of the linux-headers package, e.g. using
-                <screen>apt-get install linux-headers-2.6.26-2-686</screen></para>
-              </listitem>
-            </orderedlist></para>
-        </sect4>
       </sect3>
 
       <sect3>
diff --git a/doc/manual/en_US/user_Installation.xml b/doc/manual/en_US/user_Installation.xml
index caf3a1f..127c199 100644
--- a/doc/manual/en_US/user_Installation.xml
+++ b/doc/manual/en_US/user_Installation.xml
@@ -365,102 +365,63 @@
       <computeroutput>vboxnetadp</computeroutput> which are required for the
       more advanced networking features of VirtualBox.</para>
 
-      <para>The VirtualBox kernel module is automatically installed on your
-      system when you install VirtualBox. To maintain it with future kernel
-      updates, for those Linux distributions which provide it -- most current
-      ones -- we recommend installing Dynamic Kernel Module Support
-      (DKMS)<footnote>
-          <para>See <ulink
-          url="http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support">http://en.wikipedia.org/wiki/Dynamic_Kernel_Module_Support</ulink>
-          for an introduction.</para>
-        </footnote>. This framework helps with building and upgrading kernel
-      modules.</para>
-
-      <para>If DKMS is not already installed, execute one of the following:
-      <itemizedlist>
-          <listitem>
-            <para>On an Ubuntu system:</para>
+      <para>The modules will be built automatically during installation or
+      after kernel updates if your Linux system is prepared for building
+      external kernel modules.</para>
+
+      <para>Most Linux distributions can be set up simply by installing
+      the right packages - normally, these will be the GNU compiler
+      (GCC), GNU Make (make) and packages containing header files for
+      your kernel - and making sure that all system updates are
+      installed and that the system is running the most up-to-date
+      kernel included in the distribution. <emphasis>The version numbers
+      of the header file packages must be the same as that of the kernel
+      you are using.</emphasis></para>
 
-            <screen>sudo apt-get install dkms</screen>
-          </listitem>
+      <itemizedlist>
+        <listitem>
+          <para>With Debian and Ubuntu releases, you must install the
+          right version of the
+          <computeroutput>linux-headers</computeroutput> and if it
+          exists the <computeroutput>linux-kbuild</computeroutput>
+          package. Current Ubuntu releases should have the right
+          packages installed by default.</para>
+        </listitem>
 
-          <listitem>
-            <para>On a Fedora system:<screen>yum install dkms</screen></para>
-          </listitem>
+        <listitem>
+          <para>In even older Debian and Ubuntu releases, you must
+          install the right version of the
+          <computeroutput>kernel-headers</computeroutput>
+          package.</para>
+        </listitem>
 
-          <listitem>
-            <para>On a Mandriva or Mageia system:<screen>urpmi dkms</screen></para>
-          </listitem>
-        </itemizedlist></para>
+        <listitem>
+          <para>On Fedora and Redhat systems, the package is
+          <computeroutput>kernel-devel</computeroutput>.</para>
+        </listitem>
 
-      <para>If DKMS is available and installed, the VirtualBox kernel module
-      should always work automatically, and it will be automatically rebuilt
-      if your host kernel is updated.</para>
+        <listitem>
+          <para>On SUSE and openSUSE Linux, you must install the right
+          versions of the <computeroutput>kernel-source</computeroutput>
+          and <computeroutput>kernel-syms</computeroutput>
+          packages.</para>
+        </listitem>
 
-      <para>Otherwise, there are only two situations in which you will need to
-      worry about the kernel module:<orderedlist>
-          <listitem>
-            <para>The original installation fails. This probably means that
-            your Linux system is not prepared for building external kernel
-            modules.</para>
-
-            <para>Most Linux distributions can be set up simply by installing
-            the right packages - normally, these will be the GNU compiler
-            (GCC), GNU Make (make) and packages containing header files for
-            your kernel - and making sure that all system updates are
-            installed and that the system is running the most up-to-date
-            kernel included in the distribution. <emphasis>The version numbers
-            of the header file packages must be the same as that of the kernel
-            you are using.</emphasis></para>
-
-            <itemizedlist>
-              <listitem>
-                <para>With Debian and Ubuntu releases, you must install the
-                right version of the
-                <computeroutput>linux-headers</computeroutput> and if it
-                exists the <computeroutput>linux-kbuild</computeroutput>
-                package. Current Ubuntu releases should have the right
-                packages installed by default.</para>
-              </listitem>
-
-              <listitem>
-                <para>In even older Debian and Ubuntu releases, you must
-                install the right version of the
-                <computeroutput>kernel-headers</computeroutput>
-                package.</para>
-              </listitem>
-
-              <listitem>
-                <para>On Fedora and Redhat systems, the package is
-                <computeroutput>kernel-devel</computeroutput>.</para>
-              </listitem>
-
-              <listitem>
-                <para>On SUSE and openSUSE Linux, you must install the right
-                versions of the <computeroutput>kernel-source</computeroutput>
-                and <computeroutput>kernel-syms</computeroutput>
-                packages.</para>
-              </listitem>
-
-              <listitem>
-                <para>If you have built your own kernel, you will need to make
-                sure that you also installed all the required header and other
-                files for building external modules to the right locations.
-                The details of how to do this will depend on how you built
-                your kernel, and if you are unsure you should consult the
-                documentation which you followed to do so.</para>
-              </listitem>
-            </itemizedlist>
-          </listitem>
+        <listitem>
+          <para>If you have built your own kernel, you will need to make
+          sure that you also installed all the required header and other
+          files for building external modules to the right locations.
+          The details of how to do this will depend on how you built
+          your kernel, and if you are unsure you should consult the
+          documentation which you followed to do so.</para>
+        </listitem>
+      </itemizedlist>
 
-          <listitem>
-            <para>The kernel of your Linux host was updated and DKMS is not
-            installed. In that case, the kernel module will need to be
-            reinstalled by executing (as root):</para>
+      <para>If you suspect that something has gone wrong with module installation,
+      check that your system is set up as described above and try running (as root)
+      the following command:</para>
 
-            <screen>rcvboxdrv setup</screen>
-          </listitem>
-        </orderedlist></para>
+      <screen>rcvboxdrv setup</screen>
     </sect2>
 
     <sect2>
@@ -506,9 +467,9 @@
       </sect3>
 
       <sect3>
-        <title>Using the alternative installer (VirtualBox.run)</title>
+        <title>Using the alternative generic installer (VirtualBox.run)</title>
 
-        <para>The alternative installer performs the following steps:</para>
+        <para>The alternative generic installer performs the following steps:</para>
 
         <itemizedlist>
           <listitem>
diff --git a/doc/manual/en_US/user_Networking.xml b/doc/manual/en_US/user_Networking.xml
index bf9ba27..cbd7e15 100644
--- a/doc/manual/en_US/user_Networking.xml
+++ b/doc/manual/en_US/user_Networking.xml
@@ -949,6 +949,33 @@ VBoxManage modifyvm "VM name" --nicbandwidthgroup2 Limit</screen></para>
             offloading settings using <computeroutput>ethtool</computeroutput>
             command in Linux guests.</para>
         </listitem>
+        <listitem>
+          <para>Perform a full, detailed analysis of network traffic on 
+            the VM's network adaptor using a 3rd party tool such as Wireshark. 
+            To do this, a promiscuous mode policy needs to be used on the 
+            VM's network adaptor. Use of this mode is only possible on 
+            networks: NAT Network, Bridged Adapter, Internal Network and Host-only Adapter.</para>
+          <para>To setup a promiscuous mode policy, either select from the drop down list 
+            located in the Network Settings dialog for the network adaptor
+            or use the command line tool <computeroutput>VBoxManage</computeroutput>;
+            for details, refer to <xref linkend="vboxmanage-modifyvm" />.</para>
+          <para>Promiscuous mode policies are: </para>
+          <para><orderedlist>
+            <listitem>
+              <para><computeroutput>deny</computeroutput> (default setting) which hides
+              any traffic not intended for this VM's network adaptor.</para>
+            </listitem>
+            <listitem>
+              <para><computeroutput>allow-vms</computeroutput> which hides all host
+              traffic from this VM's network adaptor, but allows it to see traffic from/to other
+              VMs.</para>
+            </listitem>
+            <listitem>
+              <para><computeroutput>allow-all</computeroutput> which removes all
+              restrictions - this VM's network adaptor sees all traffic.</para>
+            </listitem>
+          </orderedlist></para>
+        </listitem>
         </orderedlist></para>
   </sect1>
 </chapter>
diff --git a/doc/manual/en_US/user_VBoxManage.xml b/doc/manual/en_US/user_VBoxManage.xml
index d6e37e6..afba126 100644
--- a/doc/manual/en_US/user_VBoxManage.xml
+++ b/doc/manual/en_US/user_VBoxManage.xml
@@ -469,14 +469,27 @@ IOAPIC:          on
           </listitem>
 
           <listitem>
-            <para><computeroutput>--memory
-            <memorysize></computeroutput>: This sets the amount of RAM,
+            <para><computeroutput>--iconfile <filename></computeroutput>:
+            This specifies the absolute path on the host file system for the VirtualBox 
+            icon to be displayed in the VM.</para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--memory <memorysize></computeroutput>: This sets the amount of RAM,
             in MB, that the virtual machine should allocate for itself from
             the host. See the remarks in <xref linkend="gui-createvm" /> for
             more information.</para>
           </listitem>
 
           <listitem>
+            <para><computeroutput>--pagefusion on|off</computeroutput>:
+            Enables/disables (default) the Page Fusion feature.  
+            The Page Fusion feature minimises memory duplication between VMs with similar 
+            configurations running on the same host.
+            See <xref linkend="guestadd-pagefusion" /> for details.</para>
+          </listitem>
+
+          <listitem>
             <para><computeroutput>--vram <vramsize></computeroutput>:
             This sets the amount of RAM that the virtual graphics card should
             have. See <xref linkend="settings-display" /> for details.</para>
@@ -491,6 +504,18 @@ IOAPIC:          on
           </listitem>
 
           <listitem>
+            <para><computeroutput>--pciattach <host PCI address [@ guest PCI bus address]></computeroutput>:
+            Attaches a specified PCI network controller on the host to a PCI bus (can specify) on the guest.
+            See <xref linkend="pcipassthrough" /> for details. </para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--pcidetach <host PCI address></computeroutput>:
+            Detaches a specified PCI network controller on the host from the attached PCI bus on the guest. 
+            See <xref linkend="pcipassthrough" /> for details. </para>
+          </listitem>
+
+          <listitem>
             <para><computeroutput>--hardwareuuid
             <uuid></computeroutput>: The UUID presented to the guest via
             memory tables (DMI/SMBIOS), hardware and guest properties. By
@@ -545,6 +570,13 @@ IOAPIC:          on
           </listitem>
 
           <listitem>
+            <para><computeroutput>--cpu-profile <host|intel 80[86|286|386]></computeroutput>:
+            Indicate the use of a profile for guest cpu emulation. Specify either one based  
+            on the host system CPU (host), or one from a number of older Intel 
+            Micro-architectures - 8086, 80286, 80386.</para>
+          </listitem>
+
+          <listitem>
             <para><computeroutput>--hpet on|off</computeroutput>: This
             enables/disables a High Precision Event Timer (HPET) which can
             replace the legacy system timers. This is turned off by default.
@@ -567,6 +599,23 @@ IOAPIC:          on
           </listitem>
 
           <listitem>
+            <para><computeroutput>--apic on|off</computeroutput>:
+            This setting enables(default)/disables IO APIC. With
+            I/O APIC, operating systems can use more than 16 interrupt
+            requests (IRQs) thus avoiding IRQ sharing for improved
+            reliability. See <xref linkend="settings-motherboard" />.</para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--x2apic on|off</computeroutput>:
+            This setting enables(default)/disables CPU x2APIC support.
+            CPU x2APIC support helps operating systems run more efficiently on high 
+            core count configurations, and optimizes interrupt
+            distribution in virtualized environments. Disable when using host/guest
+            operating systems incompatible with x2APIC support.</para>
+          </listitem>
+
+          <listitem>
             <para><computeroutput>--paravirtprovider
             none|default|legacy|minimal|hyperv|kvm</computeroutput>: This
             setting specifies which paravirtualization interface to provide to
@@ -716,6 +765,12 @@ IOAPIC:          on
           </listitem>
 
           <listitem>
+            <para><computeroutput>--graphicscontroller none|vboxvga|vmsvga</computeroutput>: This
+            option specifies use of a graphics controller, and type chosen from vboxvga or vmsvga.
+            <xref linkend="settings-motherboard" />).</para>
+          </listitem>
+
+          <listitem>
             <para><computeroutput>--biossystemtimeoffset <ms></computeroutput>:
             This allows you to set a fixed time offset of the guest relative to
             the host time. The offset is specified in milliseconds. If the offset
@@ -730,10 +785,10 @@ IOAPIC:          on
           </listitem>
 
           <listitem>
-            <para><computeroutput>--firmware efi|bios</computeroutput>:
-            Specifies which firmware is used to boot particular virtual
-            machine: EFI or BIOS. Use EFI only if your fully understand what
-            you're doing.</para>
+            <para><computeroutput>--firmware bios|efi|efi32|efi64</computeroutput>:
+            Specifies which firmware to be used to boot the VM: 
+            Available options are BIOS, or one of the EFI options: efi, efi32 or efi64.
+            Use EFI options with care.</para>
           </listitem>
 
           <listitem>
@@ -882,12 +937,25 @@ IOAPIC:          on
           <listitem>
             <para><computeroutput>--macaddress<1-N>
             auto|<mac></computeroutput>: With this option you can set
-            the MAC address of the virtual network card. Normally, each
-            virtual network card is assigned a random address by VirtualBox at
+            the MAC address of a particular network adapter on the VM. Normally, each
+            network adapter is assigned a random address by VirtualBox at
             VM creation.</para>
           </listitem>
 
           <listitem>
+            <para><computeroutput>--mouse <ps2|usb|usbtablet|usbmultitouch></computeroutput>: 
+            Specifies the mode of the mouse to be used in the VM. Available options are: ps2, usb, 
+            usbtablet, usbmultitouch.
+            </para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--keyboard <ps2|usb></computeroutput>: 
+            Specifies the mode of the keyboard to be used in the VM. Available options are: ps2, usb.
+            </para>
+          </listitem>
+
+          <listitem>
             <para><computeroutput>--nicgenericdrv<1-N>
             <backend driver></computeroutput>: If generic networking has been
             enabled for a virtual network card (see the
@@ -907,6 +975,16 @@ IOAPIC:          on
             please see <xref linkend="network_udp_tunnel" />.
             </para>
           </listitem>
+
+          <listitem>
+            <para><computeroutput>--nicspeed<1-N> <kbps></computeroutput>:
+            If generic networking has been enabled for a virtual network card (see the
+            <computeroutput>--nic</computeroutput> option above; otherwise
+            this setting has no effect), this mode enables access
+            to rarely used networking sub-modes, such as VDE network or UDP Tunnel.
+            This option specifies the throughput rate in KBytes/sec.
+            </para>
+          </listitem>
         </itemizedlist></para>
 
       <sect3>
@@ -955,6 +1033,15 @@ IOAPIC:          on
             </listitem>
 
             <listitem>
+              <para><computeroutput>--nattbindip<1-N>
+              <ip;></computeroutput>: VirtualBox's NAT engine normally routes 
+              TCP/IP packets through the default interface assigned by the host's 
+              TCP/IP stack. Use this option to instruct the NAT engine to bind 
+              to a specified IP address instead. (Please see <xref
+              linkend="nat-adv-settings" /> for details).</para>
+            </listitem>
+
+            <listitem>
               <para><computeroutput>--natdnspassdomain<1-N>
               on|off</computeroutput>: This option specifies whether the
               built-in DHCP server passes the domain name for network name
@@ -1097,9 +1184,21 @@ IOAPIC:          on
           </listitem>
 
           <listitem>
-            <para><computeroutput>--audio none|null|oss</computeroutput>: With
+            <para><computeroutput>--audio none|null|oss|alsa|pulse</computeroutput>: With
             this option, you can set whether the VM should have audio
-            support.</para>
+            support, and if so - which type.</para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--audiocontroller ac97|hda|sb16</computeroutput>: With
+            this option, you can specify the audio controller to be used with this VM.
+            </para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--audiocodec stac9700|ad1980|stac9221|sb16</computeroutput>: With
+            this option, you can specify the audio codec to be used with this VM.
+            </para>
           </listitem>
 
           <listitem>
@@ -1395,10 +1494,46 @@ IOAPIC:          on
             Allows to configure tracing. In particular this defines which group of
             tracepoints are enabled.</para>
           </listitem>
+          <listitem>
+            <para><computeroutput>--tracing-allow-vm-access on|off</computeroutput>:
+            Enables/disables(default) VM access to the tracebuffer.</para>
+          </listitem>
         </itemizedlist>
       </para>
     </sect2>
 
+    <sect2 id="vboxmanage-usbcardreader">
+      <title>USB card reader settings</title>
+
+      <para>The following setting defines access to a USB Card Reader by the guest environment.
+      USB card readers are typically used for accessing data on memory cards such as 
+      CompactFlash (CF), Secure Digital (SD) or MultiMediaCard (MMC).</para>
+      <itemizedlist>
+          <listitem>
+            <para><computeroutput>--usbcardreader on|off</computeroutput>:
+            Enables/disables the USB card reader interface.</para>
+          </listitem>
+      </itemizedlist>
+    </sect2>
+
+    <sect2 id="vboxmanage-autostart">
+      <title>Auto starting VMs during host system boot</title>
+
+      <para>These settings configure the VM autostart feature,
+      which automatically starts the VM at host system boot-up. 
+      Note that there are pre-requisities that need to be addressed before using this feature. 
+      See <xref lang="" linkend="autostart" /> for more details.</para>
+      <itemizedlist>
+        <listitem>
+          <para><computeroutput>--autostart on|off</computeroutput>:
+          Enables/disables VM autostart at host system boot-up, using specified user name.</para>
+        </listitem>
+        <listitem>
+          <para><computeroutput>--autostart-delay <seconds></computeroutput>:
+          Specifies a delay (seconds) following host system boot-up, before VM autostarts.</para>
+        </listitem>
+      </itemizedlist>
+    </sect2>
   </sect1>
 
   <sect1 id="vboxmanage-clonevm">
@@ -1741,7 +1876,7 @@ Virtual system 0:
 
       <listitem>
         <para><computeroutput>nic<1-N>
-        null|nat|bridged|intnet|hostonly|generic</computeroutput>: With this, you can
+        null|nat|bridged|intnet|hostonly|generic|natnetwork[<devicename>]</computeroutput>: With this, you can
         set, for each of the VM's virtual network cards, what type of
         networking should be available. They can be not connected to the host
         (<computeroutput>null</computeroutput>), use network address
@@ -1749,10 +1884,11 @@ Virtual system 0:
         (<computeroutput>bridged</computeroutput>) or communicate with other
         virtual machines using internal networking
         (<computeroutput>intnet</computeroutput>) or host-only networking
-        (<computeroutput>hostonly</computeroutput>) or access to rarely used
+        (<computeroutput>hostonly</computeroutput>) or natnetwork networking
+        (<computeroutput>natnetwork</computeroutput>) or access to rarely used
         sub-modes
-        (<computeroutput>generic</computeroutput>). These options correspond
-        to the modes which are described in detail in <xref
+        (<computeroutput>generic</computeroutput>). 
+        These options correspond to the modes which are described in detail in <xref
         linkend="networkingmodes" />.</para>
       </listitem>
 
@@ -1798,7 +1934,23 @@ Virtual system 0:
       </listitem>
 
       <listitem>
-        <para>The <computeroutput>guestmemoryballoon</computeroutput>
+        <para><computeroutput>natpf<1-N>
+        [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>],
+        <guestport></computeroutput>: This option defines a NAT
+        port-forwarding rule (please see <xref linkend="natforward"/>
+        for details).
+        </para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>natpf<1-N> delete
+        <name></computeroutput>: This option deletes a NAT
+        port-forwarding rule (please see <xref linkend="natforward"/>
+        for details).</para>
+      </listitem>
+
+      <listitem>
+        <para>The <computeroutput>guestmemoryballoon<balloon size in MB></computeroutput>
         operation changes the size of the guest memory balloon, that is,
         memory allocated by the VirtualBox Guest Additions from the guest
         operating system and returned to the hypervisor for re-use by other
@@ -1807,11 +1959,12 @@ Virtual system 0:
       </listitem>
 
       <listitem>
-        <para><computeroutput>usbattach</computeroutput> and
-        <computeroutput>usbdettach</computeroutput> make host USB devices
-        visible to the virtual machine on the fly, without the need for
+        <para><computeroutput>usbattach<uuid|address> [--capturefile <filename>]</computeroutput></para> 
+        <para>and <computeroutput>usbdetach <uuid|address> [--capturefile <filename>]</computeroutput> 
+        make host USB devices visible/invisible to the virtual machine on the fly, without the need for
         creating filters first. The USB devices can be specified by UUID
-        (unique identifier) or by address on the host system.</para>
+        (unique identifier) or by address on the host system. Use the --capturefile 
+        option to specify the absolute path of a file for writing activity logging data.</para>
 
         <para>You can use <computeroutput>VBoxManage list
         usbhost</computeroutput> to locate this information.</para>
@@ -1849,6 +2002,12 @@ Virtual system 0:
         linkend="vboxmanage-modifyvm-other" />.</para>
       </listitem>
 
+      <listitem>
+        <para><computeroutput>vrdevideochannelquality
+        <percent></computeroutput>: Sets the image quality for video
+        redirection; see <xref lang=""
+        linkend="vrde-videochannel" />.</para>
+      </listitem>
 
       <listitem>
         <para><computeroutput>setvideomodehint</computeroutput> requests that
@@ -1933,7 +2092,38 @@ Virtual system 0:
         <xref linkend="autologon" />.</para>
       </listitem>
 
-      <!-- @todo r=andy Document teleport! -->
+      <listitem>
+        <para><computeroutput>teleport --host <name> --port <port></computeroutput> 
+        can be used to configure a VM as a target for teleporting. 
+        <name> specifies the virtual machine name. <port> specifies the port on the 
+        virtual machine which should listen for a teleporting request from another
+        virtual machine. It can be any free TCP/IP port number (e.g. 6000);
+        See <xref linkend="teleporting" /> for an introduction.</para>
+        <itemizedlist>
+          <listitem>
+            <para><computeroutput>--maxdowntime <msec></computeroutput>:
+            Optional - specifies the maximum downtime (millseconds) for the 
+            teleporting target VM.</para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--password
+            <password></computeroutput>: 
+            Optional - indicates that the teleporting request will only succeed if the
+            source machine specifies the same password as the one given with
+            this command.</para>
+          </listitem>
+
+          <listitem>
+            <para><computeroutput>--passwordfile
+            <password file></computeroutput>: 
+            Optional - indicates that the teleporting request will only succeed if the
+            source machine specifies the same password as the one specified
+            in the file given with this command. Use <computeroutput>stdin</computeroutput>
+            to read the password from stdin.</para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
 
       <listitem>
         <para><computeroutput>plugcpu|unplugcpu
@@ -1951,7 +2141,112 @@ Virtual system 0:
         can use up to 50% of a single host CPU.</para>
       </listitem>
 
-      <!-- @todo r=andy Document webcam! -->
+      <listitem>
+        <para><computeroutput>webcam 
+        attach <path|alias> [<key=value>[;<key=value>...]]</computeroutput>: This operation 
+        attaches a webcam to a running VM. Specify the absolute path of the 
+        webcam on the host operating system, or use its alias (obtained by using the command: VBoxManage 
+        list webcams).</para>
+
+        <para>Note that alias '.0' means default video input device on the host operating system, '.1', '.2', 
+        etc. mean first, second, etc. video input device. The device order is host-specific.</para>
+
+        <para>The optional settings parameter is a ';' delimited list of name/value pairs, enabling configuration 
+        of the emulated webcam device.</para>
+
+        <para>The following settings are supported:</para>
+
+        <para>MaxFramerate (default no maximum limit) - this specifies the highest rate (Frames/sec) at which 
+        video frames are sent to the guest. Higher frame rates increase CPU load, so this setting can be useful 
+        when there is a need to reduce CPU load.  Its default 'value' is "no maximum limit", thus enabling the 
+        guest to use all frame rates supported by the host webcam.</para>
+
+        <para>MaxPayloadTransferSize (default 3060 bytes) - this specifies the maximum number of bytes the emulated 
+        webcam can send to the guest in one buffer. The default is used by some webcams. Higher values can 
+        slightly reduce CPU load, if the guest is able to use larger buffers. 
+        Note that higher MaxPayloadTransferSize values may be not supported by some guest operating systems.</para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>webcam 
+        detach <path|alias></computeroutput>: This operation 
+        detaches a webcam from a running VM. Specify the absolute path of the 
+        webcam on the host, or use its alias (obtained from webcam list below).</para>
+        <para>Note the points below relating to specific Host Operating Systems:</para>
+
+        <para>Windows hosts</para>
+
+        <para>When the webcam device is detached from the host, the emulated webcam device 
+        is automatically detached from the guest.</para>
+
+        <para>Mac OS X hosts</para>
+
+        <para>OS X version 10.7 or newer is required.</para>
+
+        <para>When the webcam device is detached from the host, the emulated webcam device remains i
+        attached to the guest and must be manually detached using the 
+        VBoxManage controlvm "VM name" webcam detach command.</para>
+
+        <para>Linux hosts</para>
+
+        <para>When the webcam is detached from the host, the emulated webcam device is automatically detached 
+        from the guest only if the webcam is streaming video. If the emulated webcam is inactive, it     
+        should be manually detached using the VBoxManage controlvm "VM name" webcam detach command.</para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>webcam list</computeroutput>: This operation 
+        lists webcams attached to the running VM.
+        The output is a list of absolute paths or aliases that were used for attaching the webcams 
+        to the VM using the 'webcam attach' command above.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>addencpassword 
+        <id> <password file>|- [--removeonsuspend <yes|no>]</computeroutput>: This operation 
+        supplies an encrypted VM specified by <id> with the encryption password to enable a headless start. 
+        Either specify the absolute path of a password file on the host file system: <password file>, or 
+        use a '-' to instruct VBoxManage to prompt the user for the encryption password. </para>
+
+        <para><computeroutput>--removeonsuspend <yes|no></computeroutput> specifies whether to remove/keep 
+        the password from/in VM memory when the VM is suspended. If the VM has been suspended and the password has 
+        been removed, the user needs to resupply the password before the VM can be resumed. This feature is useful 
+        in cases where the user doesn't want the password to be stored in VM memory, and the VM is suspended by a   
+        host suspend event.</para>
+
+        <para>Note: On VirtualBox versions 5.0 and later, data stored on hard disk images can be transparently 
+        encrypted for the guest. VirtualBox uses the AES algorithm in XTS mode and supports 128 or 256 
+        bit data encryption keys (DEK). The DEK is stored encrypted in the medium properties, and is 
+        decrypted during VM startup by supplying the encryption password.</para>
+
+        <para>The "VBoxManage encryptmedium" operation is used to create a DEK encrypted medium. 
+        See <xref linkend="diskencryption-encryption" />" for details.
+        When starting an encrypted VM from a VirtualBox GUI app, the user will be prompted for the 
+        encryption password.</para>
+
+        <para>For a headless encrypted VM start, use:</para>
+    
+        <para>VBoxManage startvm "vmname" --type headless</para>
+
+        <para>followed by:</para>
+
+        <para>VBoxManage "vmname" controlvm "vmname" addencpassword ...</para>
+
+        <para>to supply the encryption password required.</para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>removeencpassword <id></computeroutput>: This operation
+        removes encryption password authorization for password <id> for all encrypted media 
+        attached to the VM.</para>
+      </listitem>
+
+      <listitem>
+        <para><computeroutput>removeallencpasswords</computeroutput>: This operation
+        removes encryption password authorization for all passwords for all 
+        encrypted media attached to the VM.</para>
+      </listitem>
 
     </itemizedlist>
   </sect1>
@@ -2897,7 +3192,6 @@ Value: 2006.01.01</screen>
           </para></glossdef>
         </glossentry>
 
-
         <glossentry>
           <glossterm><computeroutput>vrdeauthlibrary</computeroutput></glossterm>
 
@@ -3145,7 +3439,7 @@ Value: 2006.01.01</screen>
     <para>guestcontrol has two sets of subcommands. The first set requires guest
       credentials to be specified, the second does not.</para>
 
-    <para>The first set of subcommands are of the form:</para>
+    <para>The first set of subcommands is of the form:</para>
     <screen>VBoxManage guestcontrol <uuid|vmname> <sub-command>
             [--username <name> ]
             [--passwordfile <file> | --password <password>]
@@ -3167,7 +3461,7 @@ Value: 2006.01.01</screen>
         <glossentry>
           <glossterm><computeroutput><uuid|vmname></computeroutput></glossterm>
             <glossdef>
-              <para>The VM UUID or VM name. Mandatory.</para>
+              <para>Specifies the VM UUID or VM name. Mandatory.</para>
             </glossdef>
         </glossentry>
    
@@ -3218,16 +3512,16 @@ Value: 2006.01.01</screen>
           </screen>
             <glosslist>
               <glossentry>
-                <glossterm><computeroutput>--exe "<path to executable>"</computeroutput></glossterm>
-                <glossdef><para>Specifies the absolute path of the executable on the guest OS file system. Mandatory. e.g.:
-                  <computeroutput>C:\Windows\System32\calc.exe</computeroutput>.</para>
+                <glossterm><computeroutput><uuid|vmname></computeroutput></glossterm>
+                <glossdef>
+                  <para>Specifies the VM UUID or VM name. Mandatory.</para>
                 </glossdef>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput><uuid|vmname></computeroutput></glossterm>
-                <glossdef>
-                  <para>Specifies the VM UUID or VM name. Mandatory.</para>
+                <glossterm><computeroutput>--exe <path to executable></computeroutput></glossterm>
+                <glossdef><para>Specifies the absolute path of the executable on the guest OS file system. Mandatory. e.g.:
+                  <computeroutput>C:\Windows\System32\calc.exe</computeroutput>.</para>
                 </glossdef>
               </glossentry>
 
@@ -3241,7 +3535,7 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>-E|--putenv "<NAME>=<VALUE>"
+                <glossterm><computeroutput>-E|--putenv <NAME>=<VALUE>
                 </computeroutput></glossterm>
                 <glossdef>
                   <para>Sets/modifies/unsets environment variable(s) in the environment in which the program will run. Optional.</para>
@@ -3286,7 +3580,7 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>>--no-wait-stderr|--wait-stderr</computeroutput></glossterm>
+                <glossterm><computeroutput>--no-wait-stderr|--wait-stderr</computeroutput></glossterm>
                 <glossdef>
                   <para>Does not wait/waits until the guest process ends and receives its exit code and reason/flags. 
                   In case of --wait-stderr - while the process runs, VBoxManage receives its stderr. Optional.</para>
@@ -3354,12 +3648,12 @@ Value: 2006.01.01</screen>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>start</computeroutput></emphasis>,
+          <para><emphasis role="bold"><computeroutput>start</computeroutput></emphasis>
           Executes a guest program until it completes.</para>
           <screen>VBoxManage guestcontrol <uuid|vmname> start [common-options]
-            [--exe <path to executable>] [--timeout <msec>]
-            [-E|--putenv <NAME>[=<VALUE>]] [--unquoted-args]
-            [--ignore-operhaned-processes] [--profile]
+           [--exe <path to executable>] [--timeout <msec>]
+           [-E|--putenv <NAME>[=<VALUE>]] [--unquoted-args]
+           [--ignore-operhaned-processes] [--profile]
             -- <program/arg0> [argument1] ... [argumentN]]
           </screen>
 
@@ -3372,7 +3666,7 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>--exe "<path to executable>"</computeroutput></glossterm>
+                <glossterm><computeroutput>--exe <path to executable></computeroutput></glossterm>
                 <glossdef><para>Specifies the absolute path of the executable on the guest OS file system. Mandatory. e.g.:
                   <computeroutput>C:\Windows\System32\calc.exe</computeroutput></para>
                 </glossdef>
@@ -3387,7 +3681,7 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>-E|--putenv "<NAME>=<VALUE>"
+                <glossterm><computeroutput>-E|--putenv <NAME>=<VALUE>
                 </computeroutput></glossterm>
                 <glossdef>
                   <para>Sets/modifies/unsets environment variable(s) in the environment in which the program will run. Optional.</para>
@@ -3412,14 +3706,14 @@ Value: 2006.01.01</screen>
               <glossentry>
                 <glossterm><computeroutput>--ignore-operhaned-processes</computeroutput></glossterm>
                 <glossdef>
-                  <para>Ignores orphaned processes. Not implemented yet. Optional.</para>
+                  <para>Ignores orphaned processes. Not yet implemented. Optional.</para>
                 </glossdef>
               </glossentry>
 
               <glossentry>
                 <glossterm><computeroutput>--profile</computeroutput></glossterm>
                 <glossdef>
-                  <para>Use a profile. Not implemented yet. Optional.</para>
+                  <para>Use a profile. Not yet implemented. Optional.</para>
                 </glossdef>
               </glossentry>
 
@@ -3469,12 +3763,12 @@ Value: 2006.01.01</screen>
 
         <listitem>
           <para><emphasis role="bold"><computeroutput>copyfrom</computeroutput></emphasis>
-          This command enables copying of files from the guest to the host file system. 
+          Copies files from the guest to the host file system. 
           (Note - only with Guest Additions 4.0 or later installed).</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> copyfrom [common-options]
+           [--dryrun] [--follow] [--R|recursive]
             --target-directory <host-dst-dir>
-            [--dryrun] [--follow] [--R|recursive]
             <guest-src0> [<guest-src1> [...]] </screen>
 
           <para>Where the parameters are:<glosslist>
@@ -3486,14 +3780,6 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>--target-directory <host-dst-dir></computeroutput></glossterm>
-                <glossdef>
-                  <para>Specifies the absolute path of the host file system destination directory. Mandatory. e.g.
-                  <computeroutput>C:\Temp</computeroutput>.</para>
-                </glossdef>
-              </glossentry>
-
-              <glossentry>
                 <glossterm><computeroutput>--dryrun</computeroutput></glossterm>
                 <glossdef>
                   <para>Instructs VBoxManage to perform a dry run instead of an actual file copying 
@@ -3517,6 +3803,14 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
+                <glossterm><computeroutput>--target-directory <host-dst-dir></computeroutput></glossterm>
+                <glossdef>
+                  <para>Specifies the absolute path of the host file system destination directory. Mandatory. e.g.
+                  <computeroutput>C:\Temp</computeroutput>.</para>
+                </glossdef>
+              </glossentry>
+
+              <glossentry>
                 <glossterm><computeroutput><guest-src0> [<guest-src1> [...]]</computeroutput></glossterm>
                 <glossdef>
                   <para>Specifies the absolute path(s) of guest file system file(s) to be copied. Mandatory. e.g.
@@ -3530,13 +3824,13 @@ Value: 2006.01.01</screen>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>copyto</computeroutput></emphasis>,
-          Copies from the host to a guest file system. 
+          <para><emphasis role="bold"><computeroutput>copyto</computeroutput></emphasis>
+          Copies files from the host to the guest file system. 
           (Note - only with Guest Additions 4.0 or later installed).</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> copyto [common-options]
+           [--dryrun] [--follow] [--R|recursive]
             --target-directory <guest-dst>
-            [--dryrun] [--follow] [--R|recursive]
             <host-src0> [<host-src1> [...]] </screen>
 
           <para>Where the parameters are:<glosslist>
@@ -3548,14 +3842,6 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>--target-directory <guest-dst></computeroutput></glossterm>
-                <glossdef>
-                  <para>Specifies the absolute path of the guest file system destination directory. Mandatory. e.g.
-                  <computeroutput>C:\Temp</computeroutput>.</para>
-                </glossdef>
-              </glossentry>
-
-              <glossentry>
                 <glossterm><computeroutput>--dryrun</computeroutput></glossterm>
                 <glossdef>
                   <para>Instructs VBoxManage to perform a dry run instead of an actual file copying 
@@ -3579,6 +3865,14 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
+                <glossterm><computeroutput>--target-directory <guest-dst></computeroutput></glossterm>
+                <glossdef>
+                  <para>Specifies the absolute path of the guest file system destination directory. Mandatory. e.g.
+                  <computeroutput>C:\Temp</computeroutput>.</para>
+                </glossdef>
+              </glossentry>
+
+              <glossentry>
                 <glossterm><computeroutput><host-src0> [<host-src1> [...]]</computeroutput></glossterm>
                 <glossdef>
                   <para>Specifies the absolute path(s) of host file system file(s) to be copied. Mandatory. e.g.
@@ -3592,14 +3886,13 @@ Value: 2006.01.01</screen>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>md|mkdir|createdir|createdirectory</computeroutput></emphasis>,
+          <para><emphasis role="bold"><computeroutput>md|mkdir|createdir|createdirectory</computeroutput></emphasis>
           Creates one or more directory(ies) on the guest file system. 
           (Note - only with Guest Additions 4.0 or later installed).</para>
 
-          <screen>VBoxManage guestcontrol <uuid|vmname>  md|mkdir|createdir|createdirectory
-            [common-options ]
+          <screen>VBoxManage guestcontrol <uuid|vmname>  md|mkdir|createdir|createdirectory [common-options]
             [--parents] [--mode <mode>]
-            <guest directory> [...] </screen>
+            <guest-dir0> [<guest-dir1> [...]] </screen>
 
           <para>Where the parameters are: <glosslist>
               <glossentry>
@@ -3630,11 +3923,11 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput><guest directory>... </computeroutput></glossterm>
+                <glossterm><computeroutput><guest-dir0> [<guest-dir1> [...]]</computeroutput></glossterm>
                 <glossdef>
-                  <para>Specifies list of absolute paths of directory(ies) to be created on
+                  <para>Specifies list of absolute path(s) of directory(ies) to be created on
                   guest file system. Mandatory. 
-                  e.g. <computeroutput>D:\Foo\Bar</computeroutput> </para>
+                  e.g. <computeroutput>D:\Foo\Bar</computeroutput>.</para>
                   <para>All parent directories must already exist
                   unless switch <computeroutput>--parents</computeroutput> used. 
                   (e.g. in the above example <computeroutput>D:\Foo</computeroutput>). 
@@ -3651,9 +3944,9 @@ Value: 2006.01.01</screen>
           <para><emphasis role="bold"><computeroutput>rmdir|removedir|removedirectory</computeroutput></emphasis>
           Deletes specified guest file system directories. (Only with installed Guest Additions 4.3.2 and later).</para>
 
-          <screen>VBoxManage guestcontrol <uuid|vmname> removedirectory|removedir|rmdir [common-options]
-            [--recursive|-R]
-            <guest directory>... 
+          <screen>VBoxManage guestcontrol <uuid|vmname> rmdir|removedir|removedirectory [common-options]
+           [--recursive|-R]
+            <guest-dir0> [<guest-dir1> [...]]
           </screen>   
 
           <para>Where the parameters are: <glosslist>
@@ -3672,10 +3965,10 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput><guest directory>...</computeroutput></glossterm>
+                <glossterm><computeroutput><guest-dir0> [<guest-dir1> [...]]</computeroutput></glossterm>
                 <glossdef>
-                  <para>Specifies the absolute path(s) of directory(ies) to be deleted on
-                  guest file system. Mandatory. Wildcards are allowed. e.g. <computeroutput>D:\Foo\Bar</computeroutput>.  
+                  <para>Specifies list of the absolute path(s) of directory(ies) to be deleted on
+                  guest file system. Mandatory. Wildcards are allowed. e.g. <computeroutput>D:\Foo\*Bar</computeroutput>.  
                   The specified user must have sufficient rights to delete the
                   specified directory(ies).</para>
                 </glossdef>
@@ -3684,13 +3977,13 @@ Value: 2006.01.01</screen>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>removefile|rm</computeroutput></emphasis>
+          <para><emphasis role="bold"><computeroutput>rm|removefile</computeroutput></emphasis>
           Deletes specified files on the guest file system. (Only with installed Guest
           Additions 4.3.2 and later).</para>
 
-          <screen>VBoxManage guestcontrol <uuid|vmname> removefile|rm [common-options]
-            [-f|--force]
-            <guest file>... </screen>
+          <screen>VBoxManage guestcontrol <uuid|vmname> rm|removefile [common-options]
+           [-f|--force]
+            <guest-file0> [<guest-file1> [...]] </screen>
 
           <para>Where the parameters are: <glosslist>
               <glossentry>
@@ -3708,10 +4001,10 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput><guest file>...</computeroutput></glossterm>
+                <glossterm><computeroutput><guest-file0> [<guest-file1> [...]]</computeroutput></glossterm>
                 <glossdef>
-                  <para>Specifies absolute path(s) of file(s) to be deleted on guest file system. Mandatory.
-                   Wildcards are allowed. e.g. <computeroutput>D:\Foo\Bar\text.txt</computeroutput>.  
+                  <para>Specifies list of absolute path(s) of file(s) to be deleted on guest file system. Mandatory.
+                   Wildcards are allowed. e.g. <computeroutput>D:\Foo\Bar\text*.txt</computeroutput>.  
                    The specified user should have sufficient rights to delete the specified file(s).</para>
                 </glossdef>
               </glossentry>
@@ -3725,7 +4018,7 @@ Value: 2006.01.01</screen>
           Additions 4.3.2 and later).</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> mv|move|ren|rename [common-options]
-            <source>... <dest> </screen>
+           <guest-source0> [<guest-source1> [...]] <guest-dest></screen>
 
           <para>Where the parameters are: <glosslist>
               <glossentry>
@@ -3736,10 +4029,11 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput><source>... </computeroutput></glossterm>
+                <glossterm><computeroutput><guest-source0> [<guest-source1> [...]]</computeroutput></glossterm>
                 <glossdef>
-                  <para>Specifies absolute path(s) of file(s) to be moved on guest file system. Mandatory.
-                  Wildcards are allowed. The specified user should  have sufficient rights to 
+                  <para>Specifies absolute path(s) of file(s) and/or single directory to be moved/renamed on guest 
+                  file system. Mandatory.
+                  Wildcards are allowed in file names(s). The specified user should have sufficient rights to 
                   access the specified file(s).</para>
                 </glossdef>
               </glossentry>
@@ -3747,8 +4041,9 @@ Value: 2006.01.01</screen>
               <glossentry>
                 <glossterm><computeroutput><dest></computeroutput></glossterm>
                 <glossdef>
-                  <para>Specifies the absolute path of the destination file/directory(ies) to which the file(s)
-                  are to be moved. This can be a directory, or a file if only one file to be moved. Mandatory.
+                  <para>Specifies the absolute path of the destination file/directory to which the file(s)
+                  are to be moved. Mandatory. If only one file to be moved, <dest> can be file or directory, 
+                  else it must be a directory.
                   The specified user must have sufficient rights to access the destination file/directory.</para>
                 </glossdef>
               </glossentry>
@@ -3763,7 +4058,7 @@ Value: 2006.01.01</screen>
           (Only with installed Guest Additions 4.2 and later).</para>
 
             <screen>VBoxManage guestcontrol <uuid|vmname> mktemp|createtemp|createtemporary [common-options]
-            [--directory] [--secure] [--mode <mode>] [--tmpdir <directory>]
+           [--directory] [--secure] [--mode <mode>] [--tmpdir <directory>]
             <template> 
             </screen>
 
@@ -3793,6 +4088,15 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
+                <glossterm><computeroutput>--mode <mode></computeroutput></glossterm>
+                <glossdef>
+                  <para>Specifies the permission mode of the specified directory. Optional. 
+                  Currently only octal modes (e.g. <computeroutput>0755</computeroutput>) 
+                  are supported.</para>
+                </glossdef>
+              </glossentry>
+
+              <glossentry>
                 <glossterm><computeroutput>--tmpdir <directory></computeroutput></glossterm>
                 <glossdef>
                   <para>
@@ -3804,15 +4108,6 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>--mode <mode></computeroutput></glossterm>
-                <glossdef>
-                  <para>Specifies the permission mode of the specified directory. Optional. 
-                  Currently only octal modes (e.g. <computeroutput>0755</computeroutput>) 
-                  are supported.</para>
-                </glossdef>
-              </glossentry>
-
-              <glossentry>
                 <glossterm><computeroutput><template></computeroutput></glossterm>
                 <glossdef>
                   <para>Specifies a file name without a directory path, containing at least one sequence comprising 
@@ -3824,11 +4119,11 @@ Value: 2006.01.01</screen>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>stat</computeroutput></emphasis>,
+          <para><emphasis role="bold"><computeroutput>stat</computeroutput></emphasis>
           Displays file or file system status(es) on the guest.</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> stat [common-options]
-            <file1>[... filen] </screen>
+           <file0> [<file1> [...]]</screen>
 
           <para>Where the parameters are: <glosslist>
               <glossentry>
@@ -3839,12 +4134,12 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput><file1>[... filen]</computeroutput></glossterm>
+                <glossterm><computeroutput><file0> [<file1> [...]]</computeroutput></glossterm>
                 <glossdef>
-                  <para>Specifies absolute path(s) of file(s) on guest file system. Mandatory.
+                  <para>Specifies absolute path(s) of file(s) and/or file system(s) on guest file system. Mandatory.
                   e.g. <computeroutput>/home/foo/a.out</computeroutput>.
                   The specified user should have sufficient rights to access
-                  the specified file/file system(s).</para>
+                  the specified file(s)/file system(s).</para>
                 </glossdef>
               </glossentry>
             </glosslist></para>
@@ -3852,9 +4147,9 @@ Value: 2006.01.01</screen>
       </itemizedlist>
     </para>
 
-    <para>The second set of subcommands are of the form:</para>
+    <para>The second set of subcommands is of the form:</para>
     <screen>VBoxManage guestcontrol <uuid|vmname> <sub-command>
-            [-v|--verbose] [-q|quiet] ...
+           [-v|--verbose] [-q|quiet] ...
     </screen>
 
     <para>The "common-options" are:</para>
@@ -3879,12 +4174,12 @@ Value: 2006.01.01</screen>
 
     <para>The second set of subcommands: <itemizedlist>
         <listitem>
-          <para><emphasis role="bold"><computeroutput>list</computeroutput></emphasis>,
+          <para><emphasis role="bold"><computeroutput>list</computeroutput></emphasis>
           Lists guest control configuration and status data, e.g. open guest sessions,
           guest processes and files.</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> list [common-opts]
-            <all|sessions|processes|files> </screen>
+           <all|sessions|processes|files> </screen>
 
           <para>Where the parameters are: <glosslist>
             <glossentry>
@@ -3893,6 +4188,7 @@ Value: 2006.01.01</screen>
                 <para>Specifies the VM UUID or VM name. Mandatory.</para>
               </glossdef>
             </glossentry>
+
             <glossentry>
               <glossterm><computeroutput>all|sessions|processes|files</computeroutput></glossterm>
               <glossdef>
@@ -3900,17 +4196,18 @@ Value: 2006.01.01</screen>
                 Mandatory.</para>
               </glossdef>
             </glossentry>
+
           </glosslist></para>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>closeprocess</computeroutput></emphasis>,
-          Terminates guest processes (specified by PID(s))running in guest session(s) 
+          <para><emphasis role="bold"><computeroutput>closeprocess</computeroutput></emphasis>
+          Terminates guest processes specified by PID(s))running in guest session(s),
           specified by the session ID or name(s).</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> closeprocess [common-options]
-            --session-id <ID> | --session-name <name or pattern>
-          <PID1> [... <PID n>] </screen>
+           --session-id <ID> | --session-name <name or pattern>
+           <PID0> [<PID1> [...]] </screen>
 
           <para>Where the parameters are: <glosslist>
             <glossentry>
@@ -3928,7 +4225,7 @@ Value: 2006.01.01</screen>
             </glossentry>
 
             <glossentry>
-              <glossterm><computeroutput>--session-name</computeroutput></glossterm>
+              <glossterm><computeroutput>--session-name <name or pattern></computeroutput></glossterm>
               <glossdef>
                 <para>Specifies the guest session by its name, or multiple sessions 
                 using a pattern containing wildcards. Optional.</para>
@@ -3936,7 +4233,7 @@ Value: 2006.01.01</screen>
             </glossentry>
 
             <glossentry>
-              <glossterm><computeroutput><PID1> [... <PID n>]</computeroutput></glossterm>
+              <glossterm><computeroutput><PID0> [<PID1> [...]]</computeroutput></glossterm>
               <glossdef>
                 <para>Specifies a list of process identifiers (PIDs) of guest processes to be terminated. Mandatory.</para>
               </glossdef>
@@ -3945,13 +4242,11 @@ Value: 2006.01.01</screen>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>closesession</computeroutput></emphasis>,
+          <para><emphasis role="bold"><computeroutput>closesession</computeroutput></emphasis>
           Closes specified guest sessions, specified either by session ID or name.</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> closesession [common-options]
-            --session-id <ID>
-          | --session-name <name or pattern>
-          | --all </screen>
+           --session-id <ID> | --session-name <name or pattern> | --all </screen>
 
           <para>Where the parameters are: <glosslist>
             <glossentry>
@@ -3962,14 +4257,14 @@ Value: 2006.01.01</screen>
             </glossentry>
 
             <glossentry>
-              <glossterm><computeroutput>--session-id</computeroutput></glossterm>
+              <glossterm><computeroutput>--session-id <ID></computeroutput></glossterm>
               <glossdef>
                 <para>Specifies the guest session to be closed by ID. Optional.</para>
               </glossdef>
             </glossentry>
 
              <glossentry>
-              <glossterm><computeroutput>--session-name</computeroutput></glossterm>
+              <glossterm><computeroutput>--session-name <name or pattern></computeroutput></glossterm>
               <glossdef>
                 <para>Specifies the guest session to be closed by name. Optional.
                 Multiple sessions can be specified by using a pattern
@@ -3992,8 +4287,9 @@ Value: 2006.01.01</screen>
           (Only already installed Guest Additions 4.0 and later).</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> updatega|updateadditions|updateguestadditions [common-options]
-            [--source "<New .ISO path>"]
-            [--wait-start] [-- [<argument1>] ... [<argumentN>]]</screen>
+           [--source <New .ISO path>]
+           [--wait-start] 
+           [-- <argument0> [<argument1> [...]]]</screen>
 
           <para>Where the parameters are: <glosslist>
               <glossentry>
@@ -4004,9 +4300,9 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>--source</computeroutput> "<New ISO path>"</glossterm>
+                <glossterm><computeroutput>--source</computeroutput> <New .ISO path></glossterm>
                 <glossdef>
-                  <para>Specifies the absolute path on guest file system of ISO file for Guest Additions update. Mandatory.</para>
+                  <para>Specifies the absolute path on guest file system of the .ISO file for Guest Additions update. Mandatory.</para>
                 </glossdef>
               </glossentry>
 
@@ -4022,7 +4318,7 @@ Value: 2006.01.01</screen>
               </glossentry>
 
               <glossentry>
-                <glossterm><computeroutput>[-- [<argument1>] ... [<argumentN>]]</computeroutput></glossterm>
+                <glossterm><computeroutput>[-- <argument0> [<argument1> [...]]]</computeroutput></glossterm>
                 <glossdef>
                   <para>Specifies optional command line arguments to be supplied to the Guest Additions
                    updater. Useful for retrofitting features which are not currently installed.</para>
@@ -4033,7 +4329,7 @@ Value: 2006.01.01</screen>
         </listitem>
 
         <listitem>
-          <para><emphasis role="bold"><computeroutput>watch</computeroutput></emphasis>,
+          <para><emphasis role="bold"><computeroutput>watch</computeroutput></emphasis>
           This subcommand prints current guest control activity.</para>
 
           <screen>VBoxManage guestcontrol <uuid|vmname> watch [common-options]
diff --git a/doc/manual/fr_FR/images/vbox-sdl.png b/doc/manual/fr_FR/images/vbox-sdl.png
index bae1f9f..2c5b9fb 100644
Binary files a/doc/manual/fr_FR/images/vbox-sdl.png and b/doc/manual/fr_FR/images/vbox-sdl.png differ
diff --git a/doc/manual/user_ChangeLogImpl.xml b/doc/manual/user_ChangeLogImpl.xml
index 3bdd3df..a178081 100644
--- a/doc/manual/user_ChangeLogImpl.xml
+++ b/doc/manual/user_ChangeLogImpl.xml
@@ -3,6 +3,126 @@
 <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.2 (2016-07-21)</title>
+
+    <para>This is a maintenance release. The following items were fixed and/or
+      added:</para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>VMM: several fixes</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: fixed screenshot if the VM is started in separate mode</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: fixed issue with double-click/opening registered file types
+          (.vbox and .vbox-extpack) on Mac OS X (bug #15648)</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: fixed a bug which made it impossible close some error/warning
+          messages using the close button</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: weakened the control over the VM window behavior allowing to resize
+          it across multiple screens and to use in Snap Assist techniques</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: jump to the second tab of the session information window
+          (5.1.0 regression)</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: fix for Alt-Tab</para>
+      </listitem>
+
+      <listitem>
+        <para>Storage: fixed creating fixed size VHD images (bug #15601)</para>
+      </listitem>
+
+      <listitem>
+        <para>Storage: fixed a hang during power off if the VM was suspended
+          before and a NVMe controller is configured</para>
+      </listitem>
+
+      <listitem>
+        <para>USB: fixed a crash under certain conditions</para>
+      </listitem>
+
+      <listitem>
+        <para>Audio: make AC'97 volume control work again (5.1.0 regression;
+          bug #15598)</para>
+      </listitem>
+
+      <listitem>
+        <para>Audio: fixed rare VM hangs when using AC'97 emulation</para>
+      </listitem>
+
+      <listitem>
+        <para>Audio: SB16 fixes</para>
+      </listitem>
+
+      <listitem>
+        <para>EFI: fixed access to devices attached to SATA port 2 and
+          higher (bug #15607)</para>
+      </listitem>
+
+      <listitem>
+        <para>OVA: fix for checking certain signatures</para>
+      </listitem>
+
+      <listitem>
+        <para>OVA: fixed MAC address generation for appliances created by
+          VirtualBox (5.1.0 regression; bug #15623)</para>
+      </listitem>
+
+      <listitem>
+        <para>API: fixed audio settings handling for older config files
+          (bug #15626)</para>
+      </listitem>
+
+      <listitem>
+        <para>API: fixed truncation of USB product/vendor IDs on Linux
+          hosts (5.1.0 regression; bug #15644)</para>
+      </listitem>
+
+      <listitem>
+        <para>API: fixed VRDP with authentication (bug #15653)</para>
+      </listitem>
+
+      <listitem>
+        <para>API: don't crash if there is no graphics controller configured
+          (bug #15628)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux hosts: fixed EL5 builds (bug #15634)</para>
+      </listitem>
+
+      <listitem>
+        <para>non-Windows hosts: fixed a crash during shutdown under rare
+          circumstances (bug #15568)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: fixed SELinux issue which prevented certain
+          Linux guests to work in 3D mode (bug #15574)</para>
+      </listitem>
+
+      <listitem>
+        <para>User Manual: updates</para>
+      </listitem>
+
+    </itemizedlist>
+  </sect1>
+
+  <sect1>
     <title>Version 5.1.0 (2016-07-12)</title>
 
     <para>This is a major update. The following major new features
@@ -150,6 +270,198 @@
   </sect1>
 
   <sect1>
+    <title>Version 5.0.24 (2016-06-28)</title>
+
+    <para>This is a maintenance release. The following items were fixed and/or
+      added:</para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>VMM: reverted to the old I/O-APIC code for now to fix certain
+          regressions with 5.0.22 (bug #15529). This means that the networking
+          performance with certain guests will drop to the 5.0.20 level
+          (bug #15295). One workaround is to disable GRO for Linux guests.</para>
+      </listitem>
+
+      <listitem>
+        <para>Main: when taking a screenshot, don't save garbage for blanked
+          screens</para>
+      </listitem>
+
+      <listitem>
+        <para>NAT: correctly parse resolv.conf file with multiple
+          separators (5.0.22 regression)</para>
+      </listitem>
+
+      <listitem>
+        <para>Storage: fixed a possible corruption of stream optimized
+          VMDK images from VMware when opened in read/write mode for the
+          first time</para>
+      </listitem>
+
+      <listitem>
+        <para>ACPI: notify the guest when the battery / AC state changes instead
+          of relying on guest polling</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux hosts: fixed <emphasis>VERR_VMM_SET_JMP_ABORTED_RESUME</emphasis>
+          Guru Meditations on hosts with Linux 4.6 or later (bug #15439)</para>
+      </listitem>
+
+      <listitem>
+        <para>Solaris hosts: make the GUI work on Solaris 10 again (bug #15549)</para>
+      </listitem>
+
+    </itemizedlist>
+  </sect1>
+
+  <sect1>
+    <title>Version 5.0.22 (2016-06-16)</title>
+
+    <para>This is a maintenance release. The following items were fixed and/or
+      added:</para>
+
+    <itemizedlist>
+
+      <listitem>
+        <para>VMM: fixes for certain Intel Atom hosts (bug #14915)</para>
+      </listitem>
+
+      <listitem>
+        <para>VMM: properly restore the complete FPU state for 32-bit guests
+          on 64-bit hosts on Intel Sandy Bridge and Ivy Bridge CPUs</para>
+      </listitem>
+
+      <listitem>
+        <para>VMM: new I/O-APIC implementation fixing several bugs and improving
+          the performance under certain conditions (bug #15295 and others)</para>
+      </listitem>
+
+      <listitem>
+        <para>VMM: fixed a potential Linux guest panic on AMD hosts</para>
+      </listitem>
+
+      <listitem>
+        <para>VMM: fixed a potential hang with 32-bit EFI guests on
+          Intel CPUs (VT-x without unrestricted guest execution)</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: don't allow to start subsequent separate VM instances</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: raised upper limit for video capture screen resolution
+          (bug #15432)</para>
+      </listitem>
+
+      <listitem>
+        <para>GUI: warn if the VM has less than 128MB VRAM configured and 3D
+          enabled</para>
+      </listitem>
+
+      <listitem>
+        <para>Main: when monitoring DNS configuration changes on Windows hosts
+          avoid false positives from competing DHCP renewals.  This should fix
+          NAT link flaps when host has multiple DHCP configured interfaces, in
+          particular when the host uses OpnVPN.</para>
+      </listitem>
+
+      <listitem>
+        <para>Main: properly display an error message if the VRDE server
+          cannot be enabled at runtime, for example because another service
+          is using the same port</para>
+      </listitem>
+
+      <listitem>
+        <para>NAT: Initialize guest address guess for wildcard
+          port-forwarding rules with default guest address (bug #15412)</para>
+      </listitem>
+
+      <listitem>
+        <para>VGA: fix for a problem which made certain legacy guests crash
+          under certain conditions (bug #14811)</para>
+      </listitem>
+
+      <listitem>
+        <para>OVF: fixed import problems for some appliances using an AHCI
+          controller created by 3rd party applications</para>
+      </listitem>
+
+      <listitem>
+        <para>SDK: reduced memory usage in the webservice Java bindings</para>
+      </listitem>
+
+      <listitem>
+        <para>Windows hosts: fixed performance regresson with SMP guests
+          (5.0 regression)</para>
+      </listitem>
+
+      <listitem>
+        <para>Windows hosts: fixes for the shared clipboard</para>
+      </listitem>
+
+      <listitem>
+        <para>Windows hosts: Windows hardening fix</para>
+      </listitem>
+
+      <listitem>
+        <para>Windows Additions: fixes to retain the guest display layout
+          when resizing or disabling the guest monitors</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux hosts: EL 6.8 fix (bug #15411)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux hosts: Linux 4.7 fix (bug #15459)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: Linux 4.7 fixes (bug #15444)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: fix for certain 32-bit guests (5.0.18
+          regression; bug #15320)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: fixed mouse pointer offset (5.0.18
+          regression; bug #15324)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: made old X.Org releases work again with
+          kernels 3.11 and later (5.0.18 regression; bug #15319)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: fixed X.Org crash after hard guest reset
+          (5.0.18 regression; bug #15354)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: don't stop the X11 setup if loading the
+          shared folders module fails (5.0.18 regression)</para>
+      </listitem>
+
+      <listitem>
+        <para>Linux Additions: don't complain if the Drag and Drop service
+          is not available on the host</para>
+      </listitem>
+
+      <listitem>
+        <para>Solaris Additions: added support for X.org 1.18</para>
+      </listitem>
+
+    </itemizedlist>
+  </sect1>
+
+  <sect1>
     <title>Version 5.0.20 (2016-04-28)</title>
 
     <para>This is a maintenance release. The following items were fixed and/or
@@ -763,7 +1075,7 @@
       </listitem>
 
       <listitem>
-        <para>Audio: properly reset AC97 audio streams, otherwise there is
+        <para>Audio: properly reset AC'97 audio streams, otherwise there is
           silence until a non-48 kHz stream is played</para>
       </listitem>
 
@@ -1732,7 +2044,7 @@
       </listitem>
 
       <listitem>
-        <para>Audio: provide Linux guests a different AC97 audio codec type so Linux
+        <para>Audio: provide Linux guests a different AC'97 audio codec type so Linux
           ALSA does not mis-detect the link speed (default for new VMs)</para>
       </listitem>
 
diff --git a/include/VBox/HostServices/Service.h b/include/VBox/HostServices/Service.h
index b351a8b..346d130 100644
--- a/include/VBox/HostServices/Service.h
+++ b/include/VBox/HostServices/Service.h
@@ -357,7 +357,7 @@ public:
                 rc = VERR_VERSION_MISMATCH;
             else
             {
-                RT_GCC_NO_DEPRECATED_BEGIN
+                RT_GCC_NO_WARN_DEPRECATED_BEGIN
                 std::auto_ptr<AbstractService> apService;
                 /* No exceptions may propagate outside. */
                 try
@@ -370,7 +370,7 @@ public:
                 {
                     rc = VERR_UNRESOLVED_ERROR;
                 }
-                RT_GCC_NO_DEPRECATED_END
+                RT_GCC_NO_WARN_DEPRECATED_END
                 if (RT_SUCCESS(rc))
                 {
                     /*
diff --git a/include/VBox/com/array.h b/include/VBox/com/array.h
index 315d0d8..8e20f5e 100644
--- a/include/VBox/com/array.h
+++ b/include/VBox/com/array.h
@@ -194,7 +194,7 @@
  * @param aArray    com::SafeArray instance to pass as an input parameter.
  */
 #define ComSafeArrayAsInParam(aArray)   \
-    (aArray).size(), (aArray).__asInParam_Arr((aArray).raw())
+    (PRUint32)(aArray).size(), (aArray).__asInParam_Arr((aArray).raw())
 
 /**
  * Wraps the given com::SafeArray instance to generate an expression that is
@@ -878,7 +878,10 @@ public:
                 SafeArray::Init(m.arr[i]);
         }
 
+        /** @todo Fix this! */
+        RT_GCC_NO_WARN_CONVERSION_BEGIN
         m.size = aNewSize;
+        RT_GCC_NO_WARN_CONVERSION_END
 #else
         /* nothing to do here, SafeArrayCreate() has performed element
          * initialization */
@@ -1145,7 +1148,10 @@ protected:
                     for (size_t i = aNewSize; i < m.size; ++ i)
                         SafeArray::Uninit(m.arr[i]);
 
+                    /** @todo Fix this! */
+                    RT_GCC_NO_WARN_CONVERSION_BEGIN
                     m.size = aNewSize;
+                    RT_GCC_NO_WARN_CONVERSION_END
                 }
 
                 /* Copy the old contents. */
@@ -1164,11 +1170,17 @@ protected:
                 for (size_t i = aNewSize; i < m.size; ++ i)
                     SafeArray::Uninit(m.arr[i]);
 
+                /** @todo Fix this! */
+                RT_GCC_NO_WARN_CONVERSION_BEGIN
                 m.size = aNewSize;
+                RT_GCC_NO_WARN_CONVERSION_END
             }
         }
 
+        /** @todo Fix this! */
+        RT_GCC_NO_WARN_CONVERSION_BEGIN
         m.capacity = newCapacity;
+        RT_GCC_NO_WARN_CONVERSION_END
 
 #else
 
diff --git a/include/VBox/settings.h b/include/VBox/settings.h
index e23568d..26a40e6 100644
--- a/include/VBox/settings.h
+++ b/include/VBox/settings.h
@@ -432,7 +432,7 @@ struct VRDESettings
 {
     VRDESettings();
 
-    bool areDefaultSettings() const;
+    bool areDefaultSettings(SettingsVersion_T sv) const;
 
     bool operator==(const VRDESettings& v) const;
 
diff --git a/include/VBox/shflsvc.h b/include/VBox/shflsvc.h
index 186b38a..037763c 100644
--- a/include/VBox/shflsvc.h
+++ b/include/VBox/shflsvc.h
@@ -180,7 +180,7 @@ typedef const SHFLSTRING *PCSHFLSTRING;
 /** Calculate size of the string. */
 DECLINLINE(uint32_t) ShflStringSizeOfBuffer(PCSHFLSTRING pString)
 {
-    return pString ? sizeof(SHFLSTRING) - sizeof(pString->String) + pString->u16Size : 0;
+    return pString ? (uint32_t)(sizeof(SHFLSTRING) - sizeof(pString->String) + pString->u16Size) : 0;
 }
 
 DECLINLINE(uint32_t) ShflStringLength(PCSHFLSTRING pString)
@@ -200,7 +200,7 @@ DECLINLINE(PSHFLSTRING) ShflStringInitBuffer(void *pvBuffer, uint32_t u32Size)
     if (u32Size >= u32HeaderSize && u32Size - u32HeaderSize <= 0xFFFF)
     {
         pString = (PSHFLSTRING)pvBuffer;
-        pString->u16Size = u32Size - u32HeaderSize;
+        pString->u16Size = (uint16_t)(u32Size - u32HeaderSize);
         pString->u16Length = 0;
         if (pString->u16Size >= sizeof(pString->String.ucs2[0]))
             pString->String.ucs2[0] = 0;
diff --git a/include/VBox/vmm/cpum.h b/include/VBox/vmm/cpum.h
index fffc3ff..66bbf16 100644
--- a/include/VBox/vmm/cpum.h
+++ b/include/VBox/vmm/cpum.h
@@ -1119,7 +1119,7 @@ VMMDECL(void)       CPUMSetGuestEFER(PVMCPU pVCpu, uint64_t val);
 VMMR3_INT_DECL(void) CPUMR3SetGuestCpuIdFeature(PVM pVM, CPUMCPUIDFEATURE enmFeature);
 VMMR3_INT_DECL(void) CPUMR3ClearGuestCpuIdFeature(PVM pVM, CPUMCPUIDFEATURE enmFeature);
 VMMR3_INT_DECL(bool) CPUMR3GetGuestCpuIdFeature(PVM pVM, CPUMCPUIDFEATURE enmFeature);
-VMM_INT_DECL(bool)  CPUMSetGuestCpuIdPerCpuApicFeature(PVMCPU pVCpu, bool fVisible);
+VMMDECL(bool)       CPUMSetGuestCpuIdPerCpuApicFeature(PVMCPU pVCpu, bool fVisible);
 VMMDECL(void)       CPUMSetGuestCtx(PVMCPU pVCpu, const PCPUMCTX pCtx);
 VMM_INT_DECL(void)  CPUMGuestLazyLoadHiddenCsAndSs(PVMCPU pVCpu);
 VMM_INT_DECL(void)  CPUMGuestLazyLoadHiddenSelectorReg(PVMCPU pVCpu, PCPUMSELREG pSReg);
diff --git a/include/VBox/vmm/iem.h b/include/VBox/vmm/iem.h
index 29adee0..17191c3 100644
--- a/include/VBox/vmm/iem.h
+++ b/include/VBox/vmm/iem.h
@@ -116,6 +116,11 @@ VMM_INT_DECL(VBOXSTRICTRC)  IEMInjectTrap(PVMCPU pVCpu, uint8_t u8TrapNo, TRPMEV
 VMM_INT_DECL(int)           IEMBreakpointSet(PVM pVM, RTGCPTR GCPtrBp);
 VMM_INT_DECL(int)           IEMBreakpointClear(PVM pVM, RTGCPTR GCPtrBp);
 
+VMM_INT_DECL(void)          IEMTlbInvalidateAll(PVMCPU pVCpu, bool fVmm);
+VMM_INT_DECL(void)          IEMTlbInvalidatePage(PVMCPU pVCpu, RTGCPTR GCPtr);
+VMM_INT_DECL(void)          IEMTlbInvalidateAllPhysical(PVMCPU pVCpu);
+
+
 /** @name Given Instruction Interpreters
  * @{ */
 VMM_INT_DECL(VBOXSTRICTRC)  IEMExecStringIoWrite(PVMCPU pVCpu, uint8_t cbValue, IEMMODE enmAddrMode,
diff --git a/include/VBox/vmm/pdmaudioifs.h b/include/VBox/vmm/pdmaudioifs.h
index 32755f2..b9e83eb 100644
--- a/include/VBox/vmm/pdmaudioifs.h
+++ b/include/VBox/vmm/pdmaudioifs.h
@@ -26,11 +26,15 @@
 #ifndef ___VBox_vmm_pdmaudioifs_h
 #define ___VBox_vmm_pdmaudioifs_h
 
-#include <VBox/types.h>
 #include <iprt/circbuf.h>
 #include <iprt/critsect.h>
 #include <iprt/list.h>
 
+#include <VBox/types.h>
+#ifdef VBOX_WITH_STATISTICS
+# include <VBox/vmm/stam.h>
+#endif
+
 #ifdef VBOX_WITH_AUDIO_50
 # undef ___VBox_vmm_pdmaudioifs_h
 # include "pdmaudioifs_old.h"
@@ -556,6 +560,13 @@ typedef enum PDMAUDIOSTREAMCTX
  */
 typedef struct PDMAUDIOSTREAMIN
 {
+    /** Timestamp (in ms) since last read. */
+    uint64_t tsLastReadMS;
+#ifdef VBOX_WITH_STATISTICS
+    STAMCOUNTER StatBytesElapsed;
+    STAMCOUNTER StatBytesTotalRead;
+    STAMCOUNTER StatSamplesCaptured;
+#endif
 } PDMAUDIOSTREAMIN, *PPDMAUDIOSTREAMIN;
 
 /**
@@ -564,6 +575,13 @@ typedef struct PDMAUDIOSTREAMIN
  */
 typedef struct PDMAUDIOSTREAMOUT
 {
+    /** Timestamp (in ms) since last write. */
+    uint64_t    tsLastWriteMS;
+#ifdef VBOX_WITH_STATISTICS
+    STAMCOUNTER StatBytesElapsed;
+    STAMCOUNTER StatBytesTotalWritten;
+    STAMCOUNTER StatSamplesPlayed;
+#endif
 } PDMAUDIOSTREAMOUT, *PPDMAUDIOSTREAMOUT;
 
 struct PDMAUDIOSTREAM;
diff --git a/include/VBox/vmm/pgm.h b/include/VBox/vmm/pgm.h
index 3e490f0..c10a49f 100644
--- a/include/VBox/vmm/pgm.h
+++ b/include/VBox/vmm/pgm.h
@@ -618,8 +618,22 @@ VMMDECL(int)        PGMPhysSimpleDirtyWriteGCPtr(PVMCPU pVCpu, RTGCPTR GCPtrDst,
 VMMDECL(int)        PGMPhysInterpretedRead(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore, void *pvDst, RTGCPTR GCPtrSrc, size_t cb);
 VMMDECL(int)        PGMPhysInterpretedReadNoHandlers(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore, void *pvDst, RTGCUINTPTR GCPtrSrc, size_t cb, bool fRaiseTrap);
 VMMDECL(int)        PGMPhysInterpretedWriteNoHandlers(PVMCPU pVCpu, PCPUMCTXCORE pCtxCore, RTGCPTR GCPtrDst, void const *pvSrc, size_t cb, bool fRaiseTrap);
+
 VMM_INT_DECL(int)   PGMPhysIemGCPhys2Ptr(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, bool fWritable, bool fByPassHandlers, void **ppv, PPGMPAGEMAPLOCK pLock);
 VMM_INT_DECL(int)   PGMPhysIemQueryAccess(PVM pVM, RTGCPHYS GCPhys, bool fWritable, bool fByPassHandlers);
+VMM_INT_DECL(int)   PGMPhysIemGCPhys2PtrNoLock(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, uint64_t const volatile *puTlbPhysRev,
+#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
+                                               R3PTRTYPE(uint8_t *) *ppb,
+#else
+                                               R3R0PTRTYPE(uint8_t *) *ppb,
+#endif
+                                               uint64_t *pfTlb);
+/** @name Flags returned by PGMPhysIemGCPhys2PtrNoLock
+ * @{ */
+#define PGMIEMGCPHYS2PTR_F_NO_WRITE     RT_BIT_32(3)    /**< Not writable (IEMTLBE_F_PG_NO_WRITE). */
+#define PGMIEMGCPHYS2PTR_F_NO_READ      RT_BIT_32(4)    /**< Not readable (IEMTLBE_F_PG_NO_READ). */
+#define PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3 RT_BIT_32(7)    /**< No ring-3 mapping (IEMTLBE_F_NO_MAPPINGR3). */
+/** @} */
 
 #ifdef VBOX_STRICT
 VMMDECL(unsigned)   PGMAssertHandlerAndFlagsInSync(PVM pVM);
diff --git a/include/VBox/vmm/rem.h b/include/VBox/vmm/rem.h
index fdb9d52..3245ea2 100644
--- a/include/VBox/vmm/rem.h
+++ b/include/VBox/vmm/rem.h
@@ -85,8 +85,6 @@ REMR3DECL(void) REMR3NotifyPhysRamDeregister(PVM pVM, RTGCPHYS GCPhys, RTUINT cb
 REMR3DECL(void) REMR3NotifyHandlerPhysicalRegister(PVM pVM, PGMPHYSHANDLERKIND enmKind, RTGCPHYS GCPhys, RTGCPHYS cb, bool fHasHCHandler);
 REMR3DECL(void) REMR3NotifyHandlerPhysicalDeregister(PVM pVM, PGMPHYSHANDLERKIND enmKind, RTGCPHYS GCPhys, RTGCPHYS cb, bool fHasHCHandler, bool fRestoreAsRAM);
 REMR3DECL(void) REMR3NotifyHandlerPhysicalModify(PVM pVM, PGMPHYSHANDLERKIND enmKind, RTGCPHYS GCPhysOld, RTGCPHYS GCPhysNew, RTGCPHYS cb, bool fHasHCHandler, bool fRestoreAsRAM);
-REMR3DECL(void) REMR3NotifyPendingInterrupt(PVM pVM, PVMCPU pVCpu, uint8_t u8Interrupt);
-REMR3DECL(uint32_t) REMR3QueryPendingInterrupt(PVM pVM, PVMCPU pVCpu);
 REMR3DECL(void) REMR3NotifyInterruptSet(PVM pVM, PVMCPU pVCpu);
 REMR3DECL(void) REMR3NotifyInterruptClear(PVM pVM, PVMCPU pVCpu);
 REMR3DECL(void) REMR3NotifyTimerPending(PVM pVM, PVMCPU pVCpuDst);
diff --git a/include/VBox/vmm/vm.h b/include/VBox/vmm/vm.h
index 89d1f73..2ab767f 100644
--- a/include/VBox/vmm/vm.h
+++ b/include/VBox/vmm/vm.h
@@ -137,7 +137,11 @@ typedef struct VMCPU
     /** IEM part.
      * @remarks This comes first as it allows the use of 8-bit immediates for the
      *          first 64 bytes of the structure, reducing code size a wee bit. */
-    union
+#ifdef ___IEMInternal_h /* For PDB hacking. */
+    union VMCPUUNIONIEMFULL
+#else
+    union VMCPUUNIONIEMSTUB
+#endif
     {
 #ifdef ___IEMInternal_h
         struct IEMCPU       s;
@@ -146,7 +150,7 @@ typedef struct VMCPU
     } iem;
 
     /** HM part. */
-    union
+    union VMCPUUNIONHM
     {
 #ifdef ___HMInternal_h
         struct HMCPU    s;
@@ -155,7 +159,7 @@ typedef struct VMCPU
     } hm;
 
     /** EM part. */
-    union
+    union VMCPUUNIONEM
     {
 #ifdef ___EMInternal_h
         struct EMCPU        s;
@@ -164,7 +168,7 @@ typedef struct VMCPU
     } em;
 
     /** TRPM part. */
-    union
+    union VMCPUUNIONTRPM
     {
 #ifdef ___TRPMInternal_h
         struct TRPMCPU      s;
@@ -173,7 +177,7 @@ typedef struct VMCPU
     } trpm;
 
     /** TM part. */
-    union
+    union VMCPUUNIONTM
     {
 #ifdef ___TMInternal_h
         struct TMCPU        s;
@@ -182,7 +186,7 @@ typedef struct VMCPU
     } tm;
 
     /** VMM part. */
-    union
+    union VMCPUUNIONVMM
     {
 #ifdef ___VMMInternal_h
         struct VMMCPU       s;
@@ -191,7 +195,7 @@ typedef struct VMCPU
     } vmm;
 
     /** PDM part. */
-    union
+    union VMCPUUNIONPDM
     {
 #ifdef ___PDMInternal_h
         struct PDMCPU       s;
@@ -200,7 +204,7 @@ typedef struct VMCPU
     } pdm;
 
     /** IOM part. */
-    union
+    union VMCPUUNIONIOM
     {
 #ifdef ___IOMInternal_h
         struct IOMCPU       s;
@@ -210,7 +214,7 @@ typedef struct VMCPU
 
     /** DBGF part.
      * @todo Combine this with other tiny structures. */
-    union
+    union VMCPUUNIONDBGF
     {
 #ifdef ___DBGFInternal_h
         struct DBGFCPU      s;
@@ -219,7 +223,7 @@ typedef struct VMCPU
     } dbgf;
 
     /** GIM part. */
-    union
+    union VMCPUUNIONGIM
     {
 #ifdef ___GIMInternal_h
         struct GIMCPU s;
@@ -228,7 +232,7 @@ typedef struct VMCPU
     } gim;
 
     /** APIC part. */
-    union
+    union VMCPUUNIONAPIC
     {
 #ifdef ___APICInternal_h
         struct APICCPU      s;
@@ -252,7 +256,7 @@ typedef struct VMCPU
     uint8_t                 abAlignment2[3640];
 
     /** PGM part. */
-    union
+    union VMCPUUNIONPGM
     {
 #ifdef ___PGMInternal_h
         struct PGMCPU       s;
@@ -261,7 +265,7 @@ typedef struct VMCPU
     } pgm;
 
     /** CPUM part. */
-    union
+    union VMCPUUNIONCPUM
     {
 #ifdef ___CPUMInternal_h
         struct CPUMCPU      s;
diff --git a/include/VBox/vusb.h b/include/VBox/vusb.h
index 1ee5df6..c893f28 100644
--- a/include/VBox/vusb.h
+++ b/include/VBox/vusb.h
@@ -842,7 +842,7 @@ DECLINLINE(int) VUSBIRhSetUrbParams(PVUSBIROOTHUBCONNECTOR pInterface, size_t cb
 }
 
 /** @copydoc VUSBIROOTHUBCONNECTOR::pfnNewUrb */
-DECLINLINE(PVUSBURB) VUSBIRhNewUrb(PVUSBIROOTHUBCONNECTOR pInterface, uint32_t DstAddress, PVUSBIDEVICE pDev,
+DECLINLINE(PVUSBURB) VUSBIRhNewUrb(PVUSBIROOTHUBCONNECTOR pInterface, uint8_t DstAddress, PVUSBIDEVICE pDev,
                                    VUSBXFERTYPE enmType, VUSBDIRECTION enmDir, uint32_t cbData, uint32_t cTds, const char *pszTag)
 {
     return pInterface->pfnNewUrb(pInterface, DstAddress, pDev, enmType, enmDir, cbData, cTds, pszTag);
diff --git a/include/iprt/cdefs.h b/include/iprt/cdefs.h
index 203e855..fae7cf3 100644
--- a/include/iprt/cdefs.h
+++ b/include/iprt/cdefs.h
@@ -987,15 +987,38 @@
 # define RT_GCC_EXTENSION
 #endif
 
+/** @def RT_GCC_NO_WARN_DEPRECATED_BEGIN
+ * Used to start a block of code where GCC should not warn about deprecated
+ * declarations. */
 #if RT_GNUC_PREREQ(4, 6)
-# define RT_GCC_NO_DEPRECATED_BEGIN \
+# define RT_GCC_NO_WARN_DEPRECATED_BEGIN \
    _Pragma("GCC diagnostic push") \
    _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
-# define RT_GCC_NO_DEPRECATED_END \
+/** @def RT_GCC_NO_WARN_DEPRECATED_END
+ * Used to end a block of code where GCC should not warn about deprecated
+ * declarations. */
+# define RT_GCC_NO_WARN_DEPRECATED_END \
    _Pragma("GCC diagnostic pop")
 #else
-# define RT_GCC_NO_DEPRECATED_BEGIN
-# define RT_GCC_NO_DEPRECATED_END
+# define RT_GCC_NO_WARN_DEPRECATED_BEGIN
+# define RT_GCC_NO_WARN_DEPRECATED_END
+#endif
+
+/** @def RT_GCC_NO_WARN_CONVERSION_BEGIN
+ * Used to start a block of code where GCC should not warn about implicit
+ * conversions that may alter a value. */
+#if RT_GNUC_PREREQ(4, 6)
+# define RT_GCC_NO_WARN_CONVERSION_BEGIN \
+   _Pragma("GCC diagnostic push") \
+   _Pragma("GCC diagnostic ignored \"-Wconversion\"")
+/** @def RT_GCC_NO_WARN_CONVERSION_END
+ * Used to end a block of code where GCC should not warn about implicit
+ * conversions that may alter a value. */
+# define RT_GCC_NO_WARN_CONVERSION_END \
+   _Pragma("GCC diagnostic pop")
+#else
+# define RT_GCC_NO_WARN_CONVERSION_BEGIN
+# define RT_GCC_NO_WARN_CONVERSION_END
 #endif
 
 /** @def RT_COMPILER_GROKS_64BIT_BITFIELDS
diff --git a/include/iprt/cpp/utils.h b/include/iprt/cpp/utils.h
index 1c50e8b..ccfe713 100644
--- a/include/iprt/cpp/utils.h
+++ b/include/iprt/cpp/utils.h
@@ -49,7 +49,7 @@ protected:
     ~RTCNonCopyable() {}
 private:
     RTCNonCopyable(RTCNonCopyable const &);
-    RTCNonCopyable const &operator=(RTCNonCopyable const &);
+    RTCNonCopyable &operator=(RTCNonCopyable const &);
 };
 
 
diff --git a/include/iprt/crypto/pem.h b/include/iprt/crypto/pem.h
index 7392d1f..9e7732c 100644
--- a/include/iprt/crypto/pem.h
+++ b/include/iprt/crypto/pem.h
@@ -110,7 +110,10 @@ RTDECL(int) RTCrPemFreeSections(PCRTCRPEMSECTION pSectionHead);
  * content is returned as one single section (with pMarker = NULL).
  *
  * @returns IPRT status code.
- * @retval  VINF_EOF if the file is empty. The ppSectionHead value will be NULL.
+ * @retval  VINF_EOF if the file is empty.  The @a ppSectionHead value will be
+ *          NULL.
+ * @retval  VWRN_NOT_FOUND no section was found and RTCRPEMREADFILE_F_ONLY_PEM
+ *          is specified.  The @a ppSectionHead value will be NULL.
  *
  * @param   pvContent       The content bytes to parse.
  * @param   cbContent       The number of content bytes.
@@ -132,7 +135,10 @@ RTDECL(int) RTCrPemParseContent(void const *pvContent, size_t cbContent, uint32_
  * content is returned as one single section (with pMarker = NULL).
  *
  * @returns IPRT status code.
- * @retval  VINF_EOF if the file is empty. The ppSectionHead value will be NULL.
+ * @retval  VINF_EOF if the file is empty.  The @a ppSectionHead value will be
+ *          NULL.
+ * @retval  VWRN_NOT_FOUND no section was found and RTCRPEMREADFILE_F_ONLY_PEM
+ *          is specified.  The @a ppSectionHead value will be NULL.
  *
  * @param   pszFilename     The path to the file to read.
  * @param   fFlags          RTCRPEMREADFILE_F_XXX.
@@ -149,6 +155,10 @@ RTDECL(int) RTCrPemReadFile(const char *pszFilename, uint32_t fFlags, PCRTCRPEMM
  * @{ */
 /** Continue on encoding error. */
 #define RTCRPEMREADFILE_F_CONTINUE_ON_ENCODING_ERROR    RT_BIT(0)
+/** Only PEM sections, no binary fallback. */
+#define RTCRPEMREADFILE_F_ONLY_PEM                      RT_BIT(1)
+/** Valid flags. */
+#define RTCRPEMREADFILE_F_VALID_MASK                    UINT32_C(0x00000003)
 /** @} */
 
 /**
diff --git a/include/iprt/crypto/x509.h b/include/iprt/crypto/x509.h
index d7e12a6..5b98471 100644
--- a/include/iprt/crypto/x509.h
+++ b/include/iprt/crypto/x509.h
@@ -1014,6 +1014,13 @@ RTDECL(int) RTCrX509Certificate_ReadFromFile(PRTCRX509CERTIFICATE pCertificate,
 RTDECL(int) RTCrX509Certificate_ReadFromBuffer(PRTCRX509CERTIFICATE pCertificate, const void *pvBuf, size_t cbBuf,
                                                uint32_t fFlags, PCRTASN1ALLOCATORVTABLE pAllocator,
                                                PRTERRINFO pErrInfo, const char *pszErrorTag);
+/** @name Flags for RTCrX509Certificate_ReadFromFile and
+ *        RTCrX509Certificate_ReadFromBuffer
+ * @{ */
+/** Only allow PEM certificates, not binary ones.
+ * @sa RTCRPEMREADFILE_F_ONLY_PEM  */
+#define RTCRX509CERT_READ_F_PEM_ONLY        RT_BIT(1)
+/** @} */
 
 /** X509 Certificate markers for RTCrPemFindFirstSectionInContent et al. */
 extern RTDATADECL(RTCRPEMMARKER const)  g_aRTCrX509CertificateMarkers[];
diff --git a/include/iprt/uint128.h b/include/iprt/uint128.h
index 904bbf8..24ae6a9 100644
--- a/include/iprt/uint128.h
+++ b/include/iprt/uint128.h
@@ -648,6 +648,26 @@ DECLINLINE(PRTUINT128U) RTUInt128AssignSub(PRTUINT128U pValue1Result, PCRTUINT12
 
 
 /**
+ * Negates a 128 number, storing the result in the input.
+ *
+ * @returns pValueResult.
+ * @param   pValueResult    The value to negate.
+ */
+DECLINLINE(PRTUINT128U) RTUInt128AssignNeg(PRTUINT128U pValueResult)
+{
+    /* result = 0 - value */
+    if (pValueResult->s.Lo != 0)
+    {
+        pValueResult->s.Lo = UINT64_C(0) - pValueResult->s.Lo;
+        pValueResult->s.Hi = UINT64_MAX  - pValueResult->s.Hi;
+    }
+    else
+        pValueResult->s.Hi = UINT64_C(0) - pValueResult->s.Hi;
+    return pValueResult;
+}
+
+
+/**
  * Multiplies two 128-bit unsigned integer values, storing the result in the
  * first.
  *
diff --git a/include/iprt/x86.h b/include/iprt/x86.h
index 6827d7b..1678c02 100644
--- a/include/iprt/x86.h
+++ b/include/iprt/x86.h
@@ -1382,6 +1382,7 @@ AssertCompile(X86_DR7_ANY_RW_IO(UINT32_C(0x00040000)) == 0);
 #define  MSR_K6_EFER_LMA                     RT_BIT_32(10)
 /** Bit 11 - NXE - No-Execute Page Protection Enabled. (R/W) */
 #define  MSR_K6_EFER_NXE                     RT_BIT_32(11)
+#define  MSR_K6_EFER_BIT_NXE                 11 /**< Bit number of MSR_K6_EFER_NXE */
 /** Bit 12 - SVME - Secure VM Extension Enabled. (R/W) */
 #define  MSR_K6_EFER_SVME                    RT_BIT_32(12)
 /** Bit 13 - LMSLE - Long Mode Segment Limit Enable. (R/W?) */
@@ -1564,6 +1565,8 @@ typedef X86PGPAEUINT const *PCX86PGPAEUINT;
 #define X86_PTE_BIT_PAT                     7
 /** Bit 8 -  G  - Global flag. */
 #define X86_PTE_BIT_G                       8
+/** Bits 63 - NX - PAE/LM - No execution flag. */
+#define X86_PTE_PAE_BIT_NX                  63
 
 /** Bit 0 -  P  - Present bit mask. */
 #define X86_PTE_P                           RT_BIT_32(0)
diff --git a/src/VBox/Additions/common/crOpenGL/egl.c b/src/VBox/Additions/common/crOpenGL/egl.c
index e9266b4..b095b61 100644
--- a/src/VBox/Additions/common/crOpenGL/egl.c
+++ b/src/VBox/Additions/common/crOpenGL/egl.c
@@ -20,17 +20,20 @@
 *   Header Files                                                               *
 *******************************************************************************/
 #include <iprt/cdefs.h>
-#include <iprt/initterm.h>
-#include <iprt/mem.h>
-#include <iprt/once.h>
-#include <iprt/thread.h>
+#include <iprt/types.h>
 
 #include <EGL/egl.h>
 #include <GL/glx.h>
 #include <X11/Xlib.h>
 
+#include <dlfcn.h>
+#include <pthread.h>
+#include <stdio.h>
 #include <stdlib.h>
 
+#define EGL_ASSERT(expr) \
+    if (!(expr)) { printf("Assertion failed: %s\n", #expr); exit(1); }
+
 /*******************************************************************************
 *   Structures and Typedefs                                                    *
 *******************************************************************************/
@@ -71,27 +74,25 @@ struct VBEGLTLS
 *   Global variables                                                           *
 *******************************************************************************/
 
-static RTTLS    g_tls = NIL_RTTLS;
-static RTONCE   g_tlsOnce = RTONCE_INITIALIZER;
-static Display *g_pDefaultDisplay = NULL;
-static RTONCE   g_defaultDisplayOnce = RTONCE_INITIALIZER;
+static pthread_key_t  g_tls;
+static pthread_once_t g_tlsOnce = PTHREAD_ONCE_INIT;
+static Display       *g_pDefaultDisplay = NULL;
+static pthread_once_t g_defaultDisplayOnce = PTHREAD_ONCE_INIT;
 
-static DECLCALLBACK(int32_t) tlsInitOnce(void *pv)
+static void tlsInitOnce(void)
 {
-    NOREF(pv);
-    g_tls = RTTlsAlloc();
-    return VINF_SUCCESS;
+    pthread_key_create(&g_tls, NULL);
 }
 
 static struct VBEGLTLS *getTls(void)
 {
     struct VBEGLTLS *pTls;
 
-    RTOnce(&g_tlsOnce, tlsInitOnce, NULL);
-    pTls = (struct VBEGLTLS *)RTTlsGet(g_tls);
+    pthread_once(&g_tlsOnce, tlsInitOnce);
+    pTls = (struct VBEGLTLS *)pthread_getspecific(g_tls);
     if (RT_LIKELY(pTls))
         return pTls;
-    pTls = (struct VBEGLTLS *)RTMemAlloc(sizeof(*pTls));
+    pTls = (struct VBEGLTLS *)malloc(sizeof(*pTls));
     if (!VALID_PTR(pTls))
         return NULL;
     pTls->cErr = EGL_SUCCESS;
@@ -100,15 +101,15 @@ static struct VBEGLTLS *getTls(void)
     pTls->hCurrentDisplay = EGL_NO_DISPLAY;
     pTls->hCurrentDraw = EGL_NO_SURFACE;
     pTls->hCurrentRead = EGL_NO_SURFACE;
-    RTTlsSet(g_tls, pTls);
-    return pTls;
+    if (pthread_setspecific(g_tls, pTls) == 0)
+        return pTls;
+    free(pTls);
+    return NULL;
 }
 
-static DECLCALLBACK(int32_t) defaultDisplayInitOnce(void *pv)
+static void defaultDisplayInitOnce(void)
 {
-    NOREF(pv);
     g_pDefaultDisplay = XOpenDisplay(NULL);
-    return VINF_SUCCESS;
 }
 
 static EGLBoolean clearEGLError(void)
@@ -130,17 +131,26 @@ static EGLBoolean setEGLError(EGLint cErr)
     return EGL_FALSE;
 }
 
+static EGLBoolean testValidDisplay(EGLNativeDisplayType hDisplay)
+{
+    if (hDisplay == EGL_DEFAULT_DISPLAY)
+        return EGL_TRUE;
+    if ((void *)hDisplay == NULL)
+        return EGL_FALSE;
+    /* This is the test that Mesa uses to see if this is a GBM "display".  Not
+     * very pretty, but since no one can afford to break Mesa it should be
+     * safe. Obviously we can't support GBM for now. */
+    if (*(void **)hDisplay == dlsym(NULL, "gbm_create_device"))
+        return EGL_FALSE;
+    return EGL_TRUE;
+}
+
 DECLEXPORT(EGLDisplay) eglGetDisplay(EGLNativeDisplayType hDisplay)
 {
     Display *pDisplay;
     int rc, cError, cEvent, cMajor, cMinor;
-    /* Prevent working from inside the X server by requiring a valid DISPLAY. */
-    char *pszDisplay = getenv("DISPLAY");
-    
-    if (!pszDisplay || !*pszDisplay)
-        return EGL_NO_DISPLAY;
-    rc = RTR3InitDll(RTR3INIT_FLAGS_UNOBTRUSIVE);
-    if (RT_FAILURE(rc))
+
+    if (!testValidDisplay(hDisplay))
         return EGL_NO_DISPLAY;
     if (!clearEGLError())  /* Set up our tls. */
         return EGL_NO_DISPLAY;
@@ -148,7 +158,7 @@ DECLEXPORT(EGLDisplay) eglGetDisplay(EGLNativeDisplayType hDisplay)
         pDisplay = hDisplay;
     else
     {
-        RTOnce(&g_defaultDisplayOnce, defaultDisplayInitOnce, NULL);
+        pthread_once(&g_defaultDisplayOnce, defaultDisplayInitOnce);
         pDisplay = g_pDefaultDisplay;
     }
     if (pDisplay && glXQueryExtension(pDisplay, &cError, &cEvent))
@@ -169,10 +179,7 @@ DECLEXPORT(EGLint) eglGetError(void)
 
 DECLEXPORT(EGLBoolean) eglInitialize (EGLDisplay hDisplay, EGLint *pcMajor, EGLint *pcMinor)
 {
-    /* Prevent working from inside the X server by requiring a valid DISPLAY. */
-    char *pszDisplay = getenv("DISPLAY");
-    
-    if (!pszDisplay || !*pszDisplay)
+    if (hDisplay == EGL_NO_DISPLAY)
         return EGL_FALSE;
     if (!VALID_PTR(hDisplay))
         return setEGLError(EGL_BAD_DISPLAY);
@@ -221,7 +228,8 @@ DECLEXPORT(EGLBoolean) eglGetConfigs (EGLDisplay hDisplay, EGLConfig *paConfigs,
     if (caConfigs > 0 && !VALID_PTR(paConfigs))
         return setEGLError(EGL_BAD_PARAMETER);
     paFBConfigs = glXGetFBConfigs(pDisplay, DefaultScreen(pDisplay), &caFBConfigs);
-    AssertPtrReturn(paFBConfigs, setEGLError(EGL_BAD_PARAMETER));
+    if (!VALID_PTR(paFBConfigs))
+        return setEGLError(EGL_BAD_PARAMETER);
     if (caFBConfigs > caConfigs)
         caFBConfigs = caConfigs;
     *pcaConfigs = caFBConfigs;
@@ -425,7 +433,7 @@ DECLEXPORT(EGLBoolean) eglChooseConfig (EGLDisplay hDisplay, const EGLint *paAtt
     if (paAttribs != NULL)
     {
         aAttribList[cAttribs] = None;
-        AssertRelease(cAttribs < RT_ELEMENTS(aAttribList));
+        EGL_ASSERT(cAttribs < RT_ELEMENTS(aAttribList));
         if (!(cRenderableType & EGL_OPENGL_BIT))
             return setEGLError(EGL_BAD_ACCESS);
     }
@@ -558,7 +566,7 @@ DECLEXPORT(EGLSurface) eglCreateWindowSurface(EGLDisplay hDisplay, EGLConfig con
         setEGLError(EGL_BAD_ALLOC);
         return EGL_NO_SURFACE;
     }
-    AssertRelease(hGLXWindow < VBEGL_WINDOW_SURFACE);  /* Greater than the maximum XID. */
+    EGL_ASSERT(hGLXWindow < VBEGL_WINDOW_SURFACE);  /* Greater than the maximum XID. */
     clearEGLError();
     return (EGLSurface)(hGLXWindow | VBEGL_WINDOW_SURFACE);
 }
@@ -626,7 +634,7 @@ DECLEXPORT(EGLSurface) eglCreatePbufferSurface(EGLDisplay hDisplay, EGLConfig co
             }
             paAttributes += 2;
         }
-    AssertRelease(cIndex < RT_ELEMENTS(aAttributes) - 1);
+    EGL_ASSERT(cIndex < RT_ELEMENTS(aAttributes) - 1);
     aAttributes[cIndex + 1] = None;
     hPbuffer = glXCreatePbuffer(pDisplay, (GLXFBConfig)config, aAttributes);
     if (hPbuffer == None)
@@ -634,7 +642,7 @@ DECLEXPORT(EGLSurface) eglCreatePbufferSurface(EGLDisplay hDisplay, EGLConfig co
         setEGLError(EGL_BAD_ALLOC);
         return EGL_NO_SURFACE;
     }
-    AssertRelease(hPbuffer < VBEGL_WINDOW_SURFACE);  /* Greater than the maximum XID. */
+    EGL_ASSERT(hPbuffer < VBEGL_WINDOW_SURFACE);  /* Greater than the maximum XID. */
     clearEGLError();
     return (EGLSurface)(hPbuffer | VBEGL_PBUFFER_SURFACE);
 }
@@ -670,7 +678,7 @@ DECLEXPORT(EGLSurface) eglCreatePixmapSurface(EGLDisplay hDisplay, EGLConfig con
         setEGLError(EGL_BAD_MATCH);
         return EGL_NO_SURFACE;
     }
-    AssertRelease(hGLXPixmap < VBEGL_WINDOW_SURFACE);  /* Greater than the maximum XID. */
+    EGL_ASSERT(hGLXPixmap < VBEGL_WINDOW_SURFACE);  /* Greater than the maximum XID. */
     clearEGLError();
     return (EGLSurface)(hGLXPixmap | VBEGL_PIXMAP_SURFACE);
 }
@@ -740,11 +748,6 @@ DECLEXPORT(EGLBoolean) eglReleaseTexImage(EGLDisplay hDisplay, EGLSurface hSurfa
 
 DECLEXPORT(EGLBoolean) eglBindAPI(EGLenum enmApi)
 {
-    /* Prevent working from inside the X server by requiring a valid DISPLAY. */
-    char *pszDisplay = getenv("DISPLAY");
-    
-    if (!pszDisplay || !*pszDisplay)
-        return EGL_FALSE;
     return enmApi == EGL_OPENGL_API ? clearEGLError() : setEGLError(EGL_BAD_PARAMETER);
 }
 
@@ -841,8 +844,9 @@ DECLEXPORT(EGLSurface) eglGetCurrentSurface(EGLint cOp)
 
 DECLEXPORT(EGLDisplay) eglGetCurrentDisplay(void)
 {
-    struct VBEGLTLS *pTls = getTls();
+    struct VBEGLTLS *pTls;
 
+    pTls = getTls();
     if (!VALID_PTR(pTls))
         return EGL_NO_DISPLAY;
     clearEGLError();
@@ -946,7 +950,8 @@ DECLEXPORT(EGLBoolean) eglReleaseThread()
 
     if (!(pTls))
         return EGL_TRUE;
-    RTMemFree(pTls);
-    RTTlsSet(g_tls, NULL);
+    free(pTls);
+    /* Can this fail with ENOMEM? */
+    pthread_setspecific(g_tls, NULL);
     return EGL_TRUE;
 }
diff --git a/src/VBox/Additions/linux/installer/vboxadd.sh b/src/VBox/Additions/linux/installer/vboxadd.sh
index 1478a61..f8caa51 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: 108709 $)
+# Linux Additions kernel module init script ($Revision: 108947 $)
 #
 
 #
@@ -247,6 +247,15 @@ start()
         done
         ln -sf "${INSTALL_DIR}/lib/VBoxOGL.so" /var/lib/VBoxGuestAdditions/lib/libGL.so.1
         ln -sf "${INSTALL_DIR}/lib/VBoxEGL.so" /var/lib/VBoxGuestAdditions/lib/libEGL.so.1
+        # SELinux for the OpenGL libraries, so that gdm can load them during the
+        # acceleration support check.  This prevents an "Oh no, something has gone
+        # wrong!" error when starting EL7 guests.
+        if test -e /etc/selinux/config; then
+            semanage fcontext -a -t lib_t "/var/lib/VBoxGuestAdditions/lib/libGL.so.1"
+            semanage fcontext -a -t lib_t "/var/lib/VBoxGuestAdditions/lib/libEGL.so.1"
+            chcon -h  -t lib_t "/var/lib/VBoxGuestAdditions/lib/libGL.so.1"
+            chcon -h  -t lib_t  "/var/lib/VBoxGuestAdditions/lib/libEGL.so.1"
+        fi
         echo "/var/lib/VBoxGuestAdditions/lib" > /etc/ld.so.conf.d/00vboxvideo.conf
     fi
     ldconfig
@@ -298,11 +307,13 @@ restart()
 update_module_dependencies()
 {
     depmod "${1}"
+    rm -f "/lib/modules/${1}/initrd/vboxvideo"
     test -d "/lib/modules/${1}/initrd" &&
+        test -f "/lib/modules/${1}/misc/vboxvideo.ko" &&
         touch "/lib/modules/${1}/initrd/vboxvideo"
     test -n "${QUICKSETUP}" && return
     if type dracut >/dev/null 2>&1; then
-        dracut -f "/boot/initramfs-${1}.img"
+        dracut -f "/boot/initramfs-${1}.img" "${1}"
     elif type update-initramfs >/dev/null 2>&1; then
         update-initramfs -u -k "${1}"
     fi
@@ -431,21 +442,15 @@ rmdir -p /lib/modules/"\$1"/misc 2>/dev/null
 exit 0
 EOF
     chmod 0755 /etc/kernel/postinst.d/vboxadd /etc/kernel/prerm.d/vboxadd
-    # At least Fedora 11 and Fedora 12 require the correct security context when
-    # executing this command from service scripts. Shouldn't hurt for other
-    # distributions.
-    chcon -u system_u -t mount_exec_t "$lib_path/$PACKAGE/mount.vboxsf" > /dev/null 2>&1
-    # And at least Fedora 15 needs this for the acceleration support check to
-    # work
-    redhat_release=`cat /etc/redhat-release 2> /dev/null`
-    case "$redhat_release" in Fedora\ release\ 15* )
-        for i in "$lib_path"/*.so
-        do
-            restorecon "$i" >/dev/null
-        done
-        ;;
-    esac
-
+    # 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
+        # with an error, telling you what you should have typed, if you specify
+        # the real path.  The "chcon" is there as a back-up in case this is
+        # different on old guests.
+        semanage fcontext -a -t mount_exec_t "/usr/lib/$PACKAGE/mount.vboxsf"
+        chcon -t mount_exec_t "$lib_path/$PACKAGE/mount.vboxsf"
+    fi
     succ_msg
 }
 
diff --git a/src/VBox/Debugger/DBGCCommands.cpp b/src/VBox/Debugger/DBGCCommands.cpp
index c42f190..cf9100f 100644
--- a/src/VBox/Debugger/DBGCCommands.cpp
+++ b/src/VBox/Debugger/DBGCCommands.cpp
@@ -22,7 +22,6 @@
 #define LOG_GROUP LOG_GROUP_DBGC
 #include <VBox/dbg.h>
 #include <VBox/vmm/dbgf.h>
-#include <VBox/vmm/vm.h>
 #include <VBox/param.h>
 #include <VBox/err.h>
 #include <VBox/log.h>
@@ -1777,18 +1776,3 @@ static DECLCALLBACK(int) dbgcCmdWriteCore(PCDBGCCMD pCmd, PDBGCCMDHLP pCmdHlp, P
     return VINF_SUCCESS;
 }
 
-
-
-/**
- * @callback_method_impl{FNDBGCFUNC, The randu32() function implementation.}
- */
-static DECLCALLBACK(int) dbgcFuncRandU32(PCDBGCFUNC pFunc, PDBGCCMDHLP pCmdHlp, PVM pUVM, PCDBGCVAR paArgs, uint32_t cArgs,
-                                         PDBGCVAR pResult)
-{
-    AssertReturn(cArgs == 0, VERR_DBGC_PARSE_BUG);
-    uint32_t u32 = RTRandU32();
-    DBGCVAR_INIT_NUMBER(pResult, u32);
-    NOREF(pFunc); NOREF(pCmdHlp); NOREF(pUVM); NOREF(paArgs);
-    return VINF_SUCCESS;
-}
-
diff --git a/src/VBox/Debugger/DBGPlugInLinux.cpp b/src/VBox/Debugger/DBGPlugInLinux.cpp
index 52955f0..33863b6 100644
--- a/src/VBox/Debugger/DBGPlugInLinux.cpp
+++ b/src/VBox/Debugger/DBGPlugInLinux.cpp
@@ -24,10 +24,13 @@
 #include "DBGPlugInCommonELF.h"
 #include <VBox/vmm/dbgf.h>
 #include <VBox/dis.h>
+#include <iprt/file.h>
 #include <iprt/string.h>
 #include <iprt/mem.h>
 #include <iprt/stream.h>
 #include <iprt/ctype.h>
+#include <iprt/vfs.h>
+#include <iprt/zip.h>
 
 
 /*********************************************************************************************************************************
@@ -42,6 +45,47 @@
 
 
 /**
+ * Config item type.
+ */
+typedef enum DBGDIGGERLINUXCFGITEMTYPE
+{
+    /** Invalid type. */
+    DBGDIGGERLINUXCFGITEMTYPE_INVALID = 0,
+    /** String. */
+    DBGDIGGERLINUXCFGITEMTYPE_STRING,
+    /** Number. */
+    DBGDIGGERLINUXCFGITEMTYPE_NUMBER,
+    /** Flag whether this feature is included in the
+     * kernel or as a module. */
+    DBGDIGGERLINUXCFGITEMTYPE_FLAG
+} DBGDIGGERLINUXCFGITEMTYPE;
+
+/**
+ * Item in the config database.
+ */
+typedef struct DBGDIGGERLINUXCFGITEM
+{
+    /** String space core. */
+    RTSTRSPACECORE            Core;
+    /** Config item type. */
+    DBGDIGGERLINUXCFGITEMTYPE enmType;
+    /** Data based on the type. */
+    union
+    {
+        /** Number. */
+        int64_t               i64Num;
+        /** Flag. */
+        bool                  fModule;
+        /** String - variable in size. */
+        char                  aszString[1];
+    } u;
+} DBGDIGGERLINUXCFGITEM;
+/** Pointer to a config database item. */
+typedef DBGDIGGERLINUXCFGITEM *PDBGDIGGERLINUXCFGITEM;
+/** Pointer to a const config database item. */
+typedef const DBGDIGGERLINUXCFGITEM *PCDBGDIGGERLINUXCFGITEM;
+
+/**
  * Linux guest OS digger instance data.
  */
 typedef struct DBGDIGGERLINUX
@@ -83,6 +127,9 @@ typedef struct DBGDIGGERLINUX
 
     /** The kernel message log interface. */
     DBGFOSIDMESG    IDmesg;
+
+    /** The config database root. */
+    RTSTRSPACE      hCfgDb;
 } DBGDIGGERLINUX;
 /** Pointer to the linux guest OS digger instance data. */
 typedef DBGDIGGERLINUX *PDBGDIGGERLINUX;
@@ -139,6 +186,8 @@ typedef LNXPRINTKHDR const *PCLNXPRINTKHDR;
 #define LNX_MAX_KALLSYMS_ENC_LENGTH         UINT8_C(28)
 /** The approximate maximum length of a string token. */
 #define LNX_MAX_KALLSYMS_TOKEN_LEN          UINT16_C(32)
+/** Maximum compressed config size expected. */
+#define LNX_MAX_COMPRESSED_CFG_SIZE         _1M
 
 /** Module tag for linux ('linuxmod' on little endian ASCII systems). */
 #define DIG_LNX_MOD_TAG                     UINT64_C(0x545f5d78758e898c)
@@ -969,6 +1018,31 @@ static DECLCALLBACK(int) dbgDiggerLinuxIDmsg_QueryKernelLog(PDBGFOSIDMESG pThis,
 
 
 /**
+ * Worker destroying the config database.
+ */
+static DECLCALLBACK(int) dbgDiggerLinuxCfgDbDestroyWorker(PRTSTRSPACECORE pStr, void *pvUser)
+{
+    PDBGDIGGERLINUXCFGITEM pCfgItem = (PDBGDIGGERLINUXCFGITEM)pStr;
+    RTStrFree((char *)pCfgItem->Core.pszString);
+    RTMemFree(pCfgItem);
+    NOREF(pvUser);
+    return 0;
+}
+
+
+/**
+ * Destroy the config database.
+ *
+ * @returns nothing.
+ * @param   pThis               The Linux digger data.
+ */
+static void dbgDiggerLinuxCfgDbDestroy(PDBGDIGGERLINUX pThis)
+{
+    RTStrSpaceDestroy(&pThis->hCfgDb, dbgDiggerLinuxCfgDbDestroyWorker, NULL);
+}
+
+
+/**
  * @copydoc DBGFOSREG::pfnQueryInterface
  */
 static DECLCALLBACK(void *) dbgDiggerLinuxQueryInterface(PUVM pUVM, void *pvData, DBGFOSINTERFACE enmIf)
@@ -1021,6 +1095,7 @@ static DECLCALLBACK(void)  dbgDiggerLinuxTerm(PUVM pUVM, void *pvData)
     PDBGDIGGERLINUX pThis = (PDBGDIGGERLINUX)pvData;
     Assert(pThis->fValid);
 
+    dbgDiggerLinuxCfgDbDestroy(pThis);
     pThis->fValid = false;
 }
 
@@ -1712,6 +1787,399 @@ static int dbgDiggerLinuxFindSymbolTableFromNeedle(PDBGDIGGERLINUX pThis, PUVM p
 
     return rc;
 }
+
+/**
+ * Skips whitespace and comments in the given config returning the pointer
+ * to the first non whitespace character.
+ *
+ * @returns Pointer to the first non whitespace character or NULL if the end
+ *          of the string was reached.
+ * @param   pszCfg              The config string.
+ */
+static const char *dbgDiggerLinuxCfgSkipWhitespace(const char *pszCfg)
+{
+    do
+    {
+        while (   *pszCfg != '\0'
+               && (   RT_C_IS_SPACE(*pszCfg)
+                   || *pszCfg == '\n'))
+            pszCfg++;
+
+        /* Do we have a comment? Skip it. */
+        if (*pszCfg == '#')
+        {
+            while (   *pszCfg != '\n'
+                   && *pszCfg != '\0')
+                pszCfg++;
+        }
+    } while (   *pszCfg != '\0'
+             && (   RT_C_IS_SPACE(*pszCfg)
+                 || *pszCfg == '\n'
+                 || *pszCfg == '#'));
+
+    return pszCfg;
+}
+
+/**
+ * Parses an identifier at the given position.
+ *
+ * @returns VBox status code.
+ * @param   pszCfg              The config data.
+ * @param   ppszCfgNext         Where to store the pointer to the data following the identifier.
+ * @param   ppszIde             Where to store the pointer to the identifier on success.
+ *                              Free with RTStrFree().         
+ */
+static int dbgDiggerLinuxCfgParseIde(const char *pszCfg, const char **ppszCfgNext, char **ppszIde)
+{
+    int rc = VINF_SUCCESS;
+    size_t cchIde = 0;
+
+    while (   *pszCfg != '\0'
+           && (   RT_C_IS_ALNUM(*pszCfg)
+               || *pszCfg == '_'))
+    {
+        cchIde++;
+        pszCfg++;
+    }
+
+    if (cchIde)
+    {
+        *ppszIde = RTStrDupN(pszCfg - cchIde, cchIde);
+        if (!*ppszIde)
+            rc = VERR_NO_STR_MEMORY;
+    }
+
+    *ppszCfgNext = pszCfg;
+    return rc;
+}
+
+/**
+ * Parses a value for a config item.
+ *
+ * @returns VBox status code.
+ * @param   pszCfg              The config data.
+ * @param   ppszCfgNext         Where to store the pointer to the data following the identifier.
+ * @param   pcbCfg              Where the initial size of the string is stored.
+ *                              Contains the remaining string length on return.
+ * @param   ppCfgItem           Where to store the created config item on success.
+ */
+static int dbgDiggerLinuxCfgParseVal(const char *pszCfg, const char **ppszCfgNext,
+                                     PDBGDIGGERLINUXCFGITEM *ppCfgItem)
+{
+    int rc = VINF_SUCCESS;
+    PDBGDIGGERLINUXCFGITEM pCfgItem = NULL;
+
+    if (RT_C_IS_DIGIT(*pszCfg) || *pszCfg == '-')
+    {
+        /* Parse the number. */
+        int64_t i64Num;
+        rc = RTStrToInt64Ex(pszCfg, (char **)ppszCfgNext, 0, &i64Num);
+        if (   RT_SUCCESS(rc)
+            || rc == VWRN_TRAILING_CHARS
+            || rc == VWRN_TRAILING_SPACES)
+        {
+            pCfgItem = (PDBGDIGGERLINUXCFGITEM)RTMemAllocZ(sizeof(DBGDIGGERLINUXCFGITEM));
+            if (pCfgItem)
+            {
+                pCfgItem->enmType = DBGDIGGERLINUXCFGITEMTYPE_NUMBER;
+                pCfgItem->u.i64Num = i64Num; 
+            }
+            else
+                rc = VERR_NO_MEMORY;
+        }
+    }
+    else if (*pszCfg == '\"')
+    {
+        /* Parse a string. */
+        const char *pszCfgCur = pszCfg + 1;
+        while (   *pszCfgCur != '\0'
+               && *pszCfgCur != '\"')
+            pszCfgCur++;
+
+        if (*pszCfgCur == '\"')
+        {
+            pCfgItem = (PDBGDIGGERLINUXCFGITEM)RTMemAllocZ(RT_OFFSETOF(DBGDIGGERLINUXCFGITEM, u.aszString[pszCfgCur - pszCfg + 1]));
+            if (pCfgItem)
+            {
+                pCfgItem->enmType = DBGDIGGERLINUXCFGITEMTYPE_STRING;
+                RTStrCopyEx(&pCfgItem->u.aszString[0], pszCfgCur - pszCfg + 1, pszCfg, pszCfgCur - pszCfg);
+                *ppszCfgNext = pszCfgCur + 1;
+            }
+            else
+                rc = VERR_NO_MEMORY;
+        }
+        else
+            rc = VERR_INVALID_STATE;
+    }
+    else if (   *pszCfg == 'y'
+             || *pszCfg == 'm')
+    {
+        /* Included or module. */
+        pCfgItem = (PDBGDIGGERLINUXCFGITEM)RTMemAllocZ(sizeof(DBGDIGGERLINUXCFGITEM));
+        if (pCfgItem)
+        {
+            pCfgItem->enmType = DBGDIGGERLINUXCFGITEMTYPE_FLAG;
+            pCfgItem->u.fModule = *pszCfg == 'm'; 
+        }
+        else
+            rc = VERR_NO_MEMORY;
+        pszCfg++;
+        *ppszCfgNext = pszCfg;
+    }
+    else
+        rc = VERR_INVALID_STATE;
+
+    if (RT_SUCCESS(rc))
+        *ppCfgItem = pCfgItem;
+    else if (pCfgItem)
+        RTMemFree(pCfgItem);
+
+    return rc;
+}
+
+/**
+ * Parses the given kernel config and creates the config database.
+ *
+ * @returns VBox status code
+ * @param   pThis               The Linux digger data.
+ * @param   pbCfg               The config string.
+ */
+static int dbgDiggerLinuxCfgParse(PDBGDIGGERLINUX pThis, const char *pszCfg)
+{
+    int rc = VINF_SUCCESS;
+
+    /*
+     * The config is a text file with the following elements:
+     *     # starts a comment which goes till the end of the line
+     *     <Ide>=<val> where <Ide> is an identifier consisting of
+     *                 alphanumerical characters (including _)
+     *     <val> denotes the value for the identifier and can have the following
+     *           formats:
+     *               (-)[0-9]* for numbers
+     *               "..."     for a string value
+     *               m         when a feature is enabled as a module
+     *               y         when a feature is enabled
+     * Newlines are used as a separator between values and mark the end
+     * of a comment
+     */
+    const char *pszCfgCur = pszCfg;
+    while (   RT_SUCCESS(rc)
+           && *pszCfgCur != '\0')
+    {
+        /* Start skipping the whitespace. */
+        pszCfgCur = dbgDiggerLinuxCfgSkipWhitespace(pszCfgCur);
+        if (   pszCfgCur
+            && *pszCfgCur != '\0')
+        {
+            char *pszIde = NULL;
+            /* Must be an identifier, parse it. */
+            rc = dbgDiggerLinuxCfgParseIde(pszCfgCur, &pszCfgCur, &pszIde);
+            if (RT_SUCCESS(rc))
+            {
+                /*
+                 * Skip whitespace again (shouldn't be required because = follows immediately
+                 * in the observed configs).
+                 */
+                pszCfgCur = dbgDiggerLinuxCfgSkipWhitespace(pszCfgCur);
+                if (   pszCfgCur
+                    && *pszCfgCur == '=')
+                {
+                    pszCfgCur++;
+                    pszCfgCur = dbgDiggerLinuxCfgSkipWhitespace(pszCfgCur);
+                    if (   pszCfgCur
+                        && *pszCfgCur != '\0')
+                    {
+                        /* Get the value. */
+                        PDBGDIGGERLINUXCFGITEM pCfgItem = NULL;
+                        rc = dbgDiggerLinuxCfgParseVal(pszCfgCur, &pszCfgCur, &pCfgItem);
+                        if (RT_SUCCESS(rc))
+                        {
+                            pCfgItem->Core.pszString = pszIde;
+                            bool fRc = RTStrSpaceInsert(&pThis->hCfgDb, &pCfgItem->Core);
+                            if (!fRc)
+                            {
+                                RTStrFree(pszIde);
+                                RTMemFree(pCfgItem);
+                                rc = VERR_INVALID_STATE;
+                            }
+                        }
+                    }
+                    else
+                        rc = VERR_EOF;
+                }
+                else
+                    rc = VERR_INVALID_STATE;
+            }
+
+            if (RT_FAILURE(rc))
+                RTStrFree(pszIde);
+        }
+        else
+            break; /* Reached the end of the config. */
+    }
+
+    if (RT_FAILURE(rc))
+        dbgDiggerLinuxCfgDbDestroy(pThis);
+
+    return rc;
+}
+
+/** 
+ * Decompresses the given config and validates the UTF-8 encoding.
+ *
+ * @returns VBox status code.
+ * @param   pbCfgComp           The compressed config.
+ * @param   cbCfgComp           Size of the compressed config.
+ * @param   ppszCfg             Where to store the pointer to the decompressed config
+ *                              on success.
+ */
+static int dbgDiggerLinuxCfgDecompress(const uint8_t *pbCfgComp, size_t cbCfgComp, char **ppszCfg)
+{
+    int rc = VINF_SUCCESS;
+    RTVFSIOSTREAM hVfsIos = NIL_RTVFSIOSTREAM;
+
+    rc = RTVfsIoStrmFromBuffer(RTFILE_O_READ, pbCfgComp, cbCfgComp, &hVfsIos);
+    if (RT_SUCCESS(rc))
+    {
+        RTVFSIOSTREAM hVfsIosDecomp = NIL_RTVFSIOSTREAM;
+        rc = RTZipGzipDecompressIoStream(hVfsIos, RTZIPGZIPDECOMP_F_ALLOW_ZLIB_HDR, &hVfsIosDecomp);
+        if (RT_SUCCESS(rc))
+        {
+            char *pszCfg = NULL;
+            size_t cchCfg = 0;
+            size_t cbRead = 0;
+
+            do
+            {
+                uint8_t abBuf[_64K];
+                rc = RTVfsIoStrmRead(hVfsIosDecomp, abBuf, sizeof(abBuf), true /*fBlocking*/, &cbRead);
+                if (rc == VINF_EOF && cbRead == 0)
+                    rc = VINF_SUCCESS;
+                if (   RT_SUCCESS(rc)
+                    && cbRead > 0)
+                {
+                    /* Append data. */
+                    char *pszCfgNew = pszCfg;
+                    rc = RTStrRealloc(&pszCfgNew, cchCfg + cbRead + 1);
+                    if (RT_SUCCESS(rc))
+                    {
+                        pszCfg = pszCfgNew;
+                        memcpy(pszCfg + cchCfg, &abBuf[0], cbRead);
+                        cchCfg += cbRead;
+                        pszCfg[cchCfg] = '\0'; /* Enforce string termination. */
+                    }
+                }
+            } while (RT_SUCCESS(rc) && cbRead > 0);
+
+            if (RT_SUCCESS(rc))
+                *ppszCfg = pszCfg;
+            else if (RT_FAILURE(rc) && pszCfg)
+                RTStrFree(pszCfg);
+
+            RTVfsIoStrmRelease(hVfsIosDecomp);
+        }
+        RTVfsIoStrmRelease(hVfsIos);
+    }
+
+    return rc;
+}
+
+/**
+ * Reads and decodes the compressed kernel config.
+ *
+ * @returns VBox status code.
+ * @param   pThis               The Linux digger data.
+ * @param   pUVM                The user mode VM handle.
+ * @param   pAddrStart          The start address of the compressed config.
+ * @param   cbCfgComp           The size of the compressed config.
+ */
+static int dbgDiggerLinuxCfgDecode(PDBGDIGGERLINUX pThis, PUVM pUVM,
+                                   PCDBGFADDRESS pAddrStart, size_t cbCfgComp)
+{
+    int rc = VINF_SUCCESS;
+    uint8_t *pbCfgComp = (uint8_t *)RTMemTmpAlloc(cbCfgComp);
+    if (!pbCfgComp)
+        return VERR_NO_MEMORY;
+
+    rc = DBGFR3MemRead(pUVM, 0 /*idCpu*/, pAddrStart, pbCfgComp, cbCfgComp);
+    if (RT_SUCCESS(rc))
+    {
+        char *pszCfg = NULL;
+        rc = dbgDiggerLinuxCfgDecompress(pbCfgComp, cbCfgComp, &pszCfg);
+        if (RT_SUCCESS(rc))
+        {
+            if (RTStrIsValidEncoding(pszCfg))
+                rc = dbgDiggerLinuxCfgParse(pThis, pszCfg);
+            else
+                rc = VERR_INVALID_UTF8_ENCODING;
+            RTStrFree(pszCfg);
+        }
+    }
+
+    RTMemFree(pbCfgComp);
+    return rc;
+}
+
+/**
+ * Tries to find the compressed kernel config in the kernel address space
+ * and sets up the config database.
+ *
+ * @returns VBox status code.
+ * @param   pThis               The Linux digger data.
+ * @param   pUVM                The user mode VM handle.
+ */
+static int dbgDiggerLinuxCfgFind(PDBGDIGGERLINUX pThis, PUVM pUVM)
+{
+    int rc = VINF_SUCCESS;
+
+    /*
+     * Go looking for the IKCFG_ST string which indicates the start
+     * of the compressed config file.
+     */
+    static const uint8_t s_abCfgNeedleStart[] = "IKCFG_ST";
+    static const uint8_t s_abCfgNeedleEnd[] = "IKCFG_ED";
+    DBGFADDRESS CurAddr = pThis->AddrLinuxBanner;
+    uint32_t    cbLeft  = LNX_MAX_KERNEL_SIZE;
+    while (cbLeft > 4096)
+    {
+        DBGFADDRESS HitAddrStart;
+        rc = DBGFR3MemScan(pUVM, 0 /*idCpu*/, &CurAddr, cbLeft, 1 /*uAlign*/,
+                           s_abCfgNeedleStart, sizeof(s_abCfgNeedleStart) - 1, &HitAddrStart);
+        if (RT_FAILURE(rc))
+            break;
+
+        /* Check for the end marker which shouldn't be that far away. */
+        DBGFR3AddrAdd(&HitAddrStart, sizeof(s_abCfgNeedleStart) - 1);
+        DBGFADDRESS HitAddrEnd;
+        rc = DBGFR3MemScan(pUVM, 0 /* idCpu */, &HitAddrStart, LNX_MAX_COMPRESSED_CFG_SIZE,
+                           1 /* uAlign */, s_abCfgNeedleEnd, sizeof(s_abCfgNeedleEnd) - 1, &HitAddrEnd);
+        if (RT_SUCCESS(rc))
+        {
+            /* Allocate a buffer to hold the compressed data between the markers and fetch it. */
+            RTGCUINTPTR cbCfg = HitAddrEnd.FlatPtr - HitAddrStart.FlatPtr;
+            Assert(cbCfg == (size_t)cbCfg);
+            rc = dbgDiggerLinuxCfgDecode(pThis, pUVM, &HitAddrStart, cbCfg);
+            if (RT_SUCCESS(rc))
+                break;
+        }
+
+        /*
+         * Advance.
+         */
+        RTGCUINTPTR cbDistance = HitAddrStart.FlatPtr - CurAddr.FlatPtr + sizeof(s_abCfgNeedleStart) - 1;
+        if (RT_UNLIKELY(cbDistance >= cbLeft))
+        {
+            LogFunc(("Failed to find compressed kernel config\n"));
+            break;
+        }
+        cbLeft -= cbDistance;
+        DBGFR3AddrAdd(&CurAddr, cbDistance);
+
+    }
+
+    return rc;
+}
+
 /**
  * @copydoc DBGFOSREG::pfnInit
  */
@@ -1725,8 +2193,19 @@ static DECLCALLBACK(int)  dbgDiggerLinuxInit(PUVM pUVM, void *pvData)
      */
     pThis->f64Bit = pThis->AddrLinuxBanner.FlatPtr > UINT32_MAX;
 
+    pThis->hCfgDb = NULL;
+
+    /*
+     * Try to find the compressed kernel config and parse it before we try
+     * to get the symbol table, the config database is required to select
+     * the method to use.
+     */ 
+    int rc = dbgDiggerLinuxCfgFind(pThis, pUVM);
+    if (RT_FAILURE(rc))
+        LogFlowFunc(("Failed to find kernel config (%Rrc), no config database available\n", rc));
+
     static const uint8_t s_abNeedle[] = "kobj";
-    int rc = dbgDiggerLinuxFindSymbolTableFromNeedle(pThis, pUVM, s_abNeedle, sizeof(s_abNeedle) - 1);
+    rc = dbgDiggerLinuxFindSymbolTableFromNeedle(pThis, pUVM, s_abNeedle, sizeof(s_abNeedle) - 1);
     if (RT_FAILURE(rc))
     {
         /* Try alternate needle (seen on older x86 Linux kernels). */
diff --git a/src/VBox/Devices/Audio/AudioMixBuffer.cpp b/src/VBox/Devices/Audio/AudioMixBuffer.cpp
index 63bb37b..b9a3611 100644
--- a/src/VBox/Devices/Audio/AudioMixBuffer.cpp
+++ b/src/VBox/Devices/Audio/AudioMixBuffer.cpp
@@ -18,7 +18,7 @@
 #define LOG_GROUP LOG_GROUP_AUDIO_MIXER_BUFFER
 #include <VBox/log.h>
 
-#ifdef DEBUG_andy
+#if 0
 /*
  * AUDIOMIXBUF_DEBUG_DUMP_PCM_DATA enables dumping the raw PCM data
  * to a file on the host. Be sure to adjust AUDIOMIXBUF_DEBUG_DUMP_PCM_DATA_PATH
@@ -923,7 +923,14 @@ int AudioMixBufLinkTo(PPDMAUDIOMIXBUF pMixBuf, PPDMAUDIOMIXBUF pParent)
 }
 
 /**
- * Returns number of available live samples.
+ * Returns number of available live samples, that is, samples that
+ * have been written into the mixing buffer but not have been processed yet.
+ *
+ * For a parent buffer, this simply returns the currently used number of samples
+ * in the buffer.
+ *
+ * For a child buffer, this returns the number of samples which have been mixed
+ * to the parent and were not processed by the parent yet.
  *
  * @return  uint32_t                Number of live samples available.
  * @param   pMixBuf                 Mixing buffer to return value for.
@@ -932,18 +939,25 @@ uint32_t AudioMixBufLive(PPDMAUDIOMIXBUF pMixBuf)
 {
     AssertPtrReturn(pMixBuf, 0);
 
-    uint32_t cSamples, cAvail;
+#ifdef RT_STRICT
+    uint32_t cSamples;
+#endif
+    uint32_t cAvail;
     if (pMixBuf->pParent) /* Is this a child buffer? */
     {
+#ifdef RT_STRICT
         /* Use the sample count from the parent, as
          * pMixBuf->cMixed specifies the sample count
          * in parent samples. */
         cSamples = pMixBuf->pParent->cSamples;
+#endif
         cAvail   = pMixBuf->cMixed;
     }
     else
     {
+#ifdef RT_STRICT
         cSamples = pMixBuf->cSamples;
+#endif
         cAvail   = pMixBuf->cUsed;
     }
 
@@ -1843,8 +1857,6 @@ int AudioMixBufWriteCircEx(PPDMAUDIOMIXBUF pMixBuf, PDMAUDIOMIXBUFFMT enmFmt,
     convOpts.From.Volume.uLeft  = pMixBuf->Volume.uLeft;
     convOpts.From.Volume.uRight = pMixBuf->Volume.uRight;
 
-    LogFlowFunc(("ASDF %RU32 %RU32\n", pMixBuf->Volume.uLeft, pMixBuf->Volume.uRight));
-
     /* Anything to do at all? */
     if (cLenDst1)
     {
diff --git a/src/VBox/Devices/Audio/AudioMixer.h b/src/VBox/Devices/Audio/AudioMixer.h
index 2e1e858..cc284ff 100644
--- a/src/VBox/Devices/Audio/AudioMixer.h
+++ b/src/VBox/Devices/Audio/AudioMixer.h
@@ -230,7 +230,6 @@ void AudioMixerSinkRemoveStream(PAUDMIXSINK pSink, PAUDMIXSTREAM pStream);
 void AudioMixerSinkRemoveAllStreams(PAUDMIXSINK pSink);
 int AudioMixerSinkSetFormat(PAUDMIXSINK pSink, PPDMPCMPROPS pPCMProps);
 int AudioMixerSinkSetVolume(PAUDMIXSINK pSink, PPDMAUDIOVOLUME pVol);
-void AudioMixerSinkTimerUpdate(PAUDMIXSINK pSink, uint64_t cTimerTicks, uint64_t cTicksElapsed, uint32_t *pcbToProcess);
 int AudioMixerSinkWrite(PAUDMIXSINK pSink, AUDMIXOP enmOp, const void *pvBuf, uint32_t cbBuf, uint32_t *pcbWritten);
 int AudioMixerSinkUpdate(PAUDMIXSINK pSink);
 
diff --git a/src/VBox/Devices/Audio/DevIchAc97.cpp b/src/VBox/Devices/Audio/DevIchAc97.cpp
index 4bd2bfd..33aa334 100644
--- a/src/VBox/Devices/Audio/DevIchAc97.cpp
+++ b/src/VBox/Devices/Audio/DevIchAc97.cpp
@@ -137,14 +137,11 @@
 #define AC97_BARS_VOL_MASK              0x1f   /**< Volume mask for the Baseline Audio Register Set (5.7.2). */
 #define AC97_BARS_VOL_STEPS             31     /**< Volume steps for the Baseline Audio Register Set (5.7.2). */
 #define AC97_BARS_VOL_MUTE_SHIFT        15     /**< Mute bit shift for the Baseline Audio Register Set (5.7.2). */
-
-#define AC97_BARS_VOL_MASTER_MASK       0x3f   /**< Master volume mask for the Baseline Audio Register Set (5.7.2). */
-#define AC97_BARS_VOL_MASTER_STEPS      63     /**< Master volume steps for the Baseline Audio Register Set (5.7.2). */
-#define AC97_BARS_VOL_MASTER_MUTE_SHIFT 15     /**< Master Mute bit shift for the Baseline Audio Register Set (5.7.2). */
-
-#define AC97_VOL_MAX_STEPS              63
 /** @} */
 
+/* AC'97 uses 1.5dB steps, we use 0.375dB steps: 1 AC'97 step equals 4 PDM steps. */
+#define AC97_DB_FACTOR                  4
+
 #define AC97_REC_MASK 7
 enum
 {
@@ -964,24 +961,9 @@ static void ichac97StreamReset(PAC97STATE pThis, PAC97STREAM pStrm)
 
 static int ichac97MixerSetVolume(PAC97STATE pThis, int index, PDMAUDIOMIXERCTL enmMixerCtl, uint32_t uVal)
 {
-#ifdef DEBUG
-    uint32_t uValMaster = ichac97MixerGet(pThis, AC97_Master_Volume_Mute);
-
-    bool    fMasterMuted = (uValMaster >> AC97_BARS_VOL_MASTER_MUTE_SHIFT) & 1;
-    uint8_t lMasterAtt   = (uValMaster >> 8) & AC97_BARS_VOL_MASTER_MASK;
-    uint8_t rMasterAtt   = uValMaster & AC97_BARS_VOL_MASTER_MASK;
-
-    Assert(lMasterAtt <= AC97_VOL_MAX_STEPS);
-    Assert(rMasterAtt <= AC97_VOL_MAX_STEPS);
-
-    LogFlowFunc(("lMasterAtt=%RU8, rMasterAtt=%RU8, fMasterMuted=%RTbool\n", lMasterAtt, rMasterAtt, fMasterMuted));
-#endif
-
     bool    fCntlMuted;
     uint8_t lCntlAtt, rCntlAtt;
 
-    uint8_t uSteps;
-
     /*
      * From AC'97 SoundMax Codec AD1981A/AD1981B:
      * "Because AC '97 defines 6-bit volume registers, to maintain compatibility whenever the
@@ -991,54 +973,40 @@ static int ichac97MixerSetVolume(PAC97STATE pThis, int index, PDMAUDIOMIXERCTL e
      *
      * Linux ALSA depends on this behavior.
      */
+    //@todo: Does this apply to anything other than the master volume control?
     if (uVal & RT_BIT(5))
         uVal |= RT_BIT(4) | RT_BIT(3) | RT_BIT(2) | RT_BIT(1) | RT_BIT(0);
     if (uVal & RT_BIT(13))
         uVal |= RT_BIT(12) | RT_BIT(11) | RT_BIT(10) | RT_BIT(9) | RT_BIT(8);
 
-    /* For the master volume, 0 corresponds to 0dB attenuation, each step
-     * corresponds to -1.5dB. */
-    if (index == AC97_Master_Volume_Mute)
-    {
-        fCntlMuted = (uVal >> AC97_BARS_VOL_MASTER_MUTE_SHIFT) & 1;
-        lCntlAtt   = (uVal >> 8) & AC97_BARS_VOL_MASTER_MASK;
-        rCntlAtt   = uVal & AC97_BARS_VOL_MASTER_MASK;
+    fCntlMuted = (uVal >> AC97_BARS_VOL_MUTE_SHIFT) & 1;
+    lCntlAtt   = (uVal >> 8) & AC97_BARS_VOL_MASK;
+    rCntlAtt   = uVal & AC97_BARS_VOL_MASK;
 
-        uSteps = PDMAUDIO_VOLUME_MAX / AC97_BARS_VOL_MASTER_STEPS;
-    }
-    /* For other volume controls:
-     * - 0 - 7 corresponds to +12dB, in 1.5dB steps.
-     * - 8     corresponds to 0dB gain (unchanged).
-     * - 9 - X corresponds to -1.5dB steps. */
-    else
+    /* For the master and headphone volume, 0 corresponds to 0dB attenuation. For the other
+     * volume controls, 0 means 12dB gain and 8 means unity gain.
+     */
+    if (index != AC97_Master_Volume_Mute && index != AC97_Headphone_Volume_Mute)
     {
-        fCntlMuted = (uVal >> AC97_BARS_VOL_MUTE_SHIFT) & 1;
-        lCntlAtt   = (uVal >> 8) & AC97_BARS_VOL_MASK;
-        rCntlAtt   = uVal & AC97_BARS_VOL_MASK;
-
-        Assert(lCntlAtt <= AC97_VOL_MAX_STEPS);
-        Assert(rCntlAtt <= AC97_VOL_MAX_STEPS);
-
 #ifndef VBOX_WITH_AC97_GAIN_SUPPORT
         /* NB: Currently there is no gain support, only attenuation. */
-        lCntlAtt = lCntlAtt <= 8 ? 0 : lCntlAtt - 8;
-        rCntlAtt = rCntlAtt <= 8 ? 0 : rCntlAtt - 8;
+        lCntlAtt = lCntlAtt < 8 ? 0 : lCntlAtt - 8;
+        rCntlAtt = rCntlAtt < 8 ? 0 : rCntlAtt - 8;
 #endif
-        uSteps = PDMAUDIO_VOLUME_MAX / AC97_BARS_VOL_STEPS;
     }
+    Assert(lCntlAtt <= 255 / AC97_DB_FACTOR);
+    Assert(rCntlAtt <= 255 / AC97_DB_FACTOR);
 
     LogFunc(("index=0x%x, uVal=%RU32, enmMixerCtl=%RU32\n", index, uVal, enmMixerCtl));
-
     LogFunc(("lAtt=%RU8, rAtt=%RU8 ", lCntlAtt, rCntlAtt));
 
     /*
-     * AC'97 volume controls have 31 steps, each -1.5dB => -40,5dB attenuation total.
-     *
-     * In contrast, we're internally using 255 (PDMAUDIO_VOLUME_MAX) steps, each -0.375dB,
-     * where 0 corresponds to -96dB and 255 corresponds to 0dB (unchanged).
+     * For AC'97 volume controls, each additional step means -1.5dB attenuation with
+     * zero being maximum. In contrast, we're internally using 255 (PDMAUDIO_VOLUME_MAX)
+     * steps, each -0.375dB, where 0 corresponds to -96dB and 255 corresponds to 0dB.
      */
-    uint8_t lVol = PDMAUDIO_VOLUME_MAX - RT_MIN((lCntlAtt * 4 /* dB resolution */ * uSteps /* steps */), PDMAUDIO_VOLUME_MAX);
-    uint8_t rVol = PDMAUDIO_VOLUME_MAX - RT_MIN((rCntlAtt * 4 /* dB resolution */ * uSteps /* steps */), PDMAUDIO_VOLUME_MAX);
+    uint8_t lVol = PDMAUDIO_VOLUME_MAX - lCntlAtt * AC97_DB_FACTOR;
+    uint8_t rVol = PDMAUDIO_VOLUME_MAX - rCntlAtt * AC97_DB_FACTOR;
 
     Log(("-> fMuted=%RTbool, lVol=%RU8, rVol=%RU8\n", fCntlMuted, lVol, rVol));
 
@@ -1446,7 +1414,7 @@ static DECLCALLBACK(void) ichac97Timer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void
         if (cbToProcess)
             rc = ichac97TransferAudio(pThis, &pThis->StreamLineIn, cbToProcess, NULL /* pcbProcessed */);
 
-        fKickTimer |= AudioMixerSinkGetStatus(pThis->pSinkLineIn) & AUDMIXSINK_STS_DIRTY;
+        fKickTimer |= !!(AudioMixerSinkGetStatus(pThis->pSinkLineIn) & AUDMIXSINK_STS_DIRTY);
     }
 
     rc = AudioMixerSinkUpdate(pThis->pSinkMicIn);
@@ -1456,7 +1424,7 @@ static DECLCALLBACK(void) ichac97Timer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void
         if (cbToProcess)
             rc = ichac97TransferAudio(pThis, &pThis->StreamMicIn, cbToProcess, NULL /* pcbProcessed */);
 
-        fKickTimer |= AudioMixerSinkGetStatus(pThis->pSinkMicIn) & AUDMIXSINK_STS_DIRTY;
+        fKickTimer |= !!(AudioMixerSinkGetStatus(pThis->pSinkMicIn) & AUDMIXSINK_STS_DIRTY);
     }
 
     rc = AudioMixerSinkUpdate(pThis->pSinkOutput);
@@ -1466,7 +1434,7 @@ static DECLCALLBACK(void) ichac97Timer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void
         if (cbToProcess)
             rc = ichac97TransferAudio(pThis, &pThis->StreamOut, cbToProcess, NULL /* pcbProcessed */);
 
-        fKickTimer |= AudioMixerSinkGetStatus(pThis->pSinkOutput) & AUDMIXSINK_STS_DIRTY;
+        fKickTimer |= !!(AudioMixerSinkGetStatus(pThis->pSinkOutput) & AUDMIXSINK_STS_DIRTY);
     }
 
     if (   ASMAtomicReadBool(&pThis->fTimerActive)
@@ -1633,8 +1601,13 @@ static int ichac97TransferAudio(PAC97STATE pThis, PAC97STREAM pStream, uint32_t
             ichac97StreamUpdateStatus(pThis, pStream, new_sr);
         }
 
-        if (rc == VINF_EOF) /* All data processed? */
+        if (/* All data processed? */
+               rc == VINF_EOF
+            /* ... or an error occurred? */
+            || RT_FAILURE(rc))
+        {
             break;
+        }
     }
 
     if (RT_SUCCESS(rc))
diff --git a/src/VBox/Devices/Audio/DevSB16.cpp b/src/VBox/Devices/Audio/DevSB16.cpp
index 7c1ece3..58e9371 100644
--- a/src/VBox/Devices/Audio/DevSB16.cpp
+++ b/src/VBox/Devices/Audio/DevSB16.cpp
@@ -1,8 +1,6 @@
 /* $Id: DevSB16.cpp $ */
 /** @file
  * DevSB16 - VBox SB16 Audio Controller.
- *
- * @todo hiccups on NT4 and Win98.
  */
 
 /*
@@ -43,6 +41,7 @@
 #define LOG_GROUP LOG_GROUP_DEV_SB16
 #include <VBox/log.h>
 #include <iprt/assert.h>
+#include <iprt/file.h>
 #ifdef IN_RING3
 # include <iprt/mem.h>
 # include <iprt/string.h>
@@ -58,6 +57,20 @@
 #include "AudioMixer.h"
 #include "DrvAudio.h"
 
+#if 0
+/*
+ * SB16_DEBUG_DUMP_PCM_DATA enables dumping the raw PCM data
+ * to a file on the host. Be sure to adjust SB16_DEBUG_DUMP_PCM_DATA_PATH
+ * to your needs before using this!
+ */
+# define SB16_DEBUG_DUMP_PCM_DATA
+# ifdef RT_OS_WINDOWS
+#  define SB16_DEBUG_DUMP_PCM_DATA_PATH "c:\\temp\\"
+# else
+#  define SB16_DEBUG_DUMP_PCM_DATA_PATH "/tmp/"
+# endif
+#endif
+
 /** Current saved state version. */
 #define SB16_SAVE_STATE_VERSION         2
 /** The version used in VirtualBox version 3.0 and earlier. This didn't include the config dump. */
@@ -1637,6 +1650,13 @@ static int sb16WriteAudio(PSB16STATE pThis, int nchan, uint32_t dma_pos,
         int rc = PDMDevHlpDMAReadMemory(pThis->pDevInsR3, nchan, tmpbuf, dma_pos, cbToRead, &cbRead);
         AssertMsgRC(rc, ("DMAReadMemory -> %Rrc\n", rc));
 
+#ifdef SB16_DEBUG_DUMP_PCM_DATA
+        RTFILE fh;
+        RTFileOpen(&fh, SB16_DEBUG_DUMP_PCM_DATA_PATH "sb16WriteAudio.pcm",
+                   RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND | RTFILE_O_WRITE | RTFILE_O_DENY_NONE);
+        RTFileWrite(fh, tmpbuf, cbToRead, NULL);
+        RTFileClose(fh);
+#endif
         /*
          * Write data to the backends.
          */
@@ -1680,10 +1700,6 @@ static DECLCALLBACK(uint32_t) sb16DMARead(PPDMDEVINS pDevIns, void *opaque, unsi
     if (pThis->left_till_irq < 0)
         pThis->left_till_irq = pThis->block_size;
 
-    PSB16DRIVER pDrv;
-    RTListForEach(&pThis->lstDrv, pDrv, SB16DRIVER, Node)
-        pDrv->pConnector->pfnStreamIterate(pDrv->pConnector, pDrv->Out.pStream);
-
     free = dma_len;
 
     if (free <= 0)
@@ -1692,9 +1708,7 @@ static DECLCALLBACK(uint32_t) sb16DMARead(PPDMDEVINS pDevIns, void *opaque, unsi
     copy = free;
     till = pThis->left_till_irq;
 
-#ifdef DEBUG_SB16_MOST
-    LogFlowFunc(("pos:%06d %d till:%d len:%d\n", dma_pos, free, till, dma_len));
-#endif
+    Log3Func(("pos %d/%d free %5d till %5d\n", dma_pos, dma_len, free, till));
 
     if (copy >= till)
     {
@@ -1724,11 +1738,9 @@ static DECLCALLBACK(uint32_t) sb16DMARead(PPDMDEVINS pDevIns, void *opaque, unsi
         }
     }
 
-#ifdef DEBUG_SB16_MOST
-    LogFlowFunc(("pos %5d free %5d size %5d till % 5d copy %5d written %5d size %5d\n",
-                 dma_pos, free, dma_len, pThis->left_till_irq, copy, written,
-                 pThis->block_size));
-#endif
+    Log3Func(("pos %d/%d free %5d till %5d copy %5d written %5d block_size %5d\n",
+               dma_pos, dma_len, free, pThis->left_till_irq, copy, written,
+               pThis->block_size));
 
     while (pThis->left_till_irq <= 0)
         pThis->left_till_irq += pThis->block_size;
@@ -1782,12 +1794,10 @@ static DECLCALLBACK(void) sb16TimerIO(PPDMDEVINS pDevIns, PTMTIMER pTimer, void
     uint64_t cTicksElapsed = cTicksNow - pThis->uTimerTSIO;
     uint64_t cTicksPerSec  = TMTimerGetFreq(pTimer);
 
-    pThis->uTimerTSIO = cTicksNow;
-
-    bool     fIsPlaying = false;
-    uint32_t cbWritable = UINT32_MAX;
+    bool     fIsPlaying    = false; /* Whether one or more streams are still playing. */
+    bool     fDoTransfer   = false;
 
-    LogFlowFuncEnter();
+    pThis->uTimerTSIO = cTicksNow;
 
     PSB16DRIVER pDrv;
     RTListForEach(&pThis->lstDrv, pDrv, SB16DRIVER, Node)
@@ -1796,6 +1806,29 @@ static DECLCALLBACK(void) sb16TimerIO(PPDMDEVINS pDevIns, PTMTIMER pTimer, void
         if (!pStream)
             continue;
 
+#ifdef DEBUG
+        PSB16DRIVER pDrvPrev = RTListNodeGetPrev(&pDrv->Node, SB16DRIVER, Node);
+        if (   pDrvPrev
+            && !RTListNodeIsDummy(&pThis->lstDrv, pDrvPrev, SB16DRIVER, Node))
+        {
+            PPDMAUDIOSTREAM pStreamPrev = pDrvPrev->Out.pStream;
+            AssertPtr(pStreamPrev);
+
+            /*
+             * Sanity. Make sure that all streams have the same configuration
+             * to get SB16's DMA transfers right.
+             *
+             * SB16 only allows one output configuration per serial data out,
+             * so check if all streams have the same configuration.
+             */
+            AssertMsg(pStream->Cfg.uHz       == pStreamPrev->Cfg.uHz,
+                      ("%RU32Hz vs. %RU32Hz\n", pStream->Cfg.uHz, pStreamPrev->Cfg.uHz));
+            AssertMsg(pStream->Cfg.cChannels == pStreamPrev->Cfg.cChannels,
+                      ("%RU8 vs. %RU8 channels\n", pStream->Cfg.cChannels, pStreamPrev->Cfg.cChannels));
+            AssertMsg(pStream->Cfg.enmFormat == pStreamPrev->Cfg.enmFormat,
+                      ("%ld vs. %ld format\n", pStream->Cfg.enmFormat, pStreamPrev->Cfg.enmFormat));
+        }
+#endif
         PPDMIAUDIOCONNECTOR pConn = pDrv->pConnector;
         if (!pConn)
             continue;
@@ -1815,41 +1848,42 @@ static DECLCALLBACK(void) sb16TimerIO(PPDMDEVINS pDevIns, PTMTIMER pTimer, void
                     LogFlowFunc(("%s: Failed playing stream, rc=%Rrc\n", pStream->szName, rc2));
                     continue;
                 }
+            }
 
-                rc2 = pConn->pfnStreamIterate(pConn, pStream);
-                if (RT_FAILURE(rc2))
-                {
-                    LogFlowFunc(("%s: Failed re-iterating stream, rc=%Rrc\n", pStream->szName, rc2));
-                    continue;
-                }
-
-                cbWritable = RT_MIN(pConn->pfnStreamGetWritable(pConn, pStream), cbWritable);
+            if (pDrv->Flags & PDMAUDIODRVFLAG_PRIMARY)
+            {
+                /* Only do the next DMA transfer if we're able to write the entire
+                 * next data block. */
+                fDoTransfer = pConn->pfnStreamGetWritable(pConn, pStream) >= (uint32_t)pThis->block_size;
             }
         }
 
         PDMAUDIOSTRMSTS strmSts = pConn->pfnStreamGetStatus(pConn, pStream);
         fIsPlaying |= (   (strmSts & PDMAUDIOSTRMSTS_FLAG_ENABLED)
                        || (strmSts & PDMAUDIOSTRMSTS_FLAG_PENDING_DISABLE));
-
-        LogFlowFunc(("%s: strmSts=0x%x -> fIsPlaying=%RTbool\n", pStream->szName, strmSts, fIsPlaying));
     }
 
-    if (   ASMAtomicReadBool(&pThis->fTimerActive)
-        || fIsPlaying)
+    bool fTimerActive = ASMAtomicReadBool(&pThis->fTimerActive);
+    bool fKickTimer   = fTimerActive || fIsPlaying;
+
+    LogFlowFunc(("fTimerActive=%RTbool, fIsPlaying=%RTbool\n", fTimerActive, fIsPlaying));
+
+    if (fDoTransfer)
     {
-        if (cbWritable)
-        {
-            /* Schedule the next transfer. */
-            PDMDevHlpDMASchedule(pThis->pDevInsR3);
-        }
+        /* Schedule the next transfer. */
+        PDMDevHlpDMASchedule(pThis->pDevInsR3);
 
+        /* Kick the timer at least one more time. */
+        fKickTimer = true;
+    }
+
+    if (fKickTimer)
+    {
         /* Kick the timer again. */
         uint64_t cTicks = pThis->cTimerTicksIO;
         /** @todo adjust cTicks down by now much cbOutMin represents. */
         TMTimerSet(pThis->pTimerIO, cTicksNow + cTicks);
     }
-
-    LogFlowFuncLeave();
 }
 
 #endif /* !VBOX_WITH_AUDIO_CALLBACKS */
@@ -2074,13 +2108,14 @@ static int sb16OpenOut(PSB16STATE pThis, PPDMAUDIOSTREAMCFG pCfg)
     LogFlowFuncEnter();
 
     AssertReturn(pCfg->enmDir == PDMAUDIODIR_OUT, VERR_INVALID_PARAMETER);
+    Assert(DrvAudioHlpStreamCfgIsValid(pCfg));
 
     /* Set a default audio format for the host. */
     PDMAUDIOSTREAMCFG CfgHost;
     CfgHost.enmDir          = PDMAUDIODIR_OUT;
     CfgHost.DestSource.Dest = PDMAUDIOPLAYBACKDEST_FRONT;
-    CfgHost.uHz             = 44100;
-    CfgHost.cChannels       = 2;
+    CfgHost.uHz             = pCfg->uHz;
+    CfgHost.cChannels       = pCfg->cChannels;
     CfgHost.enmFormat       = PDMAUDIOFMT_S16;
     CfgHost.enmEndianness   = PDMAUDIOHOSTENDIANNESS;
 
@@ -2093,8 +2128,8 @@ static int sb16OpenOut(PSB16STATE pThis, PPDMAUDIOSTREAMCFG pCfg)
     PSB16DRIVER pDrv;
     RTListForEach(&pThis->lstDrv, pDrv, SB16DRIVER, Node)
     {
-        if (!RTStrPrintf(pCfg->szName, sizeof(pCfg->szName), "[LUN#%RU8] sb16.po (%RU32Hz, %RU8 %s)",
-                         pDrv->uLUN, pCfg->uHz, pCfg->cChannels, pCfg->cChannels > 1 ? "Channels" : "Channel"))
+        if (!RTStrPrintf(pCfg->szName, sizeof(pCfg->szName), "[LUN#%RU8] %s (%RU32Hz, %RU8 %s)",
+                         pDrv->uLUN, CfgHost.szName, pCfg->uHz, pCfg->cChannels, pCfg->cChannels > 1 ? "Channels" : "Channel"))
         {
             rc = VERR_BUFFER_OVERFLOW;
             break;
@@ -2138,14 +2173,8 @@ static void sb16CloseOut(PSB16STATE pThis)
     PSB16DRIVER pDrv;
     RTListForEach(&pThis->lstDrv, pDrv, SB16DRIVER, Node)
     {
-        if (pDrv->Out.pStream)
-        {
-            pDrv->pConnector->pfnStreamRelease(pDrv->pConnector, pDrv->Out.pStream);
-
-            int rc2 = pDrv->pConnector->pfnStreamDestroy(pDrv->pConnector, pDrv->Out.pStream);
-            if (RT_SUCCESS(rc2))
-                pDrv->Out.pStream = NULL;
-        }
+        int rc2 = pDrv->pConnector->pfnStreamControl(pDrv->pConnector, pDrv->Out.pStream, PDMAUDIOSTREAMCMD_DISABLE);
+        AssertRC(rc2);
     }
 
     LogFlowFuncLeave();
@@ -2207,7 +2236,18 @@ static DECLCALLBACK(void) sb16PowerOff(PPDMDEVINS pDevIns)
 
     LogRel2(("SB16: Powering off ...\n"));
 
-    sb16CloseOut(pThis);
+    PSB16DRIVER pDrv;
+    RTListForEach(&pThis->lstDrv, pDrv, SB16DRIVER, Node)
+    {
+        if (pDrv->Out.pStream)
+        {
+            pDrv->pConnector->pfnStreamRelease(pDrv->pConnector, pDrv->Out.pStream);
+
+            int rc2 = pDrv->pConnector->pfnStreamDestroy(pDrv->pConnector, pDrv->Out.pStream);
+            if (RT_SUCCESS(rc2))
+                pDrv->Out.pStream = NULL;
+        }
+    }
 }
 
 /**
diff --git a/src/VBox/Devices/Audio/DrvAudio.cpp b/src/VBox/Devices/Audio/DrvAudio.cpp
index 568a526..1fe3746 100644
--- a/src/VBox/Devices/Audio/DrvAudio.cpp
+++ b/src/VBox/Devices/Audio/DrvAudio.cpp
@@ -136,17 +136,20 @@ inline PPDMAUDIOSTREAM drvAudioGetHostStream(PPDMAUDIOSTREAM pStream)
 {
     AssertPtrReturn(pStream, NULL);
 
-    PPDMAUDIOSTREAM pStreamHst = pStream->enmCtx == PDMAUDIOSTREAMCTX_HOST
+    if (!pStream)
+        return NULL;
+
+    PPDMAUDIOSTREAM pHstStream = pStream->enmCtx == PDMAUDIOSTREAMCTX_HOST
                                ? pStream
                                : pStream->pPair;
-    if (pStreamHst)
+    if (pHstStream)
     {
-        Assert(pStreamHst->enmCtx == PDMAUDIOSTREAMCTX_HOST);
+        Assert(pHstStream->enmCtx == PDMAUDIOSTREAMCTX_HOST);
     }
     else
         LogFlowFunc(("%s: Warning: Does not have a host stream (anymore)\n", pStream->szName));
 
-    return pStreamHst;
+    return pHstStream;
 }
 
 static int drvAudioProcessOptions(PCFGMNODE pCfgHandle, const char *pszPrefix, audio_option *paOpts, size_t cOpts)
@@ -277,6 +280,8 @@ static int drvAudioStreamControlInternal(PDRVAUDIO pThis, PPDMAUDIOSTREAM pStrea
     PPDMAUDIOSTREAM pGstStream = pHstStream ? pHstStream->pPair : pStream;
     AssertPtr(pGstStream);
 
+    LogFlowFunc(("Status host=0x%x, guest=0x%x\n", pHstStream->fStatus, pGstStream->fStatus));
+
     int rc = VINF_SUCCESS;
 
     switch (enmStreamCmd)
@@ -379,9 +384,14 @@ static int drvAudioStreamControlInternalBackend(PDRVAUDIO pThis, PPDMAUDIOSTREAM
             {
                 if (!(pHstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED))
                 {
+                    LogRel2(("Audio: Enabling stream '%s'\n", pHstStream->szName));
                     rc = pThis->pHostDrvAudio->pfnStreamControl(pThis->pHostDrvAudio, pHstStream, PDMAUDIOSTREAMCMD_ENABLE);
                     if (RT_SUCCESS(rc))
+                    {
                         pHstStream->fStatus |= PDMAUDIOSTRMSTS_FLAG_ENABLED;
+                    }
+                    else
+                        LogRel2(("Audio: Disabling stream '%s' failed with %Rrc\n", pHstStream->szName, rc));
                 }
                 break;
             }
@@ -390,6 +400,7 @@ static int drvAudioStreamControlInternalBackend(PDRVAUDIO pThis, PPDMAUDIOSTREAM
             {
                 if (pHstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED)
                 {
+                    LogRel2(("Audio: Disabling stream '%s'\n", pHstStream->szName));
                     rc = pThis->pHostDrvAudio->pfnStreamControl(pThis->pHostDrvAudio, pHstStream, PDMAUDIOSTREAMCMD_DISABLE);
                     if (RT_SUCCESS(rc))
                     {
@@ -397,6 +408,8 @@ static int drvAudioStreamControlInternalBackend(PDRVAUDIO pThis, PPDMAUDIOSTREAM
                         pHstStream->fStatus &= ~PDMAUDIOSTRMSTS_FLAG_PENDING_DISABLE;
                         AudioMixBufReset(&pHstStream->MixBuf);
                     }
+                    else
+                        LogRel2(("Audio: Disabling stream '%s' failed with %Rrc\n", pHstStream->szName, rc));
                 }
                 break;
             }
@@ -409,9 +422,14 @@ static int drvAudioStreamControlInternalBackend(PDRVAUDIO pThis, PPDMAUDIOSTREAM
 
                 if (!(pHstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_PAUSED))
                 {
+                    LogRel2(("Audio: Pausing stream '%s'\n", pHstStream->szName));
                     rc = pThis->pHostDrvAudio->pfnStreamControl(pThis->pHostDrvAudio, pHstStream, PDMAUDIOSTREAMCMD_PAUSE);
                     if (RT_SUCCESS(rc))
+                    {
                         pHstStream->fStatus |= PDMAUDIOSTRMSTS_FLAG_PAUSED;
+                    }
+                    else
+                        LogRel2(("Audio: Pausing stream '%s' failed with %Rrc\n", pHstStream->szName, rc));
                 }
                 break;
             }
@@ -424,17 +442,24 @@ static int drvAudioStreamControlInternalBackend(PDRVAUDIO pThis, PPDMAUDIOSTREAM
 
                 if (pHstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_PAUSED)
                 {
+                    LogRel2(("Audio: Resuming stream '%s'\n", pHstStream->szName));
                     rc = pThis->pHostDrvAudio->pfnStreamControl(pThis->pHostDrvAudio, pHstStream, PDMAUDIOSTREAMCMD_RESUME);
                     if (RT_SUCCESS(rc))
+                    {
                         pHstStream->fStatus &= ~PDMAUDIOSTRMSTS_FLAG_PAUSED;
+                    }
+                    else
+                        LogRel2(("Audio: Resuming stream '%s' failed with %Rrc\n", pHstStream->szName, rc));
                 }
                 break;
             }
 
             default:
+            {
                 AssertMsgFailed(("Command %RU32 not implemented\n", enmStreamCmd));
                 rc = VERR_NOT_IMPLEMENTED;
                 break;
+            }
         }
     }
 
@@ -480,7 +505,11 @@ static int drvAudioStreamInitInternal(PDRVAUDIO pThis,
 
     if (cSamples)
     {
-        rc2 = AudioMixBufInit(&pHstStream->MixBuf, pHstStream->szName, &pHstStream->Props, cSamples * 4);
+        cSamples = cSamples * 4;
+
+        LogFlowFunc(("[%s] cSamples=%RU32\n", pHstStream->szName, cSamples));
+
+        rc2 = AudioMixBufInit(&pHstStream->MixBuf, pHstStream->szName, &pHstStream->Props, cSamples);
         AssertRC(rc2);
     }
 
@@ -499,10 +528,18 @@ static int drvAudioStreamInitInternal(PDRVAUDIO pThis,
 
     if (cSamples)
     {
-        rc2 = AudioMixBufInit(&pGstStream->MixBuf, pGstStream->szName, &pGstStream->Props, cSamples * 2);
+        cSamples = cSamples * 2;
+
+        LogFlowFunc(("[%s] cSamples=%RU32\n", pGstStream->szName, cSamples));
+
+        rc2 = AudioMixBufInit(&pGstStream->MixBuf, pGstStream->szName, &pGstStream->Props, cSamples);
         AssertRC(rc2);
     }
 
+#ifdef VBOX_WITH_STATISTICS
+    char szStatName[255];
+#endif
+
     if (cSamples)
     {
         if (pCfgGuest->enmDir == PDMAUDIODIR_IN)
@@ -510,12 +547,40 @@ static int drvAudioStreamInitInternal(PDRVAUDIO pThis,
             /* Host (Parent) -> Guest (Child). */
             rc2 = AudioMixBufLinkTo(&pHstStream->MixBuf, &pGstStream->MixBuf);
             AssertRC(rc2);
+
+#ifdef VBOX_WITH_STATISTICS
+            RTStrPrintf(szStatName, sizeof(szStatName), "Guest/%s/BytesElapsed", pGstStream->szName);
+            PDMDrvHlpSTAMRegCounterEx(pThis->pDrvIns, &pGstStream->In.StatBytesElapsed,
+                                      szStatName, STAMUNIT_BYTES, "Elapsed bytes read.");
+
+            RTStrPrintf(szStatName, sizeof(szStatName), "Guest/%s/BytesRead", pGstStream->szName);
+            PDMDrvHlpSTAMRegCounterEx(pThis->pDrvIns, &pGstStream->In.StatBytesTotalRead,
+                                      szStatName, STAMUNIT_BYTES, "Total bytes read.");
+
+            RTStrPrintf(szStatName, sizeof(szStatName), "Host/%s/SamplesCaptured", pHstStream->szName);
+            PDMDrvHlpSTAMRegCounterEx(pThis->pDrvIns, &pHstStream->In.StatSamplesCaptured,
+                                      szStatName, STAMUNIT_COUNT, "Total samples captured.");
+#endif
         }
         else
         {
             /* Guest (Parent) -> Host (Child). */
             rc2 = AudioMixBufLinkTo(&pGstStream->MixBuf, &pHstStream->MixBuf);
             AssertRC(rc2);
+
+#ifdef VBOX_WITH_STATISTICS
+            RTStrPrintf(szStatName, sizeof(szStatName), "Guest/%s/BytesElapsed", pGstStream->szName);
+            PDMDrvHlpSTAMRegCounterEx(pThis->pDrvIns, &pGstStream->Out.StatBytesElapsed,
+                                      szStatName, STAMUNIT_BYTES, "Elapsed bytes written.");
+
+            RTStrPrintf(szStatName, sizeof(szStatName), "Guest/%s/BytesRead", pGstStream->szName);
+            PDMDrvHlpSTAMRegCounterEx(pThis->pDrvIns, &pGstStream->Out.StatBytesTotalWritten,
+                                      szStatName, STAMUNIT_BYTES, "Total bytes written.");
+
+            RTStrPrintf(szStatName, sizeof(szStatName), "Host/%s/SamplesPlayed", pHstStream->szName);
+            PDMDrvHlpSTAMRegCounterEx(pThis->pDrvIns, &pHstStream->Out.StatSamplesPlayed,
+                                      szStatName, STAMUNIT_COUNT, "Total samples played.");
+#endif
         }
     }
 
@@ -624,54 +689,70 @@ static DECLCALLBACK(int) drvAudioStreamWrite(PPDMIAUDIOCONNECTOR pInterface, PPD
               ("Stream '%s' is not an output stream and therefore cannot be written to (direction is 0x%x)\n",
                pStream->szName, pStream->enmDir));
 
-    Log3Func(("[%s]: cbBuf=%RU32\n", pStream->szName, cbBuf));
+    uint32_t cbWritten = 0;
 
     int rc = RTCritSectEnter(&pThis->CritSect);
     if (RT_FAILURE(rc))
         return rc;
 
-    if (!pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, PDMAUDIODIR_OUT))
+    do
     {
-        rc = RTCritSectLeave(&pThis->CritSect);
-        AssertRC(rc);
+        if (   pThis->pHostDrvAudio
+            && pThis->pHostDrvAudio->pfnGetStatus
+            && pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, PDMAUDIODIR_OUT) != PDMAUDIOBACKENDSTS_RUNNING)
+        {
+            rc = VERR_NOT_AVAILABLE;
+            break;
+        }
 
-        return VERR_NOT_AVAILABLE;
-    }
+        PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
+        if (!pHstStream)
+        {
+            rc = VERR_NOT_AVAILABLE;
+            break;
+        }
 
-    PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
-    PPDMAUDIOSTREAM pGstStream = pHstStream->pPair;
+        PPDMAUDIOSTREAM pGstStream = pHstStream->pPair;
 
-    AssertMsg(pGstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED,
-              ("Writing to disabled guest output stream \"%s\" not possible\n", pGstStream->szName));
+        AssertMsg(pGstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED,
+                  ("Writing to disabled guest output stream \"%s\" not possible\n", pGstStream->szName));
 
-    if (!AudioMixBufFreeBytes(&pGstStream->MixBuf))
-    {
-        if (pcbWritten)
-            *pcbWritten = 0;
+        if (!AudioMixBufFreeBytes(&pGstStream->MixBuf))
+        {
+            LogRel2(("Audio: Guest stream '%s' full, expect stuttering audio output\n", pGstStream->szName));
+            break;
+        }
 
-        return RTCritSectLeave(&pThis->CritSect);
-    }
+        uint32_t cWritten = 0;
+        rc = AudioMixBufWriteCirc(&pGstStream->MixBuf, pvBuf, cbBuf, &cWritten);
+        if (rc == VINF_BUFFER_OVERFLOW)
+        {
+            LogRel2(("Audio: Lost audio samples from guest stream '%s', expect stuttering audio output\n", pGstStream->szName));
+            rc = VINF_SUCCESS;
+            break;
+        }
 
-    uint32_t cWritten = 0;
-    rc = AudioMixBufWriteCirc(&pGstStream->MixBuf, pvBuf, cbBuf, &cWritten);
-    if (rc == VINF_BUFFER_OVERFLOW)
-    {
-        LogRel2(("Audio: Lost audio samples from guest stream '%s', expect stuttering audio output\n", pGstStream->szName));
-        rc = VINF_SUCCESS;
-    }
+#ifdef VBOX_WITH_STATISTICS
+        STAM_COUNTER_ADD(&pThis->Stats.TotalBytesWritten, AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cWritten));
+        STAM_COUNTER_ADD(&pGstStream->Out.StatBytesTotalWritten, AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cWritten));
+#endif
+        cbWritten = AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cWritten);
 
-    if (RT_SUCCESS(rc))
-    {
-        if (pcbWritten)
-            *pcbWritten = AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cWritten);
-    }
+        Log3Func(("[%s] cUsed=%RU32, cLive=%RU32\n",
+                  pGstStream->szName, AudioMixBufUsed(&pGstStream->MixBuf), AudioMixBufLive(&pGstStream->MixBuf)));
 
-    Log3Func(("cWritten=%RU32 (%RU32 bytes), rc=%Rrc\n", cWritten, AUDIOMIXBUF_S2B(&pHstStream->MixBuf, cWritten), rc));
+    } while (0);
 
     int rc2 = RTCritSectLeave(&pThis->CritSect);
     if (RT_SUCCESS(rc))
         rc = rc2;
 
+    if (RT_SUCCESS(rc))
+    {
+        if (pcbWritten)
+            *pcbWritten = cbWritten;
+    }
+
     return rc;
 }
 
@@ -840,14 +921,19 @@ static DECLCALLBACK(int) drvAudioStreamPlay(PPDMIAUDIOCONNECTOR pInterface,
               ("Stream '%s' is not an output stream and therefore cannot be played back (direction is 0x%x)\n",
                pStream->szName, pStream->enmDir));
 
-    Log3Func(("[%s]\n", pStream->szName));
-
     uint32_t cSamplesPlayed = 0;
 
     do
     {
+        if (!pThis->pHostDrvAudio)
+        {
+            rc = VERR_NOT_AVAILABLE;
+            break;
+        }
+
         /* Backend output (temporarily) disabled / unavailable? */
-        if (pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, PDMAUDIODIR_OUT) != PDMAUDIOBACKENDSTS_RUNNING)
+        if (   pThis->pHostDrvAudio->pfnGetStatus
+            && pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, PDMAUDIODIR_OUT) != PDMAUDIOBACKENDSTS_RUNNING)
         {
             /* Pull the new config from the backend and check again. */
             rc = pThis->pHostDrvAudio->pfnGetConfig(pThis->pHostDrvAudio, &pThis->BackendCfg);
@@ -866,12 +952,17 @@ static DECLCALLBACK(int) drvAudioStreamPlay(PPDMIAUDIOCONNECTOR pInterface,
         PPDMAUDIOSTREAM pGstStream = pHstStream->pPair;
         AssertPtr(pGstStream);
 
+        AssertPtr(pThis->pHostDrvAudio->pfnStreamGetStatus);
         PDMAUDIOSTRMSTS strmSts = pThis->pHostDrvAudio->pfnStreamGetStatus(pThis->pHostDrvAudio, pHstStream);
         if (!(strmSts & PDMAUDIOSTRMSTS_FLAG_INITIALIZED))
         {
             LogFunc(("[%s] Backend not initialized (anymore), re-initializing ...\n", pHstStream->szName));
             rc = drvAudioStreamReInitInternal(pThis, pStream);
-            break;
+            if (RT_FAILURE(rc))
+            {
+                LogFunc(("[%s] Failed to re-initialize backend, rc=%Rrc\n", pHstStream->szName, rc));
+                break;
+            }
         }
 
         uint32_t cSamplesLive = AudioMixBufLive(&pGstStream->MixBuf);
@@ -880,12 +971,20 @@ static DECLCALLBACK(int) drvAudioStreamPlay(PPDMIAUDIOCONNECTOR pInterface,
             if (   (strmSts & PDMAUDIOSTRMSTS_FLAG_INITIALIZED)
                 && (strmSts & PDMAUDIOSTRMSTS_FLAG_DATA_WRITABLE))
             {
+                AssertPtr(pThis->pHostDrvAudio->pfnStreamPlay);
                 rc = pThis->pHostDrvAudio->pfnStreamPlay(pThis->pHostDrvAudio, pHstStream, &cSamplesPlayed);
                 if (RT_FAILURE(rc))
                 {
                     int rc2 = drvAudioStreamControlInternalBackend(pThis, pHstStream, PDMAUDIOSTREAMCMD_DISABLE);
                     AssertRC(rc2);
                 }
+                else
+                {
+#ifdef VBOX_WITH_STATISTICS
+                    STAM_COUNTER_ADD(&pThis->Stats.TotalSamplesPlayed, cSamplesPlayed);
+                    STAM_COUNTER_ADD(&pHstStream->Out.StatSamplesPlayed, cSamplesPlayed);
+#endif
+                }
             }
 
             Log3Func(("[%s] strmSts=0x%x, cSamplesPlayed=%RU32, rc=%Rrc\n", pHstStream->szName, strmSts, cSamplesPlayed, rc));
@@ -910,16 +1009,16 @@ static DECLCALLBACK(int) drvAudioStreamPlay(PPDMIAUDIOCONNECTOR pInterface,
 
     } while (0);
 
+    int rc2 = RTCritSectLeave(&pThis->CritSect);
+    if (RT_SUCCESS(rc))
+        rc = rc2;
+
     if (RT_SUCCESS(rc))
     {
         if (pcSamplesPlayed)
             *pcSamplesPlayed = cSamplesPlayed;
     }
 
-    int rc2 = RTCritSectLeave(&pThis->CritSect);
-    if (RT_SUCCESS(rc))
-        rc = rc2;
-
     if (RT_FAILURE(rc))
         LogFlowFunc(("[%s] Failed with %Rrc\n", pStream->szName, rc));
 
@@ -984,6 +1083,12 @@ static DECLCALLBACK(int) drvAudioStreamCapture(PPDMIAUDIOCONNECTOR pInterface,
                     int rc2 = drvAudioStreamControlInternalBackend(pThis, pHstStream, PDMAUDIOSTREAMCMD_DISABLE);
                     AssertRC(rc2);
                 }
+                else
+                {
+#ifdef VBOX_WITH_STATISTICS
+                    STAM_COUNTER_ADD(&pHstStream->In.StatSamplesCaptured, cSamplesCaptured);
+#endif
+                }
             }
 
             Log3Func(("[%s] strmSts=0x%x, cSamplesCaptured=%RU32, rc=%Rrc\n", pHstStream->szName, strmSts, cSamplesCaptured, rc));
@@ -1247,51 +1352,74 @@ static DECLCALLBACK(int) drvAudioStreamRead(PPDMIAUDIOCONNECTOR pInterface, PPDM
     AssertReturn(cbBuf,    VERR_INVALID_PARAMETER);
     /* pcbWritten is optional. */
 
-    int rc = RTCritSectEnter(&pThis->CritSect);
-    if (RT_FAILURE(rc))
-        return rc;
-
     AssertMsg(pStream->enmDir == PDMAUDIODIR_IN,
               ("Stream '%s' is not an input stream and therefore cannot be read from (direction is 0x%x)\n",
                pStream->szName, pStream->enmDir));
 
-    if (pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, PDMAUDIODIR_IN) != PDMAUDIOBACKENDSTS_RUNNING)
+    uint32_t cbRead = 0;
+
+    int rc = RTCritSectEnter(&pThis->CritSect);
+    if (RT_FAILURE(rc))
+        return rc;
+
+    do
     {
-        if (pcbRead)
-            *pcbRead = 0;
+        if (   pThis->pHostDrvAudio
+            && pThis->pHostDrvAudio->pfnGetStatus
+            && pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, PDMAUDIODIR_IN) != PDMAUDIOBACKENDSTS_RUNNING)
+        {
+            rc = VERR_NOT_AVAILABLE;
+            break;
+        }
 
-        return RTCritSectLeave(&pThis->CritSect);
-    }
+        PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
+        if (pHstStream)
+        {
+            rc = VERR_NOT_AVAILABLE;
+            break;
+        }
 
-    PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
-    PPDMAUDIOSTREAM pGstStream = pHstStream->pPair;
+        PPDMAUDIOSTREAM pGstStream = pHstStream->pPair;
 
-    AssertMsg(pHstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED,
-              ("Reading from disabled host input stream '%s' not possible\n", pHstStream->szName));
+        AssertMsg(pHstStream->fStatus & PDMAUDIOSTRMSTS_FLAG_ENABLED,
+                  ("Reading from disabled host input stream '%s' not possible\n", pHstStream->szName));
 
-    Log3Func(("%s\n", pStream->szName));
+        Log3Func(("%s\n", pStream->szName));
 
-    /*
-     * Read from the parent buffer (that is, the guest buffer) which
-     * should have the audio data in the format the guest needs.
-     */
-    uint32_t cRead;
-    rc = AudioMixBufReadCirc(&pGstStream->MixBuf, pvBuf, cbBuf, &cRead);
-    if (RT_SUCCESS(rc))
-    {
-        if (cRead)
-            AudioMixBufFinish(&pGstStream->MixBuf, cRead);
+        /*
+         * Read from the parent buffer (that is, the guest buffer) which
+         * should have the audio data in the format the guest needs.
+         */
+        uint32_t cRead;
+        rc = AudioMixBufReadCirc(&pGstStream->MixBuf, pvBuf, cbBuf, &cRead);
+        if (RT_SUCCESS(rc))
+        {
+            if (cRead)
+            {
+#ifdef VBOX_WITH_STATISTICS
+                STAM_COUNTER_ADD(&pThis->Stats.TotalBytesRead, AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cRead));
+                STAM_COUNTER_ADD(&pGstStream->In.StatBytesTotalRead, AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cRead));
+#endif
+                AudioMixBufFinish(&pGstStream->MixBuf, cRead);
 
-        if (pcbRead)
-            *pcbRead = AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cRead);
-    }
+                cbRead = AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cRead);
+            }
+        }
 
-    Log3Func(("cRead=%RU32 (%RU32 bytes), rc=%Rrc\n", cRead, AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cRead), rc));
+        Log3Func(("cRead=%RU32 (%RU32 bytes), rc=%Rrc\n", cRead, AUDIOMIXBUF_S2B(&pGstStream->MixBuf, cRead), rc));
+
+    } while (0);
 
     int rc2 = RTCritSectLeave(&pThis->CritSect);
     if (RT_SUCCESS(rc))
         rc = rc2;
 
+    if (RT_SUCCESS(rc))
+    {
+        if (pcbRead)
+            *pcbRead = cbRead;
+    }
+
     return rc;
 }
 
@@ -1454,6 +1582,9 @@ static DECLCALLBACK(int) drvAudioStreamCreate(PPDMIAUDIOCONNECTOR pInterface,
                 pThis->cStreamsFreeOut--;
         }
 
+#ifdef VBOX_WITH_STATISTICS
+        STAM_COUNTER_ADD(&pThis->Stats.TotalStreamsCreated, 1);
+#endif
         /* Always return the guest-side part to the device emulation. */
         *ppStream = pGstStrm;
     }
@@ -1466,7 +1597,6 @@ static DECLCALLBACK(int) drvAudioStreamCreate(PPDMIAUDIOCONNECTOR pInterface,
     return rc;
 }
 
-#if 1
 static DECLCALLBACK(int) drvAudioGetConfig(PPDMIAUDIOCONNECTOR pInterface, PPDMAUDIOBACKENDCFG pCfg)
 {
     AssertPtrReturn(pInterface, VERR_INVALID_POINTER);
@@ -1478,7 +1608,15 @@ static DECLCALLBACK(int) drvAudioGetConfig(PPDMIAUDIOCONNECTOR pInterface, PPDMA
     if (RT_FAILURE(rc))
         return rc;
 
-    rc = pThis->pHostDrvAudio->pfnGetConfig(pThis->pHostDrvAudio, pCfg);
+    if (pThis->pHostDrvAudio)
+    {
+        if (pThis->pHostDrvAudio->pfnGetConfig)
+            rc = pThis->pHostDrvAudio->pfnGetConfig(pThis->pHostDrvAudio, pCfg);
+        else
+            rc = VERR_NOT_SUPPORTED;
+    }
+    else
+        AssertFailed();
 
     int rc2 = RTCritSectLeave(&pThis->CritSect);
     if (RT_SUCCESS(rc))
@@ -1494,15 +1632,21 @@ static DECLCALLBACK(PDMAUDIOBACKENDSTS) drvAudioGetStatus(PPDMIAUDIOCONNECTOR pI
 
     PDRVAUDIO pThis = PDMIAUDIOCONNECTOR_2_DRVAUDIO(pInterface);
 
-    int rc = RTCritSectEnter(&pThis->CritSect);
-    if (RT_FAILURE(rc))
-        return PDMAUDIOBACKENDSTS_UNKNOWN;
+    PDMAUDIOBACKENDSTS backendSts = PDMAUDIOBACKENDSTS_UNKNOWN;
 
-    PDMAUDIOBACKENDSTS backendSts = pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, enmDir);
-
-    int rc2 = RTCritSectLeave(&pThis->CritSect);
+    int rc = RTCritSectEnter(&pThis->CritSect);
     if (RT_SUCCESS(rc))
-        rc = rc2;
+    {
+        if (   pThis->pHostDrvAudio
+            && pThis->pHostDrvAudio->pfnGetStatus)
+        {
+             backendSts = pThis->pHostDrvAudio->pfnGetStatus(pThis->pHostDrvAudio, enmDir);
+        }
+
+        int rc2 = RTCritSectLeave(&pThis->CritSect);
+        if (RT_SUCCESS(rc))
+            rc = rc2;
+    }
 
     LogFlowFuncLeaveRC(rc);
     return backendSts;
@@ -1593,10 +1737,14 @@ static DECLCALLBACK(PDMAUDIOSTRMSTS) drvAudioStreamGetStatus(PPDMIAUDIOCONNECTOR
     int rc2 = RTCritSectEnter(&pThis->CritSect);
     AssertRC(rc2);
 
-    PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
-    PDMAUDIOSTRMSTS strmSts    = pHstStream->fStatus;
+    PDMAUDIOSTRMSTS strmSts = PDMAUDIOSTRMSTS_FLAG_NONE;
 
-    Log3Func(("%s: strmSts=0x%x\n", pHstStream->szName, strmSts));
+    PPDMAUDIOSTREAM pHstStream = drvAudioGetHostStream(pStream);
+    if (pHstStream)
+    {
+        strmSts = pHstStream->fStatus;
+        Log3Func(("%s: strmSts=0x%x\n", pHstStream->szName, strmSts));
+    }
 
     rc2 = RTCritSectLeave(&pThis->CritSect);
     AssertRC(rc2);
@@ -1621,7 +1769,6 @@ static DECLCALLBACK(int) drvAudioStreamSetVolume(PPDMIAUDIOCONNECTOR pInterface,
     AudioMixBufSetVolume(&pGstStream->MixBuf, pVol);
     return VINF_SUCCESS;
 }
-#endif
 
 static DECLCALLBACK(int) drvAudioStreamDestroy(PPDMIAUDIOCONNECTOR pInterface, PPDMAUDIOSTREAM pStream)
 {
@@ -1745,10 +1892,38 @@ static int drvAudioStreamDestroyInternal(PDRVAUDIO pThis, PPDMAUDIOSTREAM pStrea
             if (RT_SUCCESS(rc))
                 pStream->fStatus &= ~PDMAUDIOSTRMSTS_FLAG_INITIALIZED;
         }
+
+        if (pStream->enmDir == PDMAUDIODIR_IN)
+        {
+#ifdef VBOX_WITH_STATISTICS
+            PDMDrvHlpSTAMDeregister(pThis->pDrvIns, &pStream->In.StatBytesElapsed);
+            PDMDrvHlpSTAMDeregister(pThis->pDrvIns, &pStream->In.StatBytesTotalRead);
+#endif
+        }
+        else if (pStream->enmDir == PDMAUDIODIR_OUT)
+        {
+#ifdef VBOX_WITH_STATISTICS
+            PDMDrvHlpSTAMDeregister(pThis->pDrvIns, &pStream->Out.StatBytesElapsed);
+            PDMDrvHlpSTAMDeregister(pThis->pDrvIns, &pStream->Out.StatBytesTotalWritten);
+#endif
+        }
     }
     else if (pStream->enmCtx == PDMAUDIOSTREAMCTX_HOST)
     {
         rc = drvAudioStreamDestroyInternalBackend(pThis, pStream);
+
+        if (pStream->enmDir == PDMAUDIODIR_IN)
+        {
+#ifdef VBOX_WITH_STATISTICS
+            PDMDrvHlpSTAMDeregister(pThis->pDrvIns, &pStream->In.StatSamplesCaptured);
+#endif
+        }
+        else if (pStream->enmDir == PDMAUDIODIR_OUT)
+        {
+#ifdef VBOX_WITH_STATISTICS
+            PDMDrvHlpSTAMDeregister(pThis->pDrvIns, &pStream->Out.StatSamplesPlayed);
+#endif
+        }
     }
     else
         AssertFailedReturn(VERR_NOT_IMPLEMENTED);
@@ -1889,6 +2064,21 @@ static DECLCALLBACK(int) drvAudioConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHan
     {
         pThis->fTerminate = false;
         pThis->pDrvIns    = pDrvIns;
+
+#ifdef VBOX_WITH_STATISTICS
+        PDMDrvHlpSTAMRegCounterEx(pDrvIns, &pThis->Stats.TotalStreamsActive,   "TotalStreamsActive",
+                                  STAMUNIT_COUNT, "Active input streams.");
+        PDMDrvHlpSTAMRegCounterEx(pDrvIns, &pThis->Stats.TotalStreamsCreated,  "TotalStreamsCreated",
+                                  STAMUNIT_COUNT, "Total created input streams.");
+        PDMDrvHlpSTAMRegCounterEx(pDrvIns, &pThis->Stats.TotalSamplesPlayed,   "TotalSamplesPlayed",
+                                  STAMUNIT_COUNT, "Total samples played.");
+        PDMDrvHlpSTAMRegCounterEx(pDrvIns, &pThis->Stats.TotalSamplesCaptured, "TotalSamplesCaptured",
+                                  STAMUNIT_COUNT, "Total samples captured.");
+        PDMDrvHlpSTAMRegCounterEx(pDrvIns, &pThis->Stats.TotalBytesRead,       "TotalBytesRead",
+                                  STAMUNIT_BYTES, "Total bytes read.");
+        PDMDrvHlpSTAMRegCounterEx(pDrvIns, &pThis->Stats.TotalBytesWritten,    "TotalBytesWritten",
+                                  STAMUNIT_BYTES, "Total bytes written.");
+#endif
     }
 
     LogFlowFuncLeaveRC(rc);
diff --git a/src/VBox/Devices/Audio/DrvAudio.h b/src/VBox/Devices/Audio/DrvAudio.h
index ddaf461..aeeab12 100644
--- a/src/VBox/Devices/Audio/DrvAudio.h
+++ b/src/VBox/Devices/Audio/DrvAudio.h
@@ -70,6 +70,22 @@ typedef struct audio_option
     int overriden;
 } audio_option;
 
+#ifdef VBOX_WITH_STATISTICS
+/**
+ * Structure for keeping stream statistics for the
+ * statistic manager (STAM).
+ */
+typedef struct DRVAUDIOSTATS
+{
+    STAMCOUNTER TotalStreamsActive;
+    STAMCOUNTER TotalStreamsCreated;
+    STAMCOUNTER TotalSamplesPlayed;
+    STAMCOUNTER TotalSamplesCaptured;
+    STAMCOUNTER TotalBytesRead;
+    STAMCOUNTER TotalBytesWritten;
+} DRVAUDIOSTATS, *PDRVAUDIOSTATS;
+#endif
+
 /**
  * Audio driver instance data.
  *
@@ -106,6 +122,10 @@ typedef struct DRVAUDIO
     RTLISTANCHOR            lstCBIn;
     RTLISTANCHOR            lstCBOut;
 #endif
+#ifdef VBOX_WITH_STATISTICS
+    /** Statistics for the statistics manager (STAM). */
+    DRVAUDIOSTATS           Stats;
+#endif
 } DRVAUDIO, *PDRVAUDIO;
 
 /** Makes a PDRVAUDIO out of a PPDMIAUDIOCONNECTOR. */
diff --git a/src/VBox/Devices/Audio/DrvHostCoreAudio.cpp b/src/VBox/Devices/Audio/DrvHostCoreAudio.cpp
index 14ffa52..d367891 100644
--- a/src/VBox/Devices/Audio/DrvHostCoreAudio.cpp
+++ b/src/VBox/Devices/Audio/DrvHostCoreAudio.cpp
@@ -643,7 +643,7 @@ static DECLCALLBACK(OSStatus) drvHostCoreAudioDeviceStateChanged(AudioObjectID p
                  * reinitialization is done when necessary only. */
                 ASMAtomicXchgU32(&pStreamIn->status, CA_STATUS_REINIT);
 
-                LogRel(("CoreAudio: Capturing device stopped functioning\n"));
+                LogRel(("CoreAudio: Recording device stopped functioning\n"));
                 break;
             }
 
@@ -708,7 +708,7 @@ static DECLCALLBACK(OSStatus) coreAudioDefaultDeviceChanged(AudioObjectID proper
                 {
                     if (pStreamIn->deviceID != uResp)
                     {
-                        LogRel2(("CoreAudio: Default device for recording has changed\n"));
+                        LogRel(("CoreAudio: Default device for recording has changed\n"));
 
                         /* We move the reinitialization to the next input event.
                          * This make sure this thread isn't blocked and the
@@ -737,7 +737,7 @@ static DECLCALLBACK(OSStatus) coreAudioDefaultDeviceChanged(AudioObjectID proper
                 {
                     if (pStreamOut->deviceID != uResp)
                     {
-                        LogRel2(("CoreAudio: Default device for playback has changed\n"));
+                        LogRel(("CoreAudio: Default device for playback has changed\n"));
 
                         /* We move the reinitialization to the next input event.
                          * This make sure this thread isn't blocked and the
@@ -998,7 +998,7 @@ static DECLCALLBACK(OSStatus) coreAudioRecordingCb(void                       *p
                 size_t cbFree = RTCircBufFree(pStreamIn->pCircBuf);
                 if (cbFree < cbDst)
                 {
-                    LogRel2(("CoreAudio: Capturing is lagging behind (%zu bytes available but only %zu bytes free)\n",
+                    LogRel2(("CoreAudio: Recording is lagging behind (%zu bytes available but only %zu bytes free)\n",
                              cbDst, cbFree));
                     break;
                 }
@@ -1153,6 +1153,7 @@ static int coreAudioInitIn(PDRVHOSTCOREAUDIO pThis, PPDMAUDIOSTREAM pStream, uin
                 if (err == noErr)
                 {
                     char *pszUID = NULL;
+
                     err = coreAudioCFStringToCString(strTemp, &pszUID);
                     if (err == noErr)
                     {
@@ -1508,11 +1509,13 @@ static int coreAudioInitIn(PDRVHOSTCOREAUDIO pThis, PPDMAUDIOSTREAM pStream, uin
 /** @todo Eventually split up this function, as this already is huge! */
 static int coreAudioInitOut(PDRVHOSTCOREAUDIO pThis, PPDMAUDIOSTREAM pStream, uint32_t *pcSamples)
 {
-    PCOREAUDIOSTREAMOUT pStreamOut = (PCOREAUDIOSTREAMOUT)pStream;
+    int rc = VINF_SUCCESS;
 
-    ASMAtomicXchgU32(&pStreamOut->status, CA_STATUS_IN_INIT);
+    PCOREAUDIOSTREAMOUT pStreamOut = (PCOREAUDIOSTREAMOUT)pStream;
+    UInt32 cSamples = 0;
 
     OSStatus err = noErr;
+    AudioDeviceID deviceID = pStreamOut->deviceID;
 
     UInt32 uSize = 0;
     if (pStreamOut->deviceID == kAudioDeviceUnknown)
@@ -1529,241 +1532,254 @@ static int coreAudioInitOut(PDRVHOSTCOREAUDIO pThis, PPDMAUDIOSTREAM pStream, ui
         }
     }
 
-    /*
-     * Try to get the name of the playback device and log it. It's not fatal if it fails.
-     */
-    CFStringRef strTemp;
+    if (deviceID == kAudioDeviceUnknown)
+    {
+        LogFlowFunc(("No default playback device found\n"));
+        return VERR_NOT_FOUND;
+    }
 
-    AudioObjectPropertyAddress propAdr = { kAudioObjectPropertyName, kAudioObjectPropertyScopeGlobal,
-                                           kAudioObjectPropertyElementMaster };
-    uSize = sizeof(CFStringRef);
-    err = AudioObjectGetPropertyData(pStreamOut->deviceID, &propAdr, 0, NULL, &uSize, &strTemp);
-    if (err == noErr)
+    do
     {
-        char *pszDevName = NULL;
-        err = coreAudioCFStringToCString(strTemp, &pszDevName);
+        ASMAtomicXchgU32(&pStreamOut->status, CA_STATUS_IN_INIT);
+
+        /* Assign device ID. */
+        pStreamOut->deviceID = deviceID;
+
+        /*
+         * Try to get the name of the playback device and log it. It's not fatal if it fails.
+         */
+        CFStringRef strTemp;
+
+        AudioObjectPropertyAddress propAdr = { kAudioObjectPropertyName, kAudioObjectPropertyScopeGlobal,
+                                               kAudioObjectPropertyElementMaster };
+        uSize = sizeof(CFStringRef);
+        err = AudioObjectGetPropertyData(pStreamOut->deviceID, &propAdr, 0, NULL, &uSize, &strTemp);
         if (err == noErr)
         {
-            CFRelease(strTemp);
-
-            /* Get the device' UUID. */
-            propAdr.mSelector = kAudioDevicePropertyDeviceUID;
-            err = AudioObjectGetPropertyData(pStreamOut->deviceID, &propAdr, 0, NULL, &uSize, &strTemp);
+            char *pszDevName = NULL;
+            err = coreAudioCFStringToCString(strTemp, &pszDevName);
             if (err == noErr)
             {
-                char *pszUID = NULL;
-                err = coreAudioCFStringToCString(strTemp, &pszUID);
+                CFRelease(strTemp);
+
+                /* Get the device' UUID. */
+                propAdr.mSelector = kAudioDevicePropertyDeviceUID;
+                err = AudioObjectGetPropertyData(pStreamOut->deviceID, &propAdr, 0, NULL, &uSize, &strTemp);
                 if (err == noErr)
                 {
-                    CFRelease(strTemp);
-                    LogRel(("CoreAudio: Using playback device: %s (UID: %s)\n", pszDevName, pszUID));
+                    char *pszUID = NULL;
+                    err = coreAudioCFStringToCString(strTemp, &pszUID);
+                    if (err == noErr)
+                    {
+                        CFRelease(strTemp);
+                        LogRel(("CoreAudio: Using playback device: %s (UID: %s)\n", pszDevName, pszUID));
 
-                    RTMemFree(pszUID);
+                        RTMemFree(pszUID);
+                    }
                 }
-            }
 
-            RTMemFree(pszDevName);
+                RTMemFree(pszDevName);
+            }
         }
-    }
-    else
-        LogRel(("CoreAudio: Unable to determine playback device name (%RI32)\n", err));
-
-    /* Get the default frames buffer size, so that we can setup our internal buffers. */
-    UInt32 cFrames;
-    uSize = sizeof(cFrames);
-    propAdr.mSelector = kAudioDevicePropertyBufferFrameSize;
-    propAdr.mScope    = kAudioDevicePropertyScopeInput;
-    err = AudioObjectGetPropertyData(pStreamOut->deviceID, &propAdr, 0, NULL, &uSize, &cFrames);
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to determine frame buffer size of the audio playback device (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
-
-    /* Set the frame buffer size and honor any minimum/maximum restrictions on the device. */
-    err = coreAudioSetFrameBufferSize(pStreamOut->deviceID, false /* fInput */, cFrames, &cFrames);
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to set frame buffer size for the audio playback device (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        else
+            LogRel(("CoreAudio: Unable to determine playback device name (%RI32)\n", err));
 
-    ComponentDescription cd;
-    RT_ZERO(cd);
-    cd.componentType         = kAudioUnitType_Output;
-    cd.componentSubType      = kAudioUnitSubType_HALOutput;
-    cd.componentManufacturer = kAudioUnitManufacturer_Apple;
+        /* Get the default frames buffer size, so that we can setup our internal buffers. */
+        UInt32 cFrames;
+        uSize = sizeof(cFrames);
+        propAdr.mSelector = kAudioDevicePropertyBufferFrameSize;
+        propAdr.mScope    = kAudioDevicePropertyScopeInput;
+        err = AudioObjectGetPropertyData(pStreamOut->deviceID, &propAdr, 0, NULL, &uSize, &cFrames);
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to determine frame buffer size of the audio playback device (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /* Try to find the default HAL output component. */
-    Component cp = FindNextComponent(NULL, &cd);
-    if (cp == 0)
-    {
-        LogRel(("CoreAudio: Failed to find HAL output component\n")); /** @todo Return error value? */
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Set the frame buffer size and honor any minimum/maximum restrictions on the device. */
+        err = coreAudioSetFrameBufferSize(pStreamOut->deviceID, false /* fInput */, cFrames, &cFrames);
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to set frame buffer size for the audio playback device (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /* Open the default HAL output component. */
-    err = OpenAComponent(cp, &pStreamOut->audioUnit);
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to open output component (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        ComponentDescription cd;
+        RT_ZERO(cd);
+        cd.componentType         = kAudioUnitType_Output;
+        cd.componentSubType      = kAudioUnitSubType_HALOutput;
+        cd.componentManufacturer = kAudioUnitManufacturer_Apple;
 
-    /* Switch the I/O mode for output to on. */
-    UInt32 uFlag = 1;
-    err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output,
-                               0, &uFlag, sizeof(uFlag));
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to disable I/O mode for output stream (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Try to find the default HAL output component. */
+        Component cp = FindNextComponent(NULL, &cd);
+        if (cp == 0)
+        {
+            LogRel(("CoreAudio: Failed to find HAL output component\n")); /** @todo Return error value? */
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /* Set the default audio playback device as the device for the new AudioUnit. */
-    err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global,
-                               0, &pStreamOut->deviceID, sizeof(pStreamOut->deviceID));
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to set current device for output stream (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Open the default HAL output component. */
+        err = OpenAComponent(cp, &pStreamOut->audioUnit);
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to open output component (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /*
-     * CoreAudio will inform us on a second thread for new incoming audio data.
-     * Therefor register a callback function which will process the new data.
-     */
-    AURenderCallbackStruct cb;
-    RT_ZERO(cb);
-    cb.inputProc       = coreAudioPlaybackCb; /* pvUser */
-    cb.inputProcRefCon = pStreamOut;
-
-    err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input,
-                               0, &cb, sizeof(cb));
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to register output callback (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Switch the I/O mode for output to on. */
+        UInt32 uFlag = 1;
+        err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output,
+                                   0, &uFlag, sizeof(uFlag));
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to disable I/O mode for output stream (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /* Fetch the current stream format of the device. */
-    uSize = sizeof(pStreamOut->deviceFormat);
-    err = AudioUnitGetProperty(pStreamOut->audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
-                               0, &pStreamOut->deviceFormat, &uSize);
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to get device format (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Set the default audio playback device as the device for the new AudioUnit. */
+        err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioOutputUnitProperty_CurrentDevice, kAudioUnitScope_Global,
+                                   0, &pStreamOut->deviceID, sizeof(pStreamOut->deviceID));
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to set current device for output stream (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /* Create an AudioStreamBasicDescription based on our required audio settings. */
-    coreAudioPCMPropsToASBD(&pStreamOut->Stream.Props, &pStreamOut->streamFormat);
+        /*
+         * CoreAudio will inform us on a second thread for new incoming audio data.
+         * Therefor register a callback function which will process the new data.
+         */
+        AURenderCallbackStruct cb;
+        RT_ZERO(cb);
+        cb.inputProc       = coreAudioPlaybackCb; /* pvUser */
+        cb.inputProcRefCon = pStreamOut;
 
-    coreAudioPrintASBD("CoreAudio: playback device", &pStreamOut->deviceFormat);
-    coreAudioPrintASBD("CoreAudio: Output format", &pStreamOut->streamFormat);
+        err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioUnitProperty_SetRenderCallback, kAudioUnitScope_Input,
+                                   0, &cb, sizeof(cb));
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to register output callback (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /* Set the new output format description for the stream. */
-    err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
-                               0, &pStreamOut->streamFormat, sizeof(pStreamOut->streamFormat));
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to set stream format for output stream (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Fetch the current stream format of the device. */
+        uSize = sizeof(pStreamOut->deviceFormat);
+        err = AudioUnitGetProperty(pStreamOut->audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
+                                   0, &pStreamOut->deviceFormat, &uSize);
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to get device format (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    uSize = sizeof(pStreamOut->deviceFormat);
-    err = AudioUnitGetProperty(pStreamOut->audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
-                               0, &pStreamOut->deviceFormat, &uSize);
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to retrieve device format for output stream (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Create an AudioStreamBasicDescription based on our required audio settings. */
+        coreAudioPCMPropsToASBD(&pStreamOut->Stream.Props, &pStreamOut->streamFormat);
 
-    /*
-     * Also set the frame buffer size off the device on our AudioUnit. This
-     * should make sure that the frames count which we receive in the render
-     * thread is as we like.
-     */
-    err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global,
-                               0, &cFrames, sizeof(cFrames));
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to set maximum frame buffer size for output AudioUnit (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        coreAudioPrintASBD("Playback device", &pStreamOut->deviceFormat);
+        coreAudioPrintASBD("Playback format", &pStreamOut->streamFormat);
 
-    /* Finally initialize the new AudioUnit. */
-    err = AudioUnitInitialize(pStreamOut->audioUnit);
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to initialize the output audio device (%RI32)\n", err));
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /* Set the new output format description for the stream. */
+        err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
+                                   0, &pStreamOut->streamFormat, sizeof(pStreamOut->streamFormat));
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to set stream format for output stream (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /*
-     * There are buggy devices (e.g. my Bluetooth headset) which doesn't honor
-     * the frame buffer size set in the previous calls. So finally get the
-     * frame buffer size after the AudioUnit was initialized.
-     */
-    uSize = sizeof(cFrames);
-    err = AudioUnitGetProperty(pStreamOut->audioUnit, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global,
-                               0, &cFrames, &uSize);
-    if (err != noErr)
-    {
-        LogRel(("CoreAudio: Failed to get maximum frame buffer size from output audio device (%RI32)\n", err));
+        uSize = sizeof(pStreamOut->deviceFormat);
+        err = AudioUnitGetProperty(pStreamOut->audioUnit, kAudioUnitProperty_StreamFormat, kAudioUnitScope_Input,
+                                   0, &pStreamOut->deviceFormat, &uSize);
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to retrieve device format for output stream (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-        AudioUnitUninitialize(pStreamOut->audioUnit);
-        return VERR_AUDIO_BACKEND_INIT_FAILED;
-    }
+        /*
+         * Also set the frame buffer size off the device on our AudioUnit. This
+         * should make sure that the frames count which we receive in the render
+         * thread is as we like.
+         */
+        err = AudioUnitSetProperty(pStreamOut->audioUnit, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global,
+                                   0, &cFrames, sizeof(cFrames));
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to set maximum frame buffer size for output AudioUnit (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /*
-     * Make sure that the ring buffer is big enough to hold the recording
-     * data. Compare the maximum frames per slice value with the frames
-     * necessary when using the converter where the sample rate could differ.
-     * The result is always multiplied by the channels per frame to get the
-     * samples count.
-     */
-    int rc = VINF_SUCCESS;
+        /* Finally initialize the new AudioUnit. */
+        err = AudioUnitInitialize(pStreamOut->audioUnit);
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to initialize the output audio device (%RI32)\n", err));
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    UInt32 cSamples = cFrames * pStreamOut->streamFormat.mChannelsPerFrame;
-    if (!cSamples)
-    {
-        LogRel(("CoreAudio: Failed to determine samples buffer count output stream\n"));
-        rc = VERR_INVALID_PARAMETER;
-    }
+        /*
+         * There are buggy devices (e.g. my Bluetooth headset) which doesn't honor
+         * the frame buffer size set in the previous calls. So finally get the
+         * frame buffer size after the AudioUnit was initialized.
+         */
+        uSize = sizeof(cFrames);
+        err = AudioUnitGetProperty(pStreamOut->audioUnit, kAudioUnitProperty_MaximumFramesPerSlice, kAudioUnitScope_Global,
+                                   0, &cFrames, &uSize);
+        if (err != noErr)
+        {
+            LogRel(("CoreAudio: Failed to get maximum frame buffer size from output audio device (%RI32)\n", err));
 
-    /* Destroy any former internal ring buffer. */
-    if (pStreamOut->pCircBuf)
-    {
-        RTCircBufDestroy(pStreamOut->pCircBuf);
-        pStreamOut->pCircBuf = NULL;
-    }
+            AudioUnitUninitialize(pStreamOut->audioUnit);
+            CA_BREAK_STMT(rc = VERR_AUDIO_BACKEND_INIT_FAILED);
+        }
 
-    /* Create the internal ring buffer. */
-    rc = RTCircBufCreate(&pStreamOut->pCircBuf, cSamples << pStream->Props.cShift);
-    if (RT_SUCCESS(rc))
-    {
         /*
-         * Register callbacks.
+         * Make sure that the ring buffer is big enough to hold the recording
+         * data. Compare the maximum frames per slice value with the frames
+         * necessary when using the converter where the sample rate could differ.
+         * The result is always multiplied by the channels per frame to get the
+         * samples count.
          */
+        cSamples = cFrames * pStreamOut->streamFormat.mChannelsPerFrame;
+        if (!cSamples)
+        {
+            LogRel(("CoreAudio: Failed to determine samples buffer count output stream\n"));
+            CA_BREAK_STMT(rc = VERR_INVALID_PARAMETER);
+        }
+
+        /* Destroy any former internal ring buffer. */
+        if (pStreamOut->pCircBuf)
+        {
+            RTCircBufDestroy(pStreamOut->pCircBuf);
+            pStreamOut->pCircBuf = NULL;
+        }
+
+        /* Create the internal ring buffer. */
+        rc = RTCircBufCreate(&pStreamOut->pCircBuf, cSamples << pStream->Props.cShift);
+        if (RT_SUCCESS(rc))
+        {
+            /*
+             * Register callbacks.
+             */
 #ifdef DEBUG
-        propAdr.mSelector = kAudioDeviceProcessorOverload;
-        propAdr.mScope    = kAudioUnitScope_Global;
-        err = AudioObjectAddPropertyListener(pStreamOut->deviceID, &propAdr,
-                                             coreAudioPlaybackAudioDevicePropertyChanged, (void *)pStreamOut);
-        if (err != noErr)
-            LogRel(("CoreAudio: Failed to register processor overload listener for output stream (%RI32)\n", err));
+            propAdr.mSelector = kAudioDeviceProcessorOverload;
+            propAdr.mScope    = kAudioUnitScope_Global;
+            err = AudioObjectAddPropertyListener(pStreamOut->deviceID, &propAdr,
+                                                 coreAudioPlaybackAudioDevicePropertyChanged, (void *)pStreamOut);
+            if (err != noErr)
+                LogRel(("CoreAudio: Failed to register processor overload listener for output stream (%RI32)\n", err));
 #endif /* DEBUG */
 
-        propAdr.mSelector = kAudioDevicePropertyNominalSampleRate;
-        propAdr.mScope    = kAudioUnitScope_Global;
-        err = AudioObjectAddPropertyListener(pStreamOut->deviceID, &propAdr,
-                                             coreAudioPlaybackAudioDevicePropertyChanged, (void *)pStreamOut);
-        /* Not fatal. */
-        if (err != noErr)
-            LogRel(("CoreAudio: Failed to register sample rate changed listener for output stream (%RI32)\n", err));
-    }
+            propAdr.mSelector = kAudioDevicePropertyNominalSampleRate;
+            propAdr.mScope    = kAudioUnitScope_Global;
+            err = AudioObjectAddPropertyListener(pStreamOut->deviceID, &propAdr,
+                                                 coreAudioPlaybackAudioDevicePropertyChanged, (void *)pStreamOut);
+            /* Not fatal. */
+            if (err != noErr)
+                LogRel(("CoreAudio: Failed to register sample rate changed listener for output stream (%RI32)\n", err));
+        }
+
+    } while (0);
 
     if (RT_SUCCESS(rc))
     {
@@ -1909,14 +1925,14 @@ static DECLCALLBACK(int) drvHostCoreAudioStreamCapture(PPDMIHOSTAUDIO pInterface
 
     do
     {
-        size_t cbBuf = AudioMixBufSizeBytes(&pStream->MixBuf);
+        size_t cbBuf     = AudioMixBufSizeBytes(&pStream->MixBuf);
         size_t cbToWrite = RT_MIN(cbBuf, RTCircBufUsed(pStreamIn->pCircBuf));
 
         uint32_t cWritten, cbWritten;
         uint8_t *puBuf;
         size_t   cbToRead;
 
-        Log3Func(("cbBuf=%zu, cbToWrite=%zu\n", cbBuf, cbToWrite));
+        Log3Func(("cbBuf=%zu, cbToWrite=%zu/%zu\n", cbBuf, cbToWrite, RTCircBufSize(pStreamIn->pCircBuf)));
 
         while (cbToWrite)
         {
@@ -1928,7 +1944,23 @@ static DECLCALLBACK(int) drvHostCoreAudioStreamCapture(PPDMIHOSTAUDIO pInterface
                 break;
             }
 
+#ifdef DEBUG_DUMP_PCM_DATA
+            RTFILE fh;
+            rc = RTFileOpen(&fh, DEBUG_DUMP_PCM_DATA_PATH "ca-capture.pcm",
+                            RTFILE_O_OPEN_CREATE | RTFILE_O_APPEND | RTFILE_O_WRITE | RTFILE_O_DENY_NONE);
+            if (RT_SUCCESS(rc))
+            {
+                RTFileWrite(fh, puBuf + cbWrittenTotal, cbToRead, NULL);
+                RTFileClose(fh);
+            }
+            else
+                AssertFailed();
+#endif
             rc = AudioMixBufWriteCirc(&pStream->MixBuf, puBuf, cbToRead, &cWritten);
+
+            /* Release the read buffer, so it could be used for new data. */
+            RTCircBufReleaseReadBlock(pStreamIn->pCircBuf, cbToRead);
+
             if (   RT_FAILURE(rc)
                 || !cWritten)
             {
@@ -2063,8 +2095,8 @@ static DECLCALLBACK(int) coreAudioControlStreamOut(PDRVHOSTCOREAUDIO pThis,
     }
 
     int rc = VINF_SUCCESS;
-    OSStatus err;
 
+    OSStatus err;
     switch (enmStreamCmd)
     {
         case PDMAUDIOSTREAMCMD_ENABLE:
@@ -2082,7 +2114,7 @@ static DECLCALLBACK(int) coreAudioControlStreamOut(PDRVHOSTCOREAUDIO pThis,
                 RTCircBufReset(pStreamOut->pCircBuf);
 
                 err = AudioOutputUnitStart(pStreamOut->audioUnit);
-                if (RT_UNLIKELY(err != noErr))
+                if (err != noErr)
                 {
                     LogRel(("CoreAudio: Failed to start playback (%RI32)\n", err));
                     rc = VERR_GENERAL_FAILURE; /** @todo Fudge! */
@@ -2139,8 +2171,8 @@ static int coreAudioControlStreamIn(PDRVHOSTCOREAUDIO pThis,
     }
 
     int rc = VINF_SUCCESS;
-    OSStatus err = noErr;
 
+    OSStatus err;
     switch (enmStreamCmd)
     {
         case PDMAUDIOSTREAMCMD_ENABLE:
@@ -2159,11 +2191,6 @@ static int coreAudioControlStreamIn(PDRVHOSTCOREAUDIO pThis,
                 }
             }
 
-            if (err != noErr)
-            {
-                LogRel(("CoreAudio: Failed to start recording (%RI32)\n", err));
-                rc = VERR_GENERAL_FAILURE; /** @todo Fudge! */
-            }
             break;
         }
 
@@ -2307,7 +2334,10 @@ static int coreAudioDestroyStreamIn(PDRVHOSTCOREAUDIO pThis, PPDMAUDIOSTREAM pSt
         ASMAtomicXchgU32(&pStreamIn->status, CA_STATUS_UNINIT);
     }
     else
-        LogRel(("CoreAudio: Failed to stop recording on uninit, rc=%Rrc\n", rc));
+    {
+        LogRel(("CoreAudio: Failed to stop recording on uninit (%RI32)\n", err));
+        rc = VERR_GENERAL_FAILURE; /** @todo Fudge! */
+    }
 
     LogFlowFuncLeaveRC(rc);
     return rc;
@@ -2422,6 +2452,8 @@ static int coreAudioCreateStreamIn(PDRVHOSTCOREAUDIO pThis,
 {
     PCOREAUDIOSTREAMIN pStreamIn = (PCOREAUDIOSTREAMIN)pStream;
 
+    LogFlowFunc(("enmRecSource=%RU32\n", pCfg->DestSource.Source));
+
     pStreamIn->deviceID            = kAudioDeviceUnknown;
     pStreamIn->audioUnit           = NULL;
     pStreamIn->pConverter          = NULL;
@@ -2438,8 +2470,7 @@ static int coreAudioCreateStreamIn(PDRVHOSTCOREAUDIO pThis,
 
     bool fDeviceByUser = false; /* Do we use a device which was set by the user? */
 
-    LogFlowFunc(("enmRecSource=%RU32\n", pCfg->DestSource.Source));
-
+    /* Initialize the hardware info section with the audio settings */
     int rc = DrvAudioHlpStreamCfgToProps(pCfg, &pStreamIn->Stream.Props);
     if (RT_SUCCESS(rc))
     {
@@ -2566,7 +2597,7 @@ static int coreAudioCreateStreamOut(PDRVHOSTCOREAUDIO pThis,
         AudioObjectPropertyAddress propAdr = { kAudioDevicePropertyDeviceIsAlive, kAudioObjectPropertyScopeGlobal,
                                                kAudioObjectPropertyElementMaster };
         err = AudioObjectAddPropertyListener(pStreamOut->deviceID, &propAdr, drvHostCoreAudioDeviceStateChanged,
-                                             &pStreamOut->cbCtx);
+                                             (void *)&pStreamOut->cbCtx);
         if (err == noErr)
         {
             pStreamOut->fDevStateChgListReg = true;
diff --git a/src/VBox/Devices/BiosCommonCode/MakeAlternativeSource.cpp b/src/VBox/Devices/BiosCommonCode/MakeAlternativeSource.cpp
index b513c3e..7b02145 100644
--- a/src/VBox/Devices/BiosCommonCode/MakeAlternativeSource.cpp
+++ b/src/VBox/Devices/BiosCommonCode/MakeAlternativeSource.cpp
@@ -1007,6 +1007,12 @@ static bool disCode(uint32_t uFlatAddr, uint32_t cb, bool fIs16Bit)
                      && pb[7] == 0xa0
                      && pb[8] == 0xe2
                      && pb[9] == 0xa0)
+                 || (   pb[0] == 0xd4
+                     && pb[1] == 0xc6
+                     && pb[2] == 0xc5
+                     && pb[3] == 0xba
+                     && pb[4] == 0xb8
+                     && pb[5] == 0xb6)
                  || (   pb[0] == 0xec  /* _int15_function switch */
                      && pb[1] == 0xe9
                      && pb[2] == 0xd8
@@ -2024,7 +2030,7 @@ int main(int argc, char **argv)
             case 'V':
             {
                 /* The following is assuming that svn does it's job here. */
-                char szRev[] = "$Revision: 108606 $";
+                char szRev[] = "$Revision: 108956 $";
                 char *psz = szRev;
                 while (*psz && !RT_C_IS_DIGIT(*psz))
                     psz++;
diff --git a/src/VBox/Devices/Bus/DevPciIch9.cpp b/src/VBox/Devices/Bus/DevPciIch9.cpp
index 479425c..6950481 100644
--- a/src/VBox/Devices/Bus/DevPciIch9.cpp
+++ b/src/VBox/Devices/Bus/DevPciIch9.cpp
@@ -2,12 +2,12 @@
 /** @file
  * DevPCI - ICH9 southbridge PCI bus emulation device.
  *
- * @note    bird: I've cleaned up DevPCI.cpp to some extend, this file has not
+ * @note    bird: I've cleaned up DevPCI.cpp to some extent, this file has not
  *                be cleaned up and because of pending code merge.
  */
 
 /*
- * Copyright (C) 2010-2015 Oracle Corporation
+ * 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;
@@ -1047,7 +1047,8 @@ static DECLCALLBACK(int) ich9pciIORegionRegister(PPDMDEVINS pDevIns, PPCIDEVICE
 
     if ((enmType & PCI_ADDRESS_SPACE_BAR64) != 0)
     {
-        AssertMsgReturn(iRegion  < 4,
+        /* VBOX_PCI_BASE_ADDRESS_5 and VBOX_PCI_ROM_ADDRESS are excluded. */
+        AssertMsgReturn(iRegion < (PCI_NUM_REGIONS-2),
                         ("Region %d cannot be 64-bit\n", iRegion),
                         VERR_INVALID_PARAMETER);
         /* Mark next region as continuation of this one. */
diff --git a/src/VBox/Devices/EFI/Firmware/PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeController.c b/src/VBox/Devices/EFI/Firmware/PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeController.c
index 43ef8ae..6cd7078 100644
--- a/src/VBox/Devices/EFI/Firmware/PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeController.c
+++ b/src/VBox/Devices/EFI/Firmware/PcAtChipsetPkg/Bus/Pci/IdeControllerDxe/IdeController.c
@@ -706,9 +706,11 @@ IdeInitCalculateMode (
   OUT EFI_ATA_COLLECTIVE_MODE                **SupportedModes
   )
 {
+#ifndef VBOX
   if (Channel >= ICH_IDE_MAX_CHANNEL || Device >= ICH_IDE_MAX_DEVICES) {
     return EFI_INVALID_PARAMETER;
   }
+#endif
 
   *SupportedModes = AllocateCopyPool (sizeof (EFI_ATA_COLLECTIVE_MODE), &gEfiAtaCollectiveModeTemplate);
   if (*SupportedModes == NULL) {
diff --git a/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_iso9660.c b/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_iso9660.c
index 97a98c9..3324baf 100644
--- a/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_iso9660.c
+++ b/src/VBox/Devices/EFI/Firmware/VBoxPkg/VBoxFsDxe/fsw_iso9660.c
@@ -212,7 +212,7 @@ static fsw_status_t rr_find_nm(struct fsw_iso9660_volume *vol, struct iso9660_di
                 str->data = tmp;
                 str->len += len;
 
-                if ((nm->flags & RR_NM_CONT) == 0);
+                if ((nm->flags & RR_NM_CONT) == 0)
                     goto done;
             }
         }
diff --git a/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd b/src/VBox/Devices/EFI/FirmwareBin/VBoxEFI32.fd
index 4d0ddc6..b8d7d6a 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 2bd0da3..3b4806f 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 7a938d0..8c7d7bc 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=0x371e class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2e
-    db  'Oracle VM VirtualBox Version 5.1.0 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.2 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462e 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 0x23
-    db  'Oracle VM VirtualBox Version 5.1.0', 000h
+    db  'Oracle VM VirtualBox Version 5.1.2', 000h
 _vbebios_info_string:                        ; 0xc7cca LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf5 LB 0x29
@@ -8245,4 +8245,4 @@ section CONST2 progbits vstart=0x7d1e 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, 049h
+    db  000h, 045h
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
index f6665cd..a7c3017 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative286.md5sum
@@ -1 +1 @@
-e9e35e150378e349671b5249d7cc6bd7 *VBoxVgaBios286.rom
+1dff2988b38fc4359443b0df66364f0b *VBoxVgaBios286.rom
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.asm
index 47ca2b8..879e117 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=0x371e class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2e
-    db  'Oracle VM VirtualBox Version 5.1.0 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.2 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462e 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 0x23
-    db  'Oracle VM VirtualBox Version 5.1.0', 000h
+    db  'Oracle VM VirtualBox Version 5.1.2', 000h
 _vbebios_info_string:                        ; 0xc7cca LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf5 LB 0x29
@@ -7721,4 +7721,4 @@ section CONST2 progbits vstart=0x7d1e 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, 03eh
+    db  000h, 03ah
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
index 89fbf6a..f6bc224 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative386.md5sum
@@ -1 +1 @@
-66faf6427926f344aa264190f73979b9 *VBoxVgaBios386.rom
+b64d0c0c484fa191007e0a4a472a9508 *VBoxVgaBios386.rom
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.asm
index bff012f..d0998b4 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=0x371e class=DATA group=DGROUP
 _msg_vga_init:                               ; 0xc4600 LB 0x2e
-    db  'Oracle VM VirtualBox Version 5.1.0 VGA BIOS', 00dh, 00ah, 000h
+    db  'Oracle VM VirtualBox Version 5.1.2 VGA BIOS', 00dh, 00ah, 000h
 _vga_modes:                                  ; 0xc462e 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 0x23
-    db  'Oracle VM VirtualBox Version 5.1.0', 000h
+    db  'Oracle VM VirtualBox Version 5.1.2', 000h
 _vbebios_info_string:                        ; 0xc7cca LB 0x2b
     db  'VirtualBox VBE Display Adapter enabled', 00dh, 00ah, 00dh, 00ah, 000h
 _no_vbebios_info_string:                     ; 0xc7cf5 LB 0x29
@@ -8386,4 +8386,4 @@ section CONST2 progbits vstart=0x7d1e 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, 0d0h
+    db  000h, 0cch
diff --git a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
index db97f07..33cbb8c 100644
--- a/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
+++ b/src/VBox/Devices/Graphics/BIOS/VBoxVgaBiosAlternative8086.md5sum
@@ -1 +1 @@
-6c7ee10604f362a96b50a3d666ce7672 *VBoxVgaBios8086.rom
+d36758122a585147d0c6edb4cebf2984 *VBoxVgaBios8086.rom
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c b/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c
index 221b4cd..a77acc5 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_nbt.c
@@ -777,7 +777,7 @@ AliasHandleResourceNBSTAT(
     /* Check out of length */
     bcount = ntohs(q->rdlen);
 
-    if (q == NULL || (char *)((u_char *) n + bcount) > pmax)
+    if ((char *)((u_char *) n + bcount) > pmax)
         return (NULL);
     else
         return ((u_char *) n + bcount);
diff --git a/src/VBox/Devices/Network/slirp/libalias/alias_proxy.c b/src/VBox/Devices/Network/slirp/libalias/alias_proxy.c
index edbbe0e..5c74b2d 100644
--- a/src/VBox/Devices/Network/slirp/libalias/alias_proxy.c
+++ b/src/VBox/Devices/Network/slirp/libalias/alias_proxy.c
@@ -802,7 +802,7 @@ LibAliasProxyRule(struct libalias *la, const char *cmd)
                 } else {
                     *p = ' ';
 
-                    n = sscanf(token, "%s %s", s, str_server_port);
+                    n = sscanf(token, "%255s %255s", s, str_server_port);
                     if (n != 2) {
                         ret = -1;
                         goto getout;
@@ -885,7 +885,7 @@ LibAliasProxyRule(struct libalias *la, const char *cmd)
                     char s[sizeof(buffer)];
 
                     *p = ' ';
-                    n = sscanf(token, "%s %d", s, &nbits);
+                    n = sscanf(token, "%255s %d", s, &nbits);
                     if (n != 2) {
                         ret = -1;
                         goto getout;
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.asm
index 4f0de45..ec84a62 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, 0e6h, 080h, 04ch, 090h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 000h, 02bh, 03ah, 081h, 0a0h, 090h
 _softrst:                                    ; 0xf0076 LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 089h, 02dh, 0c8h, 03ah, 0c8h, 03ah
+    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  026h, 07fh, 006h, 080h, 01eh, 08fh, 0c6h, 08fh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  07ah, 07fh, 05ah, 080h, 072h, 08fh, 01ah, 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.0', 000h, 000h
+    db  'VirtualBox 5.1.2', 000h, 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -1189,7 +1189,7 @@ _panic_msg_keyb_buffer_full:                 ; 0xf1168 LB 0x20
   ; Padding 0x478 bytes at 0xf1188
   times 1144 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x8cb8 class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x8d08 class=CODE group=AUTO
 rom_scan_:                                   ; 0xf1600 LB 0x50
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -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 07aebh                               ; e8 34 63
+    call 07b3fh                               ; e8 88 63
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
@@ -1584,7 +1584,7 @@ put_luint_:                                  ; 0xf18b3 LB 0x70
     mov dx, cx                                ; 89 ca
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 09f50h                               ; e8 83 86
+    call 09fa0h                               ; e8 d3 86
     mov word [bp-008h], ax                    ; 89 46 f8
     mov cx, dx                                ; 89 d1
     mov dx, ax                                ; 89 c2
@@ -1814,7 +1814,7 @@ bios_printf_:                                ; 0xf1966 LB 0x339
     mov cx, word [bp-024h]                    ; 8b 4e dc
     mov dx, word [bp-026h]                    ; 8b 56 da
     mov si, word [bp-01eh]                    ; 8b 76 e2
-    call 09f80h                               ; e8 83 84
+    call 09fd0h                               ; e8 d3 84
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
     and AL, strict byte 00fh                  ; 24 0f
@@ -2253,7 +2253,7 @@ ata_cmd_data_in_:                            ; 0xf1e63 LB 0x2b5
     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 09f80h                               ; e8 30 80
+    call 09fd0h                               ; e8 80 80
     xor dh, dh                                ; 30 f6
     mov word [bp-014h], dx                    ; 89 56 ec
     mov bx, word [bp-016h]                    ; 8b 5e ea
@@ -2263,7 +2263,7 @@ ata_cmd_data_in_:                            ; 0xf1e63 LB 0x2b5
     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 09f80h                               ; e8 10 80
+    call 09fd0h                               ; e8 60 80
     mov bx, dx                                ; 89 d3
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     xor al, al                                ; 30 c0
@@ -2294,7 +2294,7 @@ ata_cmd_data_in_:                            ; 0xf1e63 LB 0x2b5
     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 09f80h                               ; e8 bf 7f
+    call 09fd0h                               ; e8 0f 80
     mov word [bp-012h], dx                    ; 89 56 ee
     mov bx, word [bp-016h]                    ; 8b 5e ea
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
@@ -2303,7 +2303,7 @@ ata_cmd_data_in_:                            ; 0xf1e63 LB 0x2b5
     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 09f80h                               ; e8 a1 7f
+    call 09fd0h                               ; e8 f1 7f
     mov ah, dl                                ; 88 d4
     and ah, 00fh                              ; 80 e4 0f
     or ah, 040h                               ; 80 cc 40
@@ -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 05977h                               ; e8 cd 35
+    call 059cbh                               ; e8 21 36
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -2860,7 +2860,7 @@ _ata_detect:                                 ; 0xf2118 LB 0x64e
     mov cx, word [es:di+038h]                 ; 26 8b 4d 38
     mov dx, word [es:di+036h]                 ; 26 8b 55 36
     mov si, strict word 0000bh                ; be 0b 00
-    call 09f80h                               ; e8 f9 79
+    call 09fd0h                               ; e8 49 7a
     mov word [bp-024h], dx                    ; 89 56 dc
     mov word [bp-032h], cx                    ; 89 4e ce
     mov al, byte [bp-001c3h]                  ; 8a 86 3d fe
@@ -3136,7 +3136,7 @@ ata_cmd_data_out_:                           ; 0xf2766 LB 0x28a
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov dx, word [bp-024h]                    ; 8b 56 dc
     mov si, strict word 00018h                ; be 18 00
-    call 09f80h                               ; e8 37 77
+    call 09fd0h                               ; e8 87 77
     xor dh, dh                                ; 30 f6
     mov word [bp-014h], dx                    ; 89 56 ec
     mov ax, word [bp-00ch]                    ; 8b 46 f4
@@ -3144,7 +3144,7 @@ ata_cmd_data_out_:                           ; 0xf2766 LB 0x28a
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov dx, word [bp-024h]                    ; 8b 56 dc
     mov si, strict word 00020h                ; be 20 00
-    call 09f80h                               ; e8 20 77
+    call 09fd0h                               ; e8 70 77
     mov bx, dx                                ; 89 d3
     mov ax, word [bp-022h]                    ; 8b 46 de
     xor al, al                                ; 30 c0
@@ -3178,14 +3178,14 @@ ata_cmd_data_out_:                           ; 0xf2766 LB 0x28a
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov dx, word [bp-024h]                    ; 8b 56 dc
     mov si, strict word 00008h                ; be 08 00
-    call 09f80h                               ; e8 cc 76
+    call 09fd0h                               ; e8 1c 77
     mov word [bp-00ch], ax                    ; 89 46 f4
     mov word [bp-00eh], bx                    ; 89 5e f2
     mov word [bp-010h], cx                    ; 89 4e f0
     mov word [bp-024h], dx                    ; 89 56 dc
     mov word [bp-018h], dx                    ; 89 56 e8
     mov si, strict word 00010h                ; be 10 00
-    call 09f80h                               ; e8 b7 76
+    call 09fd0h                               ; e8 07 77
     mov word [bp-024h], dx                    ; 89 56 dc
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
@@ -3847,19 +3847,21 @@ floppy_wait_for_interrupt_or_timeout_:       ; 0xf2e73 LB 0x47
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_reset_controller_:                    ; 0xf2eba LB 0x28
+floppy_reset_controller_:                    ; 0xf2eba LB 0x46
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
+    push cx                                   ; 51
     push dx                                   ; 52
+    mov bx, ax                                ; 89 c3
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    mov bx, ax                                ; 89 c3
+    mov cx, ax                                ; 89 c1
     and AL, strict byte 0fbh                  ; 24 fb
     out DX, AL                                ; ee
-    mov al, bl                                ; 88 d8
+    mov al, cl                                ; 88 c8
     or AL, strict byte 004h                   ; 0c 04
     out DX, AL                                ; ee
     mov dx, 003f4h                            ; ba f4 03
@@ -3868,13 +3870,24 @@ floppy_reset_controller_:                    ; 0xf2eba LB 0x28
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02ecfh                          ; 75 f4
-    lea sp, [bp-004h]                         ; 8d 66 fc
+    jne short 02ed2h                          ; 75 f4
+    lea cx, [bx+00090h]                       ; 8d 8f 90 00
+    mov dx, cx                                ; 89 ca
+    mov ax, strict word 00040h                ; b8 40 00
+    call 01650h                               ; e8 66 e7
+    and AL, strict byte 0efh                  ; 24 ef
+    xor ah, ah                                ; 30 e4
+    mov bx, ax                                ; 89 c3
+    mov dx, cx                                ; 89 ca
+    mov ax, strict word 00040h                ; b8 40 00
+    call 0165eh                               ; e8 66 e7
+    lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
+    pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_prepare_controller_:                  ; 0xf2ee2 LB 0x83
+floppy_prepare_controller_:                  ; 0xf2f00 LB 0x83
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -3884,13 +3897,13 @@ floppy_prepare_controller_:                  ; 0xf2ee2 LB 0x83
     mov cx, ax                                ; 89 c1
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 5c e7
+    call 01650h                               ; e8 3e e7
     and AL, strict byte 07fh                  ; 24 7f
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 5b e7
+    call 0165eh                               ; e8 3d e7
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -3898,9 +3911,9 @@ floppy_prepare_controller_:                  ; 0xf2ee2 LB 0x83
     and AL, strict byte 004h                  ; 24 04
     mov byte [bp-008h], al                    ; 88 46 f8
     test cx, cx                               ; 85 c9
-    je short 02f16h                           ; 74 04
+    je short 02f34h                           ; 74 04
     mov AL, strict byte 020h                  ; b0 20
-    jmp short 02f18h                          ; eb 02
+    jmp short 02f36h                          ; eb 02
     mov AL, strict byte 010h                  ; b0 10
     or AL, strict byte 00ch                   ; 0c 0c
     or al, cl                                 ; 08 c8
@@ -3909,10 +3922,10 @@ floppy_prepare_controller_:                  ; 0xf2ee2 LB 0x83
     mov bx, strict word 00025h                ; bb 25 00
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 0165eh                               ; e8 33 e7
+    call 0165eh                               ; e8 15 e7
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 1c e7
+    call 01650h                               ; e8 fe e6
     shr al, 006h                              ; c0 e8 06
     mov dx, 003f7h                            ; ba f7 03
     out DX, AL                                ; ee
@@ -3922,22 +3935,22 @@ floppy_prepare_controller_:                  ; 0xf2ee2 LB 0x83
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02f3bh                          ; 75 f4
+    jne short 02f59h                          ; 75 f4
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 02f5dh                          ; 75 10
-    call 02e52h                               ; e8 02 ff
+    jne short 02f7bh                          ; 75 10
+    call 02e52h                               ; e8 e4 fe
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 01 e7
+    call 0165eh                               ; e8 e3 e6
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_known_:                         ; 0xf2f65 LB 0x43
+floppy_media_known_:                         ; 0xf2f83 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -3945,32 +3958,32 @@ floppy_media_known_:                         ; 0xf2f65 LB 0x43
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 db e6
+    call 01650h                               ; e8 bd e6
     mov ah, al                                ; 88 c4
     test bx, bx                               ; 85 db
-    je short 02f7dh                           ; 74 02
+    je short 02f9bh                           ; 74 02
     shr al, 1                                 ; d0 e8
     and AL, strict byte 001h                  ; 24 01
-    jne short 02f85h                          ; 75 04
+    jne short 02fa3h                          ; 75 04
     xor ah, ah                                ; 30 e4
-    jmp short 02fa1h                          ; eb 1c
+    jmp short 02fbfh                          ; eb 1c
     mov dx, 00090h                            ; ba 90 00
     test bx, bx                               ; 85 db
-    je short 02f8fh                           ; 74 03
+    je short 02fadh                           ; 74 03
     mov dx, 00091h                            ; ba 91 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 bb e6
+    call 01650h                               ; e8 9d e6
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
     and AL, strict byte 001h                  ; 24 01
-    je short 02f81h                           ; 74 e3
+    je short 02f9fh                           ; 74 e3
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_read_id_:                             ; 0xf2fa8 LB 0x44
+floppy_read_id_:                             ; 0xf2fc6 LB 0x44
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -3978,28 +3991,28 @@ floppy_read_id_:                             ; 0xf2fa8 LB 0x44
     push si                                   ; 56
     sub sp, strict byte 00008h                ; 83 ec 08
     mov bx, ax                                ; 89 c3
-    call 02ee2h                               ; e8 2c ff
+    call 02f00h                               ; e8 2c ff
     mov AL, strict byte 04ah                  ; b0 4a
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02e52h                               ; e8 90 fe
+    call 02e52h                               ; e8 72 fe
     xor si, si                                ; 31 f6
-    jmp short 02fcbh                          ; eb 05
+    jmp short 02fe9h                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 02fd7h                          ; 7d 0c
+    jnl short 02ff5h                          ; 7d 0c
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+si-00eh], al                 ; 88 42 f2
     inc si                                    ; 46
-    jmp short 02fc6h                          ; eb ef
+    jmp short 02fe4h                          ; eb ef
     test byte [bp-00eh], 0c0h                 ; f6 46 f2 c0
-    je short 02fe1h                           ; 74 04
+    je short 02fffh                           ; 74 04
     xor ax, ax                                ; 31 c0
-    jmp short 02fe4h                          ; eb 03
+    jmp short 03002h                          ; eb 03
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop si                                    ; 5e
@@ -4007,37 +4020,37 @@ floppy_read_id_:                             ; 0xf2fa8 LB 0x44
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_recal_:                         ; 0xf2fec LB 0x4d
+floppy_drive_recal_:                         ; 0xf300a LB 0x4d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push cx                                   ; 51
     push dx                                   ; 52
     mov bx, ax                                ; 89 c3
-    call 02ee2h                               ; e8 eb fe
+    call 02f00h                               ; e8 eb fe
     mov AL, strict byte 007h                  ; b0 07
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02e52h                               ; e8 4f fe
+    call 02e52h                               ; e8 31 fe
     test bx, bx                               ; 85 db
-    je short 03011h                           ; 74 0a
+    je short 0302fh                           ; 74 0a
     mov bl, al                                ; 88 c3
     or bl, 002h                               ; 80 cb 02
     mov cx, 00095h                            ; b9 95 00
-    jmp short 03019h                          ; eb 08
+    jmp short 03037h                          ; eb 08
     mov bl, al                                ; 88 c3
     or bl, 001h                               ; 80 cb 01
     mov cx, 00094h                            ; b9 94 00
     xor bh, bh                                ; 30 ff
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 3a e6
+    call 0165eh                               ; e8 1c e6
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 30 e6
+    call 0165eh                               ; e8 12 e6
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -4045,7 +4058,7 @@ floppy_drive_recal_:                         ; 0xf2fec LB 0x4d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_sense_:                         ; 0xf3039 LB 0xf9
+floppy_media_sense_:                         ; 0xf3057 LB 0xf9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -4054,51 +4067,51 @@ floppy_media_sense_:                         ; 0xf3039 LB 0xf9
     push si                                   ; 56
     push di                                   ; 57
     mov di, ax                                ; 89 c7
-    call 02fech                               ; e8 a6 ff
+    call 0300ah                               ; e8 a6 ff
     test ax, ax                               ; 85 c0
-    jne short 0304fh                          ; 75 05
+    jne short 0306dh                          ; 75 05
     xor cx, cx                                ; 31 c9
-    jmp near 03126h                           ; e9 d7 00
+    jmp near 03144h                           ; e9 d7 00
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 57 e6
+    call 016ach                               ; e8 39 e6
     test di, di                               ; 85 ff
-    jne short 03060h                          ; 75 07
+    jne short 0307eh                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03065h                          ; eb 05
+    jmp short 03083h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     cmp cl, 001h                              ; 80 f9 01
-    jne short 03073h                          ; 75 09
+    jne short 03091h                          ; 75 09
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 015h                  ; b5 15
     mov si, strict word 00001h                ; be 01 00
-    jmp short 030b1h                          ; eb 3e
+    jmp short 030cfh                          ; eb 3e
     cmp cl, 002h                              ; 80 f9 02
-    jne short 0307eh                          ; 75 06
+    jne short 0309ch                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 035h                  ; b5 35
-    jmp short 0306eh                          ; eb f0
+    jmp short 0308ch                          ; eb f0
     cmp cl, 003h                              ; 80 f9 03
-    jne short 03089h                          ; 75 06
+    jne short 030a7h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 0306eh                          ; eb e5
+    jmp short 0308ch                          ; eb e5
     cmp cl, 004h                              ; 80 f9 04
-    jne short 03094h                          ; 75 06
+    jne short 030b2h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 0306eh                          ; eb da
+    jmp short 0308ch                          ; eb da
     cmp cl, 005h                              ; 80 f9 05
-    jne short 0309fh                          ; 75 06
+    jne short 030bdh                          ; 75 06
     mov CL, strict byte 0cch                  ; b1 cc
     mov CH, strict byte 0d7h                  ; b5 d7
-    jmp short 0306eh                          ; eb cf
+    jmp short 0308ch                          ; eb cf
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 030a9h                           ; 74 05
+    je short 030c7h                           ; 74 05
     cmp cl, 00fh                              ; 80 f9 0f
-    jne short 030abh                          ; 75 02
-    jmp short 03099h                          ; eb ee
+    jne short 030c9h                          ; 75 02
+    jmp short 030b7h                          ; eb ee
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
     xor si, si                                ; 31 f6
@@ -4107,51 +4120,51 @@ floppy_media_sense_:                         ; 0xf3039 LB 0xf9
     mov bx, ax                                ; 89 c3
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 9e e5
+    call 0165eh                               ; e8 80 e5
     mov ax, di                                ; 89 f8
-    call 02fa8h                               ; e8 e3 fe
+    call 02fc6h                               ; e8 e3 fe
     test ax, ax                               ; 85 c0
-    jne short 030fbh                          ; 75 32
+    jne short 03119h                          ; 75 32
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    je short 030fbh                           ; 74 2a
+    je short 03119h                           ; 74 2a
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 030e8h                           ; 74 0f
+    je short 03106h                           ; 74 0f
     mov ah, cl                                ; 88 cc
     and ah, 03fh                              ; 80 e4 3f
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 030f4h                           ; 74 12
+    je short 03112h                           ; 74 12
     test al, al                               ; 84 c0
-    je short 030edh                           ; 74 07
-    jmp short 030b1h                          ; eb c9
+    je short 0310bh                           ; 74 07
+    jmp short 030cfh                          ; eb c9
     and cl, 03fh                              ; 80 e1 3f
-    jmp short 030b1h                          ; eb c4
+    jmp short 030cfh                          ; eb c4
     mov cl, ah                                ; 88 e1
     or cl, 040h                               ; 80 c9 40
-    jmp short 030b1h                          ; eb bd
+    jmp short 030cfh                          ; eb bd
     mov cl, ah                                ; 88 e1
     or cl, 080h                               ; 80 c9 80
-    jmp short 030b1h                          ; eb b6
+    jmp short 030cfh                          ; eb b6
     test di, di                               ; 85 ff
-    jne short 03104h                          ; 75 05
+    jne short 03122h                          ; 75 05
     mov di, 00090h                            ; bf 90 00
-    jmp short 03107h                          ; eb 03
+    jmp short 03125h                          ; eb 03
     mov di, 00091h                            ; bf 91 00
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 48 e5
+    call 0165eh                               ; e8 2a e5
     mov al, ch                                ; 88 e8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, di                                ; 89 fa
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 3a e5
+    call 0165eh                               ; e8 1c e5
     mov cx, si                                ; 89 f1
     mov ax, cx                                ; 89 c8
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -4162,33 +4175,33 @@ floppy_media_sense_:                         ; 0xf3039 LB 0xf9
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_exists_:                        ; 0xf3132 LB 0x28
+floppy_drive_exists_:                        ; 0xf3150 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, ax                                ; 89 c2
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 6e e5
+    call 016ach                               ; e8 50 e5
     test dx, dx                               ; 85 d2
-    jne short 03147h                          ; 75 05
+    jne short 03165h                          ; 75 05
     shr al, 004h                              ; c0 e8 04
-    jmp short 03149h                          ; eb 02
+    jmp short 03167h                          ; eb 02
     and AL, strict byte 00fh                  ; 24 0f
     test al, al                               ; 84 c0
-    je short 03152h                           ; 74 05
+    je short 03170h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 03154h                          ; eb 02
+    jmp short 03172h                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_diskette_function:                    ; 0xf315a LB 0x93e
+_int13_diskette_function:                    ; 0xf3178 LB 0x974
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
-    sub sp, strict byte 00016h                ; 83 ec 16
+    sub sp, strict byte 00018h                ; 83 ec 18
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
     mov byte [bp-00eh], bl                    ; 88 5e f2
@@ -4199,101 +4212,101 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov cl, byte [bp+016h]                    ; 8a 4e 16
     mov dx, word [bp+014h]                    ; 8b 56 14
     shr dx, 008h                              ; c1 ea 08
-    mov word [bp-010h], dx                    ; 89 56 f0
+    mov word [bp-014h], dx                    ; 89 56 ec
     cmp bl, 008h                              ; 80 fb 08
-    jc short 031b7h                           ; 72 2e
+    jc short 031d5h                           ; 72 2e
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     or dl, 001h                               ; 80 ca 01
     cmp bl, 008h                              ; 80 fb 08
-    jbe short 031edh                          ; 76 59
+    jbe short 0320bh                          ; 76 59
     cmp bl, 016h                              ; 80 fb 16
-    jc short 031afh                           ; 72 16
+    jc short 031cdh                           ; 72 16
     or si, 00100h                             ; 81 ce 00 01
     cmp bl, 016h                              ; 80 fb 16
-    jbe short 031f0h                          ; 76 4e
+    jbe short 0320eh                          ; 76 4e
     cmp bl, 018h                              ; 80 fb 18
-    je short 031f3h                           ; 74 4c
+    je short 03211h                           ; 74 4c
     cmp bl, 017h                              ; 80 fb 17
-    je short 03209h                           ; 74 5d
-    jmp near 03a75h                           ; e9 c6 08
+    je short 03227h                           ; 74 5d
+    jmp near 03ac9h                           ; e9 fc 08
     cmp bl, 015h                              ; 80 fb 15
-    je short 0320ch                           ; 74 58
-    jmp near 03a75h                           ; e9 be 08
+    je short 0322ah                           ; 74 58
+    jmp near 03ac9h                           ; e9 f4 08
     cmp bl, 001h                              ; 80 fb 01
-    jc short 031cbh                           ; 72 0f
-    jbe short 0320fh                          ; 76 51
+    jc short 031e9h                           ; 72 0f
+    jbe short 0322dh                          ; 76 51
     cmp bl, 005h                              ; 80 fb 05
-    je short 0322ah                           ; 74 67
+    je short 03248h                           ; 74 67
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 0322dh                          ; 76 65
-    jmp near 03a75h                           ; e9 aa 08
+    jbe short 0324bh                          ; 76 65
+    jmp near 03ac9h                           ; e9 e0 08
     test bl, bl                               ; 84 db
-    jne short 0322fh                          ; 75 60
+    jne short 0324dh                          ; 75 60
     mov al, byte [bp+00eh]                    ; 8a 46 0e
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 031f6h                          ; 76 1d
+    jbe short 03214h                          ; 76 1d
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02e09h                               ; e8 1f fc
-    jmp near 03599h                           ; e9 ac 03
-    jmp near 03757h                           ; e9 67 05
-    jmp near 0388bh                           ; e9 98 06
-    jmp near 03924h                           ; e9 2e 07
+    call 02e09h                               ; e8 01 fc
+    jmp near 035d0h                           ; e9 c5 03
+    jmp near 037abh                           ; e9 9d 05
+    jmp near 038dfh                           ; e9 ce 06
+    jmp near 03978h                           ; e9 64 07
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 b0 e4
+    call 016ach                               ; e8 92 e4
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 03211h                          ; 75 0f
+    jne short 0322fh                          ; 75 0f
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03216h                          ; eb 0d
-    jmp near 038afh                           ; e9 a3 06
-    jmp near 03847h                           ; e9 38 06
-    jmp short 03258h                          ; eb 47
+    jmp short 03234h                          ; eb 0d
+    jmp near 03903h                           ; e9 d9 06
+    jmp near 0389bh                           ; e9 6e 06
+    jmp short 03276h                          ; eb 47
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     test cl, cl                               ; 84 c9
-    jne short 03232h                          ; 75 18
+    jne short 03250h                          ; 75 18
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp short 031e7h                          ; eb bd
-    jmp near 035c3h                           ; e9 96 03
-    jmp short 03277h                          ; eb 48
-    jmp near 03a75h                           ; e9 43 08
+    jmp short 03205h                          ; eb bd
+    jmp near 035fah                           ; e9 af 03
+    jmp short 03295h                          ; eb 48
+    jmp near 03ac9h                           ; e9 79 08
     xor bx, bx                                ; 31 db
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 21 e4
+    call 0165eh                               ; e8 03 e4
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02e09h                               ; e8 c2 fb
+    call 02e09h                               ; e8 a4 fb
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     xor dx, dx                                ; 31 d2
-    call 02e22h                               ; e8 cd fb
-    jmp near 035bch                           ; e9 64 03
+    call 02e22h                               ; e8 af fb
+    jmp near 035f3h                           ; e9 7d 03
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov dx, 00441h                            ; ba 41 04
     xor ax, ax                                ; 31 c0
-    call 01650h                               ; e8 ec e3
+    call 01650h                               ; e8 ce e3
     mov dl, al                                ; 88 c2
     xor dh, dh                                ; 30 f6
     sal dx, 008h                              ; c1 e2 08
     or si, dx                                 ; 09 d6
     mov word [bp+016h], si                    ; 89 76 16
     test al, al                               ; 84 c0
-    je short 032cah                           ; 74 56
-    jmp near 03599h                           ; e9 22 03
+    je short 032e8h                           ; 74 56
+    jmp near 035d0h                           ; e9 3b 03
     mov ch, cl                                ; 88 cd
-    mov dl, byte [bp-010h]                    ; 8a 56 f0
+    mov dl, byte [bp-014h]                    ; 8a 56 ec
     mov byte [bp-008h], dl                    ; 88 56 f8
     mov byte [bp-00ch], ah                    ; 88 66 f4
     mov dx, word [bp+012h]                    ; 8b 56 12
@@ -4301,65 +4314,68 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov byte [bp-00ah], dl                    ; 88 56 f6
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 032a0h                         ; 77 0e
+    jnbe short 032beh                         ; 77 0e
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 032a0h                         ; 77 09
+    jnbe short 032beh                         ; 77 09
     test cl, cl                               ; 84 c9
-    je short 032a0h                           ; 74 05
+    je short 032beh                           ; 74 05
     cmp cl, 048h                              ; 80 f9 48
-    jbe short 032cdh                          ; 76 2d
+    jbe short 032ebh                          ; 76 2d
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 78 e6
+    call 01923h                               ; e8 5a e6
     push 00275h                               ; 68 75 02
     push 0028dh                               ; 68 8d 02
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 b0 e6
+    call 01966h                               ; e8 92 e6
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 0334eh                           ; e9 84 00
-    jmp near 035bch                           ; e9 ef 02
+    jmp near 03373h                           ; e9 8b 00
+    jmp near 035f3h                           ; e9 08 03
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 03132h                               ; e8 5d fe
+    call 03150h                               ; e8 5d fe
     test ax, ax                               ; 85 c0
-    je short 03307h                           ; 74 2e
-    mov dl, byte [bp-006h]                    ; 8a 56 fa
-    xor dh, dh                                ; 30 f6
-    mov ax, dx                                ; 89 d0
-    call 02f65h                               ; e8 82 fc
+    jne short 03307h                          ; 75 10
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 080h                               ; 80 cc 80
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov ax, 00080h                            ; b8 80 00
+    jmp short 03373h                          ; eb 6c
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02f83h                               ; e8 72 fc
     test ax, ax                               ; 85 c0
-    jne short 0330ah                          ; 75 23
-    mov ax, dx                                ; 89 d0
-    call 03039h                               ; e8 4d fd
+    jne short 0332fh                          ; 75 1a
+    mov ax, bx                                ; 89 d8
+    call 03057h                               ; e8 3d fd
     test ax, ax                               ; 85 c0
-    jne short 0330ah                          ; 75 1a
+    jne short 0332fh                          ; 75 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 02e09h                               ; e8 08 fb
-    mov byte [bp+016h], dh                    ; 88 76 16
-    jmp near 03599h                           ; e9 92 02
-    jmp near 033e9h                           ; e9 df 00
+    jmp near 0341fh                           ; e9 f0 00
     cmp byte [bp-00eh], 002h                  ; 80 7e f2 02
-    jne short 03358h                          ; 75 48
-    mov ax, word [bp+006h]                    ; 8b 46 06
-    shr ax, 00ch                              ; c1 e8 0c
-    mov cl, al                                ; 88 c1
+    jne short 0337dh                          ; 75 48
     mov dx, word [bp+006h]                    ; 8b 56 06
-    sal dx, 004h                              ; c1 e2 04
+    shr dx, 00ch                              ; c1 ea 0c
+    mov cl, dl                                ; 88 d1
+    mov ax, word [bp+006h]                    ; 8b 46 06
+    sal ax, 004h                              ; c1 e0 04
     mov bx, word [bp+010h]                    ; 8b 5e 10
-    add bx, dx                                ; 01 d3
+    add bx, ax                                ; 01 c3
     mov word [bp-012h], bx                    ; 89 5e ee
-    cmp dx, bx                                ; 39 da
-    jbe short 0332ch                          ; 76 02
+    cmp ax, bx                                ; 39 d8
+    jbe short 03351h                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     mov al, ch                                ; 88 e8
@@ -4370,16 +4386,16 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov ax, word [bp-012h]                    ; 8b 46 ee
     add ax, bx                                ; 01 d8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 0335bh                          ; 73 1b
+    jnc short 03380h                          ; 73 1b
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 009h                               ; 80 cc 09
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00009h                ; b8 09 00
-    call 02e09h                               ; e8 b8 fa
+    call 02e09h                               ; e8 93 fa
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 03599h                           ; e9 41 02
-    jmp near 0347fh                           ; e9 24 01
+    jmp near 035d0h                           ; e9 53 02
+    jmp near 034b5h                           ; e9 35 01
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
@@ -4410,9 +4426,10 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    mov al, byte [bp-006h]                    ; 8a 46 fa
-    xor ah, ah                                ; 30 e4
-    call 02ee2h                               ; e8 41 fb
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02f00h                               ; e8 38 fb
     mov AL, strict byte 0e6h                  ; b0 e6
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4420,7 +4437,7 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 002h                              ; c1 e2 02
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov al, bl                                ; 88 d8
     or ax, dx                                 ; 09 d0
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4444,52 +4461,58 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     out DX, AL                                ; ee
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02e73h                               ; e8 91 fa
+    call 02e73h                               ; e8 6b fa
     test al, al                               ; 84 c0
-    jne short 033fah                          ; 75 14
-    call 02ebah                               ; e8 d1 fa
+    jne short 03428h                          ; 75 1c
+    mov ax, bx                                ; 89 d8
+    call 02ebah                               ; e8 a9 fa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp near 0334eh                           ; e9 54 ff
+    call 02e09h                               ; e8 e7 f9
+    mov byte [bp+016h], bh                    ; 88 7e 16
+    jmp near 035d0h                           ; e9 a8 01
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03414h                           ; 74 0e
+    je short 03442h                           ; 74 0e
     push 00275h                               ; 68 75 02
     push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 55 e5
+    call 01966h                               ; e8 27 e5
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 0341dh                          ; eb 05
+    jmp short 0344bh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03436h                          ; 7d 19
+    jnl short 03464h                          ; 7d 19
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    mov byte [bp+si-01ah], al                 ; 88 42 e6
+    mov byte [bp+si-01ch], al                 ; 88 42 e4
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 2b e2
+    call 0165eh                               ; e8 fd e1
     inc si                                    ; 46
-    jmp short 03418h                          ; eb e2
-    test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je short 0344dh                           ; 74 11
+    jmp short 03446h                          ; eb e2
+    test byte [bp-01ch], 0c0h                 ; f6 46 e4 c0
+    je short 03483h                           ; 74 19
+    mov al, byte [bp-006h]                    ; 8a 46 fa
+    xor ah, ah                                ; 30 e4
+    call 02ebah                               ; e8 48 fa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 020h                               ; 80 cc 20
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00020h                ; b8 20 00
-    jmp near 0334eh                           ; e9 01 ff
+    jmp near 03373h                           ; e9 f0 fe
     mov al, ch                                ; 88 e8
     xor ah, ah                                ; 30 e4
     sal ax, 009h                              ; c1 e0 09
@@ -4510,12 +4533,12 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 02e22h                               ; e8 aa f9
+    call 02e22h                               ; e8 74 f9
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 0391dh                           ; e9 9e 04
+    jmp near 03971h                           ; e9 bc 04
     cmp byte [bp-00eh], 003h                  ; 80 7e f2 03
-    je short 03488h                           ; 74 03
-    jmp near 035a7h                           ; e9 1f 01
+    je short 034beh                           ; 74 03
+    jmp near 035deh                           ; e9 20 01
     mov dx, word [bp+006h]                    ; 8b 56 06
     shr dx, 00ch                              ; c1 ea 0c
     mov cl, dl                                ; 88 d1
@@ -4525,7 +4548,7 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     add bx, ax                                ; 01 c3
     mov word [bp-012h], bx                    ; 89 5e ee
     cmp ax, bx                                ; 39 d8
-    jbe short 034a4h                          ; 76 02
+    jbe short 034dah                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     mov al, ch                                ; 88 e8
@@ -4536,8 +4559,8 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov ax, word [bp-012h]                    ; 8b 46 ee
     add ax, bx                                ; 01 d8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 034bbh                          ; 73 03
-    jmp near 03340h                           ; e9 85 fe
+    jnc short 034f1h                          ; 73 03
+    jmp near 03365h                           ; e9 74 fe
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
@@ -4568,9 +4591,10 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    mov al, byte [bp-006h]                    ; 8a 46 fa
-    xor ah, ah                                ; 30 e4
-    call 02ee2h                               ; e8 e1 f9
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02f00h                               ; e8 c7 f9
     mov AL, strict byte 0c5h                  ; b0 c5
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4578,7 +4602,7 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     sal dx, 002h                              ; c1 e2 02
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov al, bl                                ; 88 d8
     or ax, dx                                 ; 09 d0
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4590,10 +4614,10 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
-    mov dl, byte [bp-00ch]                    ; 8a 56 f4
-    xor dh, dh                                ; 30 f6
-    mov al, ch                                ; 88 e8
+    mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
+    mov dl, ch                                ; 88 ea
+    xor dh, dh                                ; 30 f6
     add ax, dx                                ; 01 d0
     dec ax                                    ; 48
     mov dx, 003f5h                            ; ba f5 03
@@ -4602,53 +4626,53 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     out DX, AL                                ; ee
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02e73h                               ; e8 31 f9
+    call 02e73h                               ; e8 fa f8
     test al, al                               ; 84 c0
-    jne short 03549h                          ; 75 03
-    jmp near 033e6h                           ; e9 9d fe
+    jne short 03580h                          ; 75 03
+    jmp near 0340ch                           ; e9 8c fe
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03563h                           ; 74 0e
+    je short 0359ah                           ; 74 0e
     push 00275h                               ; 68 75 02
     push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 06 e4
+    call 01966h                               ; e8 cf e3
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 0356ch                          ; eb 05
+    jmp short 035a3h                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03585h                          ; 7d 19
+    jnl short 035bch                          ; 7d 19
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    mov byte [bp+si-01ah], al                 ; 88 42 e6
+    mov byte [bp+si-01ch], al                 ; 88 42 e4
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 dc e0
+    call 0165eh                               ; e8 a5 e0
     inc si                                    ; 46
-    jmp short 03567h                          ; eb e2
-    test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    jne short 0358eh                          ; 75 03
-    jmp near 0346bh                           ; e9 dd fe
-    test byte [bp-019h], 002h                 ; f6 46 e7 02
-    je short 035a0h                           ; 74 0c
+    jmp short 0359eh                          ; eb e2
+    test byte [bp-01ch], 0c0h                 ; f6 46 e4 c0
+    jne short 035c5h                          ; 75 03
+    jmp near 034a1h                           ; e9 dc fe
+    test byte [bp-01bh], 002h                 ; f6 46 e5 02
+    je short 035d7h                           ; 74 0c
     mov word [bp+016h], 00300h                ; c7 46 16 00 03
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 035bch                           ; e9 1c 00
+    jmp near 035f3h                           ; e9 1c 00
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
-    jmp short 03599h                          ; eb f2
+    jmp short 035d0h                          ; eb f2
     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 02e22h                               ; e8 6e f8
+    call 02e22h                               ; e8 37 f8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -4666,39 +4690,46 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov bl, byte [bp+00eh]                    ; 8a 5e 0e
     mov byte [bp-006h], bl                    ; 88 5e fa
     cmp bl, 001h                              ; 80 fb 01
-    jnbe short 035f5h                         ; 77 12
+    jnbe short 0362ch                         ; 77 12
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 035f5h                         ; 77 0d
+    jnbe short 0362ch                         ; 77 0d
     cmp AL, strict byte 04fh                  ; 3c 4f
-    jnbe short 035f5h                         ; 77 09
+    jnbe short 0362ch                         ; 77 09
     test ch, ch                               ; 84 ed
-    je short 035f5h                           ; 74 05
+    je short 0362ch                           ; 74 05
     cmp ch, 012h                              ; 80 fd 12
-    jbe short 0360ah                          ; 76 15
+    jbe short 03641h                          ; 76 15
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02e09h                               ; e8 03 f8
+    call 02e09h                               ; e8 cc f7
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 03132h                               ; e8 20 fb
+    call 03150h                               ; e8 07 fb
     test ax, ax                               ; 85 c0
-    jne short 03619h                          ; 75 03
-    jmp near 0321ah                           ; e9 01 fc
+    jne short 03650h                          ; 75 03
+    jmp near 03238h                           ; e9 e8 fb
     mov dl, byte [bp-006h]                    ; 8a 56 fa
     xor dh, dh                                ; 30 f6
     mov ax, dx                                ; 89 d0
-    call 02f65h                               ; e8 42 f9
+    call 02f83h                               ; e8 29 f9
     test ax, ax                               ; 85 c0
-    jne short 03633h                          ; 75 0c
+    jne short 0367eh                          ; 75 20
     mov ax, dx                                ; 89 d0
-    call 03039h                               ; e8 0d fa
+    call 03057h                               ; e8 f4 f9
     test ax, ax                               ; 85 c0
-    jne short 03633h                          ; 75 03
-    jmp near 032f0h                           ; e9 bd fc
+    jne short 0367eh                          ; 75 17
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 00ch                               ; 80 cc 0c
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov ax, strict word 0000ch                ; b8 0c 00
+    call 02e09h                               ; e8 91 f7
+    mov byte [bp+016h], dh                    ; 88 76 16
+    jmp near 035d0h                           ; e9 52 ff
     mov dx, word [bp+006h]                    ; 8b 56 06
     shr dx, 00ch                              ; c1 ea 0c
     mov cl, dl                                ; 88 d1
@@ -4708,7 +4739,7 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     add bx, ax                                ; 01 c3
     mov word [bp-012h], bx                    ; 89 5e ee
     cmp ax, bx                                ; 39 d8
-    jbe short 0364fh                          ; 76 02
+    jbe short 0369ah                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     mov al, ch                                ; 88 e8
@@ -4719,8 +4750,8 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov ax, word [bp-012h]                    ; 8b 46 ee
     add ax, bx                                ; 01 d8
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 03666h                          ; 73 03
-    jmp near 03340h                           ; e9 da fc
+    jnc short 036b1h                          ; 73 03
+    jmp near 03365h                           ; e9 b4 fc
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
@@ -4751,25 +4782,27 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    mov al, byte [bp-006h]                    ; 8a 46 fa
-    xor ah, ah                                ; 30 e4
-    call 02ee2h                               ; e8 36 f8
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02f00h                               ; e8 07 f8
     mov AL, strict byte 00fh                  ; b0 0f
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
-    sal ax, 002h                              ; c1 e0 02
-    mov bl, byte [bp-006h]                    ; 8a 5e fa
-    xor bh, bh                                ; 30 ff
-    or bx, ax                                 ; 09 c3
-    mov al, bl                                ; 88 d8
+    mov dx, ax                                ; 89 c2
+    sal dx, 002h                              ; c1 e2 02
+    or dx, bx                                 ; 09 da
+    mov word [bp-010h], dx                    ; 89 56 f0
+    mov al, byte [bp-010h]                    ; 8a 46 f0
+    mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, byte [bp-008h]                    ; 8a 46 f8
     out DX, AL                                ; ee
     mov AL, strict byte 04dh                  ; b0 4d
     out DX, AL                                ; ee
-    mov al, bl                                ; 88 d8
+    mov al, byte [bp-010h]                    ; 8a 46 f0
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
@@ -4779,61 +4812,62 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     out DX, AL                                ; ee
     mov AL, strict byte 0f6h                  ; b0 f6
     out DX, AL                                ; ee
-    call 02e73h                               ; e8 96 f7
+    call 02e73h                               ; e8 44 f7
     test al, al                               ; 84 c0
-    jne short 036e7h                          ; 75 06
-    call 02ebah                               ; e8 d6 f7
-    jmp near 0321ah                           ; e9 33 fb
+    jne short 0373bh                          ; 75 08
+    mov ax, bx                                ; 89 d8
+    call 02ebah                               ; e8 82 f7
+    jmp near 03238h                           ; e9 fd fa
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03701h                           ; 74 0e
+    je short 03755h                           ; 74 0e
     push 00275h                               ; 68 75 02
     push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 68 e2
+    call 01966h                               ; e8 14 e2
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 0370ah                          ; eb 05
+    jmp short 0375eh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03723h                          ; 7d 19
+    jnl short 03777h                          ; 7d 19
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    mov byte [bp+si-01ah], al                 ; 88 42 e6
+    mov byte [bp+si-01ch], al                 ; 88 42 e4
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 3e df
+    call 0165eh                               ; e8 ea de
     inc si                                    ; 46
-    jmp short 03705h                          ; eb e2
-    test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je short 03740h                           ; 74 17
-    test byte [bp-019h], 002h                 ; f6 46 e7 02
-    je short 03732h                           ; 74 03
-    jmp near 03594h                           ; e9 62 fe
+    jmp short 03759h                          ; eb e2
+    test byte [bp-01ch], 0c0h                 ; f6 46 e4 c0
+    je short 03794h                           ; 74 17
+    test byte [bp-01bh], 002h                 ; f6 46 e5 02
+    je short 03786h                           ; 74 03
+    jmp near 035cbh                           ; e9 45 fe
     push 00275h                               ; 68 75 02
     push 002bch                               ; 68 bc 02
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 29 e2
+    call 01966h                               ; e8 d5 e1
     add sp, strict byte 00006h                ; 83 c4 06
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02e09h                               ; e8 bf f6
+    call 02e09h                               ; e8 6b f6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     xor dx, dx                                ; 31 d2
-    call 02e22h                               ; e8 ce f6
-    jmp near 0391dh                           ; e9 c6 01
+    call 02e22h                               ; e8 7a f6
+    jmp near 03971h                           ; e9 c6 01
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 0377ch                          ; 76 1e
+    jbe short 037d0h                          ; 76 1e
     xor ax, ax                                ; 31 c0
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+010h], ax                    ; 89 46 10
@@ -4844,22 +4878,22 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     mov al, ch                                ; 88 e8
     xor ah, ah                                ; 30 e4
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 03898h                           ; e9 1c 01
+    jmp near 038ech                           ; e9 1c 01
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 2a df
+    call 016ach                               ; e8 d6 de
     mov cl, al                                ; 88 c1
     xor ch, ch                                ; 30 ed
     test AL, strict byte 0f0h                 ; a8 f0
-    je short 0378ch                           ; 74 02
+    je short 037e0h                           ; 74 02
     mov CH, strict byte 001h                  ; b5 01
     test cl, 00fh                             ; f6 c1 0f
-    je short 03793h                           ; 74 02
+    je short 037e7h                           ; 74 02
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 0379eh                          ; 75 05
+    jne short 037f2h                          ; 75 05
     shr cl, 004h                              ; c0 e9 04
-    jmp short 037a1h                          ; eb 03
+    jmp short 037f5h                          ; eb 03
     and cl, 00fh                              ; 80 e1 0f
     mov byte [bp+011h], 000h                  ; c6 46 11 00
     mov al, cl                                ; 88 c8
@@ -4875,135 +4909,135 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     or ah, 001h                               ; 80 cc 01
     mov word [bp+012h], ax                    ; 89 46 12
     cmp cl, 003h                              ; 80 f9 03
-    jc short 037ddh                           ; 72 15
-    jbe short 03804h                          ; 76 3a
+    jc short 03831h                           ; 72 15
+    jbe short 03858h                          ; 76 3a
     cmp cl, 005h                              ; 80 f9 05
-    jc short 0380bh                           ; 72 3c
-    jbe short 03812h                          ; 76 41
+    jc short 0385fh                           ; 72 3c
+    jbe short 03866h                          ; 76 41
     cmp cl, 00fh                              ; 80 f9 0f
-    je short 03820h                           ; 74 4a
+    je short 03874h                           ; 74 4a
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 03819h                           ; 74 3e
-    jmp short 03827h                          ; eb 4a
+    je short 0386dh                           ; 74 3e
+    jmp short 0387bh                          ; eb 4a
     cmp cl, 002h                              ; 80 f9 02
-    je short 037fdh                           ; 74 1b
+    je short 03851h                           ; 74 1b
     cmp cl, 001h                              ; 80 f9 01
-    je short 037f6h                           ; 74 0f
+    je short 0384ah                           ; 74 0f
     test cl, cl                               ; 84 c9
-    jne short 03827h                          ; 75 3c
+    jne short 0387bh                          ; 75 3c
     mov word [bp+014h], strict word 00000h    ; c7 46 14 00 00
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 03835h                          ; eb 3f
+    jmp short 03889h                          ; eb 3f
     mov word [bp+014h], 02709h                ; c7 46 14 09 27
-    jmp short 03835h                          ; eb 38
+    jmp short 03889h                          ; eb 38
     mov word [bp+014h], 04f0fh                ; c7 46 14 0f 4f
-    jmp short 03835h                          ; eb 31
+    jmp short 03889h                          ; eb 31
     mov word [bp+014h], 04f09h                ; c7 46 14 09 4f
-    jmp short 03835h                          ; eb 2a
+    jmp short 03889h                          ; eb 2a
     mov word [bp+014h], 04f12h                ; c7 46 14 12 4f
-    jmp short 03835h                          ; eb 23
+    jmp short 03889h                          ; eb 23
     mov word [bp+014h], 04f24h                ; c7 46 14 24 4f
-    jmp short 03835h                          ; eb 1c
+    jmp short 03889h                          ; eb 1c
     mov word [bp+014h], 0fe3fh                ; c7 46 14 3f fe
-    jmp short 03835h                          ; eb 15
+    jmp short 03889h                          ; eb 15
     mov word [bp+014h], 0feffh                ; c7 46 14 ff fe
-    jmp short 03835h                          ; eb 0e
+    jmp short 03889h                          ; eb 0e
     push 00275h                               ; 68 75 02
     push 002cdh                               ; 68 cd 02
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 34 e1
+    call 01966h                               ; e8 e0 e0
     add sp, strict byte 00006h                ; 83 c4 06
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 03a98h                               ; e8 57 02
+    call 03aech                               ; e8 57 02
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 0391dh                           ; e9 d6 00
+    jmp near 03971h                           ; e9 d6 00
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03853h                          ; 76 05
+    jbe short 038a7h                          ; 76 05
     mov word [bp+016h], si                    ; 89 76 16
-    jmp short 03898h                          ; eb 45
+    jmp short 038ech                          ; eb 45
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 53 de
+    call 016ach                               ; e8 ff dd
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 03866h                          ; 75 07
+    jne short 038bah                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 0386bh                          ; eb 05
+    jmp short 038bfh                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     test cl, cl                               ; 84 c9
-    je short 03885h                           ; 74 0d
+    je short 038d9h                           ; 74 0d
     cmp cl, 001h                              ; 80 f9 01
-    jbe short 03882h                          ; 76 05
+    jbe short 038d6h                          ; 76 05
     or ah, 002h                               ; 80 cc 02
-    jmp short 03885h                          ; eb 03
+    jmp short 038d9h                          ; eb 03
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 035bch                           ; e9 31 fd
+    jmp near 035f3h                           ; e9 14 fd
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 0389eh                          ; 76 0f
+    jbe short 038f2h                          ; 76 0f
     mov word [bp+016h], si                    ; 89 76 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02e09h                               ; e8 71 f5
+    call 02e09h                               ; e8 1d f5
     mov word [bp+01ch], dx                    ; 89 56 1c
-    jmp near 035bch                           ; e9 1e fd
+    jmp near 035f3h                           ; e9 01 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 006h                               ; 80 cc 06
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 031e7h                           ; e9 38 f9
+    jmp near 03205h                           ; e9 02 f9
     mov byte [bp-006h], al                    ; 88 46 fa
     mov bl, cl                                ; 88 cb
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 0388fh                         ; 77 d7
+    jnbe short 038e3h                         ; 77 d7
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 03132h                               ; e8 72 f8
+    call 03150h                               ; e8 3c f8
     test ax, ax                               ; 85 c0
-    jne short 038c7h                          ; 75 03
-    jmp near 0321ah                           ; e9 53 f9
+    jne short 0391bh                          ; 75 03
+    jmp near 03238h                           ; e9 1d f9
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 038d2h                           ; 74 05
+    je short 03926h                           ; 74 05
     mov dx, 00091h                            ; ba 91 00
-    jmp short 038d5h                          ; eb 03
+    jmp short 03929h                          ; eb 03
     mov dx, 00090h                            ; ba 90 00
     mov word [bp-012h], dx                    ; 89 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 72 dd
+    call 01650h                               ; e8 1e dd
     and AL, strict byte 00fh                  ; 24 0f
     cmp bl, 002h                              ; 80 fb 02
-    jc short 038f4h                           ; 72 0f
-    jbe short 03900h                          ; 76 19
+    jc short 03948h                           ; 72 0f
+    jbe short 03954h                          ; 76 19
     cmp bl, 004h                              ; 80 fb 04
-    je short 038fch                           ; 74 10
+    je short 03950h                           ; 74 10
     cmp bl, 003h                              ; 80 fb 03
-    je short 03904h                           ; 74 13
-    jmp near 031d9h                           ; e9 e5 f8
+    je short 03958h                           ; 74 13
+    jmp near 031f7h                           ; e9 af f8
     cmp bl, 001h                              ; 80 fb 01
-    je short 038fch                           ; 74 03
-    jmp near 031d9h                           ; e9 dd f8
+    je short 03950h                           ; 74 03
+    jmp near 031f7h                           ; e9 a7 f8
     or AL, strict byte 090h                   ; 0c 90
-    jmp short 03906h                          ; eb 06
+    jmp short 0395ah                          ; eb 06
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 03906h                          ; eb 02
+    jmp short 0395ah                          ; eb 02
     or AL, strict byte 010h                   ; 0c 10
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, word [bp-012h]                    ; 8b 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 4b dd
+    call 0165eh                               ; e8 f7 dc
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02e09h                               ; e8 ec f4
+    call 02e09h                               ; e8 98 f4
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp near 035bch                           ; e9 98 fc
+    jmp near 035f3h                           ; e9 7b fc
     mov byte [bp-006h], al                    ; 88 46 fa
     mov ch, ah                                ; 88 e5
     and ch, 03fh                              ; 80 e5 3f
@@ -5011,252 +5045,252 @@ _int13_diskette_function:                    ; 0xf315a LB 0x93e
     xor bh, bh                                ; 30 ff
     sar bx, 006h                              ; c1 fb 06
     sal bx, 008h                              ; c1 e3 08
-    add bx, word [bp-010h]                    ; 03 5e f0
+    add bx, word [bp-014h]                    ; 03 5e ec
     mov byte [bp-008h], bl                    ; 88 5e f8
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03943h                          ; 76 03
-    jmp near 0388fh                           ; e9 4c ff
+    jbe short 03997h                          ; 76 03
+    jmp near 038e3h                           ; e9 4c ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 03132h                               ; e8 e7 f7
+    call 03150h                               ; e8 b1 f7
     test ax, ax                               ; 85 c0
-    jne short 03952h                          ; 75 03
-    jmp near 0321ah                           ; e9 c8 f8
-    mov dl, byte [bp-006h]                    ; 8a 56 fa
-    xor dh, dh                                ; 30 f6
-    mov ax, dx                                ; 89 d0
-    call 02f65h                               ; e8 09 f6
+    jne short 039a6h                          ; 75 03
+    jmp near 03238h                           ; e9 92 f8
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02f83h                               ; e8 d3 f5
     test ax, ax                               ; 85 c0
-    jne short 0397ah                          ; 75 1a
-    mov ax, dx                                ; 89 d0
-    call 03039h                               ; e8 d4 f6
+    jne short 039ceh                          ; 75 1a
+    mov ax, bx                                ; 89 d8
+    call 03057h                               ; e8 9e f6
     test ax, ax                               ; 85 c0
-    jne short 0397ah                          ; 75 11
+    jne short 039ceh                          ; 75 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 031e7h                           ; e9 6d f8
+    jmp near 03205h                           ; e9 37 f8
     mov ax, strict word 00010h                ; b8 10 00
-    call 016ach                               ; e8 2c dd
+    call 016ach                               ; e8 d8 dc
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 0398dh                          ; 75 07
+    jne short 039e1h                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03992h                          ; eb 05
+    jmp short 039e6h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 0399dh                           ; 74 05
+    je short 039f1h                           ; 74 05
     mov dx, 00091h                            ; ba 91 00
-    jmp short 039a0h                          ; eb 03
+    jmp short 039f4h                          ; eb 03
     mov dx, 00090h                            ; ba 90 00
     mov word [bp-012h], dx                    ; 89 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 a7 dc
+    call 01650h                               ; e8 53 dc
     and AL, strict byte 00fh                  ; 24 0f
     cmp cl, 003h                              ; 80 f9 03
-    jc short 039cch                           ; 72 1c
+    jc short 03a20h                           ; 72 1c
     mov ah, al                                ; 88 c4
     or ah, 090h                               ; 80 cc 90
     cmp cl, 003h                              ; 80 f9 03
-    jbe short 03a03h                          ; 76 49
+    jbe short 03a57h                          ; 76 49
     mov dl, al                                ; 88 c2
     or dl, 010h                               ; 80 ca 10
     cmp cl, 005h                              ; 80 f9 05
-    je short 03a10h                           ; 74 4c
+    je short 03a64h                           ; 74 4c
     cmp cl, 004h                              ; 80 f9 04
-    je short 03a16h                           ; 74 4d
-    jmp near 03a47h                           ; e9 7b 00
+    je short 03a6ah                           ; 74 4d
+    jmp near 03a9bh                           ; e9 7b 00
     cmp cl, 002h                              ; 80 f9 02
-    je short 039e5h                           ; 74 14
+    je short 03a39h                           ; 74 14
     cmp cl, 001h                              ; 80 f9 01
-    jne short 03a14h                          ; 75 3e
+    jne short 03a68h                          ; 75 3e
     cmp byte [bp-008h], 027h                  ; 80 7e f8 27
-    jne short 03a14h                          ; 75 38
+    jne short 03a68h                          ; 75 38
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03a2ah                          ; 75 49
+    jne short 03a7eh                          ; 75 49
     or AL, strict byte 090h                   ; 0c 90
-    jmp short 03a2ah                          ; eb 45
+    jmp short 03a7eh                          ; eb 45
     cmp byte [bp-008h], 027h                  ; 80 7e f8 27
-    jne short 039f4h                          ; 75 09
+    jne short 03a48h                          ; 75 09
     cmp ch, 009h                              ; 80 fd 09
-    jne short 039f4h                          ; 75 04
+    jne short 03a48h                          ; 75 04
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 03a2ah                          ; eb 36
+    jmp short 03a7eh                          ; eb 36
     cmp byte [bp-008h], 04fh                  ; 80 7e f8 4f
-    jne short 03a47h                          ; 75 4d
+    jne short 03a9bh                          ; 75 4d
     cmp ch, 00fh                              ; 80 fd 0f
-    jne short 03a47h                          ; 75 48
+    jne short 03a9bh                          ; 75 48
     or AL, strict byte 010h                   ; 0c 10
-    jmp short 03a47h                          ; eb 44
+    jmp short 03a9bh                          ; eb 44
     cmp byte [bp-008h], 04fh                  ; 80 7e f8 4f
-    jne short 03a47h                          ; 75 3e
+    jne short 03a9bh                          ; 75 3e
     cmp ch, 009h                              ; 80 fd 09
-    je short 03a12h                           ; 74 04
-    jmp short 03a47h                          ; eb 37
-    jmp short 03a2ch                          ; eb 1a
+    je short 03a66h                           ; 74 04
+    jmp short 03a9bh                          ; eb 37
+    jmp short 03a80h                          ; eb 1a
     mov al, ah                                ; 88 e0
-    jmp short 03a47h                          ; eb 31
+    jmp short 03a9bh                          ; eb 31
     cmp byte [bp-008h], 04fh                  ; 80 7e f8 4f
-    jne short 03a47h                          ; 75 2b
+    jne short 03a9bh                          ; 75 2b
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03a23h                          ; 75 02
-    jmp short 03a12h                          ; eb ef
+    jne short 03a77h                          ; 75 02
+    jmp short 03a66h                          ; eb ef
     cmp ch, 012h                              ; 80 fd 12
-    jne short 03a47h                          ; 75 1f
+    jne short 03a9bh                          ; 75 1f
     mov al, dl                                ; 88 d0
-    jmp short 03a47h                          ; eb 1b
+    jmp short 03a9bh                          ; eb 1b
     cmp byte [bp-008h], 04fh                  ; 80 7e f8 4f
-    jne short 03a47h                          ; 75 15
+    jne short 03a9bh                          ; 75 15
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03a39h                          ; 75 02
-    jmp short 03a12h                          ; eb d9
+    jne short 03a8dh                          ; 75 02
+    jmp short 03a66h                          ; eb d9
     cmp ch, 012h                              ; 80 fd 12
-    jne short 03a40h                          ; 75 02
-    jmp short 03a28h                          ; eb e8
+    jne short 03a94h                          ; 75 02
+    jmp short 03a7ch                          ; eb e8
     cmp ch, 024h                              ; 80 fd 24
-    jne short 03a47h                          ; 75 02
+    jne short 03a9bh                          ; 75 02
     or AL, strict byte 0d0h                   ; 0c d0
     mov dl, al                                ; 88 c2
     xor dh, dh                                ; 30 f6
     sar dx, 004h                              ; c1 fa 04
     test dl, 001h                             ; f6 c2 01
-    jne short 03a56h                          ; 75 03
-    jmp near 03969h                           ; e9 13 ff
+    jne short 03aaah                          ; 75 03
+    jmp near 039bdh                           ; e9 13 ff
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, word [bp-012h]                    ; 8b 56 ee
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 fb db
+    call 0165eh                               ; e8 a7 db
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 03a98h                               ; e8 29 00
+    call 03aech                               ; e8 29 00
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 03913h                           ; e9 9e fe
+    jmp near 03967h                           ; e9 9e fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 a3 de
+    call 01923h                               ; e8 4f de
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 00275h                               ; 68 75 02
     push 002e2h                               ; 68 e2 02
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 d4 de
+    call 01966h                               ; e8 80 de
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 031d9h                           ; e9 41 f7
-get_floppy_dpt_:                             ; 0xf3a98 LB 0x30
+    jmp near 031f7h                           ; e9 0b f7
+get_floppy_dpt_:                             ; 0xf3aec LB 0x30
     push bx                                   ; 53
     push dx                                   ; 52
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dl, al                                ; 88 c2
     xor ax, ax                                ; 31 c0
-    jmp short 03aa9h                          ; eb 06
+    jmp short 03afdh                          ; eb 06
     inc ax                                    ; 40
     cmp ax, strict word 00007h                ; 3d 07 00
-    jnc short 03ac1h                          ; 73 18
+    jnc short 03b15h                          ; 73 18
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     cmp dl, byte [word bx+0005bh]             ; 3a 97 5b 00
-    jne short 03aa3h                          ; 75 f0
+    jne short 03af7h                          ; 75 f0
     mov al, byte [word bx+0005ch]             ; 8a 87 5c 00
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0000dh           ; 6b c0 0d
     add ax, strict word 00000h                ; 05 00 00
-    jmp short 03ac4h                          ; eb 03
+    jmp short 03b18h                          ; eb 03
     mov ax, strict word 00041h                ; b8 41 00
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     retn                                      ; c3
-dummy_soft_reset_:                           ; 0xf3ac8 LB 0x7
+dummy_soft_reset_:                           ; 0xf3b1c LB 0x7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_init:                                 ; 0xf3acf LB 0x18
+_cdemu_init:                                 ; 0xf3b23 LB 0x18
     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 91 db
+    call 0166ch                               ; e8 3d db
     xor bx, bx                                ; 31 db
     mov dx, 00366h                            ; ba 66 03
-    call 0165eh                               ; e8 7b db
+    call 0165eh                               ; e8 27 db
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_isactive:                             ; 0xf3ae7 LB 0x16
+_cdemu_isactive:                             ; 0xf3b3b LB 0x16
     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 79 db
+    call 0166ch                               ; e8 25 db
     mov dx, 00366h                            ; ba 66 03
-    call 01650h                               ; e8 57 db
+    call 01650h                               ; e8 03 db
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_emulated_drive:                       ; 0xf3afd LB 0x16
+_cdemu_emulated_drive:                       ; 0xf3b51 LB 0x16
     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 63 db
+    call 0166ch                               ; e8 0f db
     mov dx, 00368h                            ; ba 68 03
-    call 01650h                               ; e8 41 db
+    call 01650h                               ; e8 ed da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_eltorito:                             ; 0xf3b13 LB 0x190
+_int13_eltorito:                             ; 0xf3b67 LB 0x190
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 4b db
+    call 0166ch                               ; e8 f7 da
     mov si, 00366h                            ; be 66 03
     mov di, ax                                ; 89 c7
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 0004bh                ; 3d 4b 00
-    jc short 03b3bh                           ; 72 0a
-    jbe short 03b62h                          ; 76 2f
+    jc short 03b8fh                           ; 72 0a
+    jbe short 03bb6h                          ; 76 2f
     cmp ax, strict word 0004dh                ; 3d 4d 00
-    jbe short 03b40h                          ; 76 08
-    jmp near 03c67h                           ; e9 2c 01
+    jbe short 03b94h                          ; 76 08
+    jmp near 03cbbh                           ; e9 2c 01
     cmp ax, strict word 0004ah                ; 3d 4a 00
-    jne short 03b5fh                          ; 75 1f
+    jne short 03bb3h                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 d8 dd
+    call 01923h                               ; e8 84 dd
     push word [bp+016h]                       ; ff 76 16
     push 002fch                               ; 68 fc 02
     push 0030bh                               ; 68 0b 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 0d de
+    call 01966h                               ; e8 b9 dd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 03c82h                           ; e9 23 01
-    jmp near 03c67h                           ; e9 05 01
+    jmp near 03cd6h                           ; e9 23 01
+    jmp near 03cbbh                           ; e9 05 01
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
     mov bx, strict word 00013h                ; bb 13 00
-    call 0165eh                               ; e8 f0 da
+    call 0165eh                               ; e8 9c da
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+001h]                 ; 26 8a 5c 01
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 de da
+    call 0165eh                               ; e8 8a da
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+002h]                 ; 26 8a 5c 02
     xor bh, bh                                ; 30 ff
@@ -5264,75 +5298,75 @@ _int13_eltorito:                             ; 0xf3b13 LB 0x190
     inc dx                                    ; 42
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 cb da
+    call 0165eh                               ; e8 77 da
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+003h]                 ; 26 8a 5c 03
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00003h                ; 83 c2 03
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 b7 da
+    call 0165eh                               ; e8 63 da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+008h]                 ; 26 8b 5c 08
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00004h                ; 83 c2 04
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0169ah                               ; e8 dd da
+    call 0169ah                               ; e8 89 da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+004h]                 ; 26 8b 5c 04
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 ab da
+    call 0167ah                               ; e8 57 da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+006h]                 ; 26 8b 5c 06
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 99 da
+    call 0167ah                               ; e8 45 da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 87 da
+    call 0167ah                               ; e8 33 da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ah                               ; e8 75 da
+    call 0167ah                               ; e8 21 da
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+012h]                 ; 26 8a 5c 12
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00010h                ; 83 c2 10
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 45 da
+    call 0165eh                               ; e8 f1 d9
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+014h]                 ; 26 8a 5c 14
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00011h                ; 83 c2 11
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 31 da
+    call 0165eh                               ; e8 dd d9
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+010h]                 ; 26 8a 5c 10
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00012h                ; 83 c2 12
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0165eh                               ; e8 1d da
+    call 0165eh                               ; e8 c9 d9
     test byte [bp+016h], 0ffh                 ; f6 46 16 ff
-    jne short 03c4dh                          ; 75 06
+    jne short 03ca1h                          ; 75 06
     mov es, di                                ; 8e c7
     mov byte [es:si], 000h                    ; 26 c6 04 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 02 da
+    call 0165eh                               ; e8 ae d9
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -5342,13 +5376,13 @@ _int13_eltorito:                             ; 0xf3b13 LB 0x190
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 b1 dc
+    call 01923h                               ; e8 5d dc
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 002fch                               ; 68 fc 02
     push 00333h                               ; 68 33 03
-    jmp near 03b54h                           ; e9 d2 fe
+    jmp near 03ba8h                           ; e9 d2 fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -5358,10 +5392,10 @@ _int13_eltorito:                             ; 0xf3b13 LB 0x190
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 c1 d9
+    call 0165eh                               ; e8 6d d9
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 03c60h                          ; eb bd
-device_is_cdrom_:                            ; 0xf3ca3 LB 0x35
+    jmp short 03cb4h                          ; eb bd
+device_is_cdrom_:                            ; 0xf3cf7 LB 0x35
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5369,24 +5403,24 @@ device_is_cdrom_:                            ; 0xf3ca3 LB 0x35
     mov bl, al                                ; 88 c3
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b9 d9
+    call 0166ch                               ; e8 65 d9
     cmp bl, 010h                              ; 80 fb 10
-    jc short 03cbch                           ; 72 04
+    jc short 03d10h                           ; 72 04
     xor ax, ax                                ; 31 c0
-    jmp short 03cd1h                          ; eb 15
+    jmp short 03d25h                          ; eb 15
     xor bh, bh                                ; 30 ff
     imul bx, bx, strict byte 0001ch           ; 6b db 1c
     mov es, ax                                ; 8e c0
     add bx, 00122h                            ; 81 c3 22 01
     cmp byte [es:bx+023h], 005h               ; 26 80 7f 23 05
-    jne short 03cb8h                          ; 75 ea
+    jne short 03d0ch                          ; 75 ea
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
+cdrom_boot_:                                 ; 0xf3d2c LB 0x434
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5397,31 +5431,31 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     sub sp, 0081ch                            ; 81 ec 1c 08
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 7f d9
+    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 byte [bp-00ch], 000h                  ; c6 46 f4 00
-    jmp short 03d0dh                          ; eb 09
+    jmp short 03d61h                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jnc short 03d19h                          ; 73 0c
+    jnc short 03d6dh                          ; 73 0c
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
-    call 03ca3h                               ; e8 8e ff
+    call 03cf7h                               ; e8 8e ff
     test ax, ax                               ; 85 c0
-    je short 03d04h                           ; 74 eb
+    je short 03d58h                           ; 74 eb
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jc short 03d25h                           ; 72 06
+    jc short 03d79h                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 040a9h                           ; e9 84 03
+    jmp near 040fdh                           ; e9 84 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-026h]                         ; 8d 46 da
-    call 09fa0h                               ; e8 6e 62
+    call 09ff0h                               ; e8 6a 62
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
     mov ax, strict word 00011h                ; b8 11 00
     xor dx, dx                                ; 31 d2
@@ -5438,10 +5472,10 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     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
-    jmp short 03d70h                          ; eb 09
+    jmp short 03dc4h                          ; eb 09
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 004h                  ; 80 7e f2 04
-    jnbe short 03dach                         ; 77 3c
+    jnbe short 03e00h                         ; 77 3c
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -5465,35 +5499,35 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     mov dx, strict word 0000ch                ; ba 0c 00
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    jne short 03d67h                          ; 75 bb
+    jne short 03dbbh                          ; 75 bb
     test ax, ax                               ; 85 c0
-    je short 03db6h                           ; 74 06
+    je short 03e0ah                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 040a9h                           ; e9 f3 02
+    jmp near 040fdh                           ; e9 f3 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
-    je short 03dc3h                           ; 74 06
+    je short 03e17h                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 040a9h                           ; e9 e6 02
+    jmp near 040fdh                           ; e9 e6 02
     xor di, di                                ; 31 ff
-    jmp short 03dcdh                          ; eb 06
+    jmp short 03e21h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00005h                ; 83 ff 05
-    jnc short 03dddh                          ; 73 10
+    jnc short 03e31h                          ; 73 10
     mov al, byte [bp+di-00825h]               ; 8a 83 db f7
     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
-    je short 03dc7h                           ; 74 f0
+    je short 03e1bh                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 040a9h                           ; e9 cc 02
+    jmp near 040fdh                           ; e9 cc 02
     xor di, di                                ; 31 ff
-    jmp short 03de7h                          ; eb 06
+    jmp short 03e3bh                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00017h                ; 83 ff 17
-    jnc short 03df7h                          ; 73 10
+    jnc short 03e4bh                          ; 73 10
     mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
-    je short 03de1h                           ; 74 f0
+    je short 03e35h                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 040a9h                           ; e9 b2 02
+    jmp near 040fdh                           ; e9 b2 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
@@ -5528,38 +5562,38 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     mov dx, strict word 0000ch                ; ba 0c 00
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    je short 03e59h                           ; 74 06
+    je short 03eadh                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 040a9h                           ; e9 50 02
+    jmp near 040fdh                           ; e9 50 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
-    je short 03e66h                           ; 74 06
+    je short 03ebah                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 040a9h                           ; e9 43 02
+    jmp near 040fdh                           ; e9 43 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
-    je short 03e73h                           ; 74 06
+    je short 03ec7h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 040a9h                           ; e9 36 02
+    jmp near 040fdh                           ; e9 36 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
-    je short 03e80h                           ; 74 06
+    je short 03ed4h                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 040a9h                           ; e9 29 02
+    jmp near 040fdh                           ; e9 29 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
-    jne short 03e7ah                          ; 75 f3
+    jne short 03eceh                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
-    je short 03e94h                           ; 74 06
+    je short 03ee8h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 040a9h                           ; e9 15 02
+    jmp near 040fdh                           ; e9 15 02
     mov al, byte [bp-00805h]                  ; 8a 86 fb f7
     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 03eadh                          ; 75 07
+    jne short 03f01h                          ; 75 07
     mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
-    jmp short 03ec0h                          ; eb 13
+    jmp short 03f14h                          ; eb 13
     cmp byte [bp-00805h], 004h                ; 80 be fb f7 04
-    jnc short 03ebbh                          ; 73 07
+    jnc short 03f0fh                          ; 73 07
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
-    jmp short 03ec0h                          ; eb 05
+    jmp short 03f14h                          ; eb 05
     mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
     mov bl, byte [bp-00ch]                    ; 8a 5e f4
     xor bh, bh                                ; 30 ff
@@ -5578,7 +5612,7 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     mov ax, word [bp-00804h]                  ; 8b 86 fc f7
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    jne short 03eefh                          ; 75 05
+    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
@@ -5587,11 +5621,11 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     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 03f11h                           ; 74 06
+    je short 03f65h                           ; 74 06
     cmp di, 00400h                            ; 81 ff 00 04
-    jbe short 03f17h                          ; 76 06
+    jbe short 03f6bh                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 040a9h                           ; e9 92 01
+    jmp near 040fdh                           ; e9 92 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
@@ -5635,7 +5669,7 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     mov cx, strict word 00009h                ; b9 09 00
     sal ax, 1                                 ; d1 e0
     rcl di, 1                                 ; d1 d7
-    loop 03f8bh                               ; e2 fa
+    loop 03fdfh                               ; e2 fa
     push di                                   ; 57
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
@@ -5650,46 +5684,46 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     mov bx, word [bp-018h]                    ; 8b 5e e8
     mov word [es:bx+020h], strict word 00000h ; 26 c7 47 20 00 00
     test ax, ax                               ; 85 c0
-    je short 03fbfh                           ; 74 06
+    je short 04013h                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 040a9h                           ; e9 ea 00
+    jmp near 040fdh                           ; e9 ea 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 03fd7h                           ; 72 0d
-    jbe short 03ff2h                          ; 76 26
+    jc short 0402bh                           ; 72 0d
+    jbe short 04046h                          ; 76 26
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 04002h                           ; 74 32
+    je short 04056h                           ; 74 32
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 03ffah                           ; 74 26
-    jmp near 0404eh                           ; e9 77 00
+    je short 0404eh                           ; 74 26
+    jmp near 040a2h                           ; e9 77 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 0404eh                          ; 75 73
+    jne short 040a2h                          ; 75 73
     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 0404eh                          ; eb 5c
+    jmp short 040a2h                          ; eb 5c
     mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00
-    jmp short 03fe4h                          ; eb ea
+    jmp short 04038h                          ; eb ea
     mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00
-    jmp short 03fe4h                          ; eb e2
+    jmp short 04038h                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01650h                               ; e8 45 d6
+    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 word [es:si+014h], ax                 ; 26 89 44 14
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01650h                               ; e8 31 d6
+    call 01650h                               ; e8 dd d5
     xor ah, ah                                ; 30 e4
     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 21 d6
+    call 01650h                               ; e8 cd d5
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
     inc ax                                    ; 40
@@ -5697,38 +5731,38 @@ cdrom_boot_:                                 ; 0xf3cd8 LB 0x434
     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 0c d6
+    call 01650h                               ; e8 b8 d5
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
     mov es, [bp-016h]                         ; 8e 46 ea
     mov word [es:si+010h], ax                 ; 26 89 44 10
     mov es, [bp-016h]                         ; 8e 46 ea
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 0408fh                           ; 74 37
+    je short 040e3h                           ; 74 37
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 04077h                          ; 75 18
+    jne short 040cbh                          ; 75 18
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 e8 d5
+    call 01650h                               ; e8 94 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 0408ch                          ; eb 15
+    jmp short 040e0h                          ; eb 15
     mov dx, 00304h                            ; ba 04 03
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 01650h                               ; e8 d0 d5
+    call 01650h                               ; e8 7c 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 cf d5
+    call 0165eh                               ; e8 7b d5
     mov es, [bp-016h]                         ; 8e 46 ea
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 0409dh                           ; 74 04
+    je short 040f1h                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
     mov es, [bp-016h]                         ; 8e 46 ea
     mov al, byte [es:si+002h]                 ; 26 8a 44 02
@@ -5743,12 +5777,12 @@ cdrom_boot_:                                 ; 0xf3cd8 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, 0b2h, 044h, 0b1h
-    db  041h, 0e4h, 041h, 00eh, 042h, 0d9h, 041h, 00eh, 042h, 0d9h, 041h, 000h, 044h, 0e6h, 043h, 0b2h
-    db  044h, 0b2h, 044h, 0e6h, 043h, 0e6h, 043h, 0e6h, 043h, 0e6h, 043h, 0e6h, 043h, 0a9h, 044h, 0e6h
-    db  043h, 0b2h, 044h, 0b2h, 044h, 0b2h, 044h, 0b2h, 044h, 0b2h, 044h, 0b2h, 044h, 0b2h, 044h, 0b2h
-    db  044h, 0b2h, 044h, 0b2h, 044h, 0b2h, 044h, 0b2h, 044h
-_int13_cdemu:                                ; 0xf410c LB 0x442
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -5756,7 +5790,7 @@ _int13_cdemu:                                ; 0xf410c 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 4f d5
+    call 0166ch                               ; e8 fb d4
     mov di, 00366h                            ; bf 66 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
@@ -5772,20 +5806,20 @@ _int13_cdemu:                                ; 0xf410c 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 12 d5
+    call 0165eh                               ; e8 be d4
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 04163h                           ; 74 0f
+    je short 041b7h                           ; 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 0418ch                           ; 74 29
+    je short 041e0h                           ; 74 29
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 b5 d7
+    call 01923h                               ; e8 61 d7
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -5795,21 +5829,21 @@ _int13_cdemu:                                ; 0xf410c LB 0x442
     push 0034ch                               ; 68 4c 03
     push 00358h                               ; 68 58 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 e0 d7
+    call 01966h                               ; e8 8c d7
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 044d2h                           ; e9 46 03
+    jmp near 04526h                           ; 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 0420bh                         ; 77 74
+    jnbe short 0425fh                         ; 77 74
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 040b3h                            ; bf b3 40
+    mov di, 04107h                            ; bf 07 41
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+040d0h]               ; 2e 8b 85 d0 40
+    mov ax, word [cs:di+04124h]               ; 2e 8b 85 24 41
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
@@ -5822,18 +5856,18 @@ _int13_cdemu:                                ; 0xf410c 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 041d6h                           ; 74 09
+    je short 0422ah                           ; 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 043e6h                           ; e9 0d 02
+    jmp near 0443ah                           ; e9 0d 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 044dah                           ; e9 f6 02
+    jmp near 0452eh                           ; e9 f6 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 63 d4
+    call 01650h                               ; e8 0f d4
     mov cl, al                                ; 88 c1
     xor ah, ah                                ; 30 e4
     sal ax, 008h                              ; c1 e0 08
@@ -5842,11 +5876,11 @@ _int13_cdemu:                                ; 0xf410c 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 5a d4
+    call 0165eh                               ; e8 06 d4
     test cl, cl                               ; 84 c9
-    je short 04268h                           ; 74 60
-    jmp near 044eeh                           ; e9 e3 02
-    jmp near 044b2h                           ; e9 a4 02
+    je short 042bch                           ; 74 60
+    jmp near 04542h                           ; e9 e3 02
+    jmp near 04506h                           ; 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
@@ -5870,20 +5904,20 @@ _int13_cdemu:                                ; 0xf410c LB 0x442
     xor ch, ch                                ; 30 ed
     mov word [bp-00ah], cx                    ; 89 4e f6
     test cx, cx                               ; 85 c9
-    je short 04276h                           ; 74 1e
+    je short 042cah                           ; 74 1e
     cmp di, word [bp-010h]                    ; 3b 7e f0
-    jc short 04265h                           ; 72 08
+    jc short 042b9h                           ; 72 08
     cmp ax, dx                                ; 39 d0
-    jnc short 04265h                          ; 73 04
+    jnc short 042b9h                          ; 73 04
     cmp si, bx                                ; 39 de
-    jc short 0426bh                           ; 72 06
-    jmp near 044d2h                           ; e9 6a 02
-    jmp near 043eah                           ; e9 7f 01
+    jc short 042bfh                           ; 72 06
+    jmp near 04526h                           ; e9 6a 02
+    jmp near 0443eh                           ; 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 04279h                          ; 75 03
-    jmp near 043e6h                           ; e9 6d 01
+    jne short 042cdh                          ; 75 03
+    jmp near 0443ah                           ; 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
@@ -5894,13 +5928,13 @@ _int13_cdemu:                                ; 0xf410c LB 0x442
     mov word [bp-01eh], dx                    ; 89 56 e2
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 09f30h                               ; e8 99 5c
+    call 09f80h                               ; e8 95 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 09f30h                               ; e8 8c 5c
+    call 09f80h                               ; e8 88 5c
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-010h]                    ; 8b 46 f0
     dec ax                                    ; 48
@@ -5935,7 +5969,7 @@ _int13_cdemu:                                ; 0xf410c LB 0x442
     mov cx, strict word 0000ch                ; b9 0c 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 09fa0h                               ; e8 a5 5c
+    call 09ff0h                               ; e8 a1 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
@@ -5985,7 +6019,7 @@ _int13_cdemu:                                ; 0xf410c LB 0x442
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 0437dh                               ; e2 fa
+    loop 043d1h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
     push ax                                   ; 50
@@ -6001,11 +6035,11 @@ _int13_cdemu:                                ; 0xf410c 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 043e6h                           ; 74 37
+    je short 0443ah                           ; 74 37
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 69 d5
+    call 01923h                               ; e8 15 d5
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6015,19 +6049,19 @@ _int13_cdemu:                                ; 0xf410c LB 0x442
     push 0034ch                               ; 68 4c 03
     push 0038eh                               ; 68 8e 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 95 d5
+    call 01966h                               ; e8 41 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 044ddh                           ; e9 f7 00
+    jmp near 04531h                           ; 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 69 d2
+    call 0165eh                               ; e8 15 d2
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6075,41 +6109,41 @@ _int13_cdemu:                                ; 0xf410c 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 0448ch                           ; 74 1a
+    je short 044e0h                           ; 74 1a
     cmp dl, 002h                              ; 80 fa 02
-    je short 04488h                           ; 74 11
+    je short 044dch                           ; 74 11
     cmp dl, 001h                              ; 80 fa 01
-    jne short 04490h                          ; 75 14
+    jne short 044e4h                          ; 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 04490h                          ; eb 08
+    jmp short 044e4h                          ; eb 08
     or AL, strict byte 004h                   ; 0c 04
-    jmp short 04483h                          ; eb f7
+    jmp short 044d7h                          ; eb f7
     or AL, strict byte 005h                   ; 0c 05
-    jmp short 04483h                          ; eb f3
+    jmp short 044d7h                          ; eb f3
     mov es, [bp-008h]                         ; 8e 46 f8
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jc short 0449dh                           ; 72 03
-    jmp near 043e6h                           ; e9 49 ff
+    jc short 044f1h                           ; 72 03
+    jmp near 0443ah                           ; 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 0449ah                          ; eb f1
+    jmp short 044eeh                          ; eb f1
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 043eah                           ; e9 38 ff
+    jmp near 0443eh                           ; 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 66 d4
+    call 01923h                               ; e8 12 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 97 d4
+    call 01966h                               ; e8 43 d4
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -6120,16 +6154,16 @@ _int13_cdemu:                                ; 0xf410c 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 70 d1
+    call 0165eh                               ; e8 1c d1
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 043f9h                           ; e9 04 ff
+    jmp near 0444dh                           ; 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, 03ch, 046h, 071h
-    db  04ah, 0f9h, 045h, 03ch, 046h, 0eeh, 045h, 03ch, 046h, 0eeh, 045h, 03ch, 046h, 071h, 04ah, 03ch
-    db  046h, 03ch, 046h, 071h, 04ah, 071h, 04ah, 071h, 04ah, 071h, 04ah, 071h, 04ah, 020h, 046h, 071h
-    db  04ah, 03ch, 046h, 029h, 046h, 058h, 046h, 0eeh, 045h, 058h, 046h, 09ah, 047h, 035h, 048h, 058h
-    db  046h, 05dh, 048h, 08bh, 04ah, 093h, 04ah, 03ch, 046h
-_int13_cdrom:                                ; 0xf454e LB 0x57d
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6137,20 +6171,20 @@ _int13_cdrom:                                ; 0xf454e 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 0d d1
+    call 0166ch                               ; e8 b9 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 eb d0
+    call 0165eh                               ; e8 97 d0
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 04582h                           ; 72 05
+    jc short 045d6h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 045a0h                           ; 72 1e
+    jc short 045f4h                           ; 72 1e
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6160,9 +6194,9 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     push 003dfh                               ; 68 df 03
     push 003ebh                               ; 68 eb 03
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 cc d3
+    call 01966h                               ; e8 78 d3
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04aa9h                           ; e9 09 05
+    jmp near 04afdh                           ; e9 09 05
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     mov es, [bp-01eh]                         ; 8e 46 e2
@@ -6171,36 +6205,36 @@ _int13_cdrom:                                ; 0xf454e 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 045c9h                           ; 72 10
+    jc short 0461dh                           ; 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 04595h                          ; eb cc
+    jmp short 045e9h                          ; 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 0463ch                         ; 77 68
+    jnbe short 04690h                         ; 77 68
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 044f5h                            ; bf f5 44
+    mov di, 04549h                            ; bf 49 45
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04512h]               ; 2e 8b 85 12 45
+    mov ax, word [cs:di+04566h]               ; 2e 8b 85 66 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 04ab1h                           ; e9 b8 04
+    jmp near 04b05h                           ; e9 b8 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 4e d0
+    call 01650h                               ; e8 fa cf
     mov cl, al                                ; 88 c1
     xor ah, ah                                ; 30 e4
     sal ax, 008h                              ; c1 e0 08
@@ -6209,29 +6243,29 @@ _int13_cdrom:                                ; 0xf454e 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 45 d0
+    call 0165eh                               ; e8 f1 cf
     test cl, cl                               ; 84 c9
-    je short 04639h                           ; 74 1c
-    jmp near 04ac5h                           ; e9 a5 04
+    je short 0468dh                           ; 74 1c
+    jmp near 04b19h                           ; e9 a5 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 04ab4h                           ; e9 8b 04
+    jmp near 04b08h                           ; 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 04a75h                           ; e9 39 04
+    jmp near 04ac9h                           ; 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 dc d2
+    call 01923h                               ; e8 88 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 04698h                          ; eb 40
+    jmp short 046ech                          ; 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
@@ -6246,16 +6280,16 @@ _int13_cdrom:                                ; 0xf454e 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 046a1h                           ; 74 18
+    je short 046f5h                           ; 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 cb d2
+    call 01966h                               ; e8 77 d2
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 04aa9h                           ; e9 08 04
+    jmp near 04afdh                           ; 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
@@ -6266,15 +6300,15 @@ _int13_cdrom:                                ; 0xf454e 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 046c8h                           ; 74 05
+    je short 0471ch                           ; 74 05
     cmp ax, strict word 00047h                ; 3d 47 00
-    jne short 046cbh                          ; 75 03
-    jmp near 04a71h                           ; e9 a6 03
+    jne short 0471fh                          ; 75 03
+    jmp near 04ac5h                           ; 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 09fa0h                               ; e8 c8 58
+    call 09ff0h                               ; e8 c4 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
@@ -6306,7 +6340,7 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     mov cx, strict word 0000bh                ; b9 0b 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 04728h                               ; e2 fa
+    loop 0477ch                               ; e2 fa
     push dx                                   ; 52
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
@@ -6324,16 +6358,16 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     mov cx, strict word 0000bh                ; b9 0b 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 04757h                               ; e2 fa
+    loop 047abh                               ; 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 047c0h                           ; 74 53
+    je short 04814h                           ; 74 53
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 ab d1
+    call 01923h                               ; e8 57 d1
     mov al, byte [bp-018h]                    ; 8a 46 e8
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6341,14 +6375,14 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     push 003dfh                               ; 68 df 03
     push 00471h                               ; 68 71 04
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 da d1
+    call 01966h                               ; e8 86 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 04ab1h                           ; e9 17 03
+    jmp near 04b05h                           ; e9 17 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe short 04808h                         ; 77 69
+    jnbe short 0485ch                         ; 77 69
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -6357,21 +6391,21 @@ _int13_cdrom:                                ; 0xf454e 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 0481eh                           ; 74 67
+    je short 04872h                           ; 74 67
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 047f8h                           ; 74 3c
+    je short 0484ch                           ; 74 3c
     test bx, bx                               ; 85 db
-    je short 047c3h                           ; 74 03
-    jmp near 04a71h                           ; e9 ae 02
+    je short 04817h                           ; 74 03
+    jmp near 04ac5h                           ; e9 ae 02
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 047d9h                          ; 75 12
+    jne short 0482dh                          ; 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 04ab1h                           ; e9 d8 02
+    jmp near 04b05h                           ; 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
@@ -6384,14 +6418,14 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp short 047c0h                          ; eb c8
+    jmp short 04814h                          ; eb c8
     test al, al                               ; 84 c0
-    jne short 0480bh                          ; 75 0f
+    jne short 0485fh                          ; 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 04ab4h                           ; e9 ac 02
-    jmp near 04aa9h                           ; e9 9e 02
+    jmp near 04b08h                           ; e9 ac 02
+    jmp near 04afdh                           ; 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
@@ -6401,15 +6435,15 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     add si, dx                                ; 01 d6
     mov byte [es:si+025h], al                 ; 26 88 44 25
     test al, al                               ; 84 c0
-    jne short 04830h                          ; 75 0e
+    jne short 04884h                          ; 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 047c0h                          ; eb 90
+    jmp short 04814h                          ; eb 90
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 04824h                          ; eb ef
+    jmp short 04878h                          ; eb ef
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -6417,14 +6451,14 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     add si, ax                                ; 01 c6
     mov al, byte [es:si+025h]                 ; 26 8a 44 25
     test al, al                               ; 84 c0
-    je short 04850h                           ; 74 06
+    je short 048a4h                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 04623h                           ; e9 d3 fd
-    je short 04879h                           ; 74 27
+    jmp near 04677h                           ; e9 d3 fd
+    je short 048cdh                           ; 74 27
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 04ab1h                           ; e9 54 02
+    jmp near 04b05h                           ; e9 54 02
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
     mov bx, dx                                ; 89 d3
@@ -6434,10 +6468,10 @@ _int13_cdrom:                                ; 0xf454e 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 0487ch                          ; 73 05
-    jmp short 04808h                          ; eb 8f
-    jmp near 04a71h                           ; e9 f5 01
-    jc short 048e0h                           ; 72 62
+    jnc short 048d0h                          ; 73 05
+    jmp short 0485ch                          ; eb 8f
+    jmp near 04ac5h                           ; e9 f5 01
+    jc short 04934h                           ; 72 62
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -6461,8 +6495,8 @@ _int13_cdrom:                                ; 0xf454e 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 048e9h                          ; 73 03
-    jmp near 049a5h                           ; e9 bc 00
+    jnc short 0493dh                          ; 73 03
+    jmp near 049f9h                           ; 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
@@ -6505,25 +6539,25 @@ _int13_cdrom:                                ; 0xf454e 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 04985h                          ; eb 05
+    jmp short 049d9h                          ; eb 05
     cmp ch, 00fh                              ; 80 fd 0f
-    jnc short 0499bh                          ; 73 16
+    jnc short 049efh                          ; 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 bb cc
+    call 01650h                               ; e8 67 cc
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 04980h                          ; eb e5
+    jmp short 049d4h                          ; 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 049aeh                          ; 73 03
-    jmp near 04a71h                           ; e9 c3 00
+    jnc short 04a02h                          ; 73 03
+    jmp near 04ac5h                           ; e9 c3 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -6542,7 +6576,7 @@ _int13_cdrom:                                ; 0xf454e 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 049f6h                          ; 75 0c
+    jne short 04a4ah                          ; 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
@@ -6551,7 +6585,7 @@ _int13_cdrom:                                ; 0xf454e 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 04a2bh                          ; 75 16
+    jne short 04a7fh                          ; 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
@@ -6566,9 +6600,9 @@ _int13_cdrom:                                ; 0xf454e 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 04a56h                          ; eb 05
+    jmp short 04aaah                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04a68h                          ; 73 12
+    jnc short 04abch                          ; 73 12
     mov dl, ah                                ; 88 e2
     xor dh, dh                                ; 30 f6
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6577,7 +6611,7 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     add al, byte [es:si]                      ; 26 02 04
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 04a51h                          ; eb e9
+    jmp short 04aa5h                          ; eb e9
     neg al                                    ; f6 d8
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:bx+041h], al                 ; 26 88 47 41
@@ -6585,7 +6619,7 @@ _int13_cdrom:                                ; 0xf454e 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 de cb
+    call 0165eh                               ; e8 8a cb
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6594,16 +6628,16 @@ _int13_cdrom:                                ; 0xf454e LB 0x57d
     retn                                      ; c3
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 04ac5h                          ; eb 32
+    jmp short 04b19h                          ; eb 32
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je short 04a71h                           ; 74 d9
+    je short 04ac5h                           ; 74 d9
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 04aa9h                           ; 72 0c
-    jbe short 04a71h                          ; 76 d2
+    jc short 04afdh                           ; 72 0c
+    jbe short 04ac5h                          ; 76 d2
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 04aa9h                           ; 72 05
+    jc short 04afdh                           ; 72 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 04a71h                          ; 76 c8
+    jbe short 04ac5h                          ; 76 c8
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -6613,44 +6647,44 @@ _int13_cdrom:                                ; 0xf454e 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 99 cb
+    call 0165eh                               ; e8 45 cb
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp short 04a84h                          ; eb b9
-print_boot_device_:                          ; 0xf4acb LB 0x4b
+    jmp short 04ad8h                          ; eb b9
+print_boot_device_:                          ; 0xf4b1f LB 0x4b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 04ad8h                           ; 74 05
+    je short 04b2ch                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 04af2h                          ; eb 1a
+    jmp short 04b46h                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 04ae1h                           ; 74 05
+    je short 04b35h                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 04af2h                          ; eb 11
+    jmp short 04b46h                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04aeah                          ; 75 04
+    jne short 04b3eh                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 04af2h                          ; eb 08
+    jmp short 04b46h                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 04b10h                           ; 74 21
+    je short 04b64h                           ; 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 26 ce
+    call 01923h                               ; e8 d2 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 59 ce
+    call 01966h                               ; e8 05 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_:                         ; 0xf4b16 LB 0x96
+print_boot_failure_:                         ; 0xf4b6a LB 0x96
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6661,59 +6695,59 @@ print_boot_failure_:                         ; 0xf4b16 LB 0x96
     xor ch, ch                                ; 30 ed
     mov si, cx                                ; 89 ce
     test al, al                               ; 84 c0
-    je short 04b46h                           ; 74 1b
+    je short 04b9ah                           ; 74 1b
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 ed cd
+    call 01923h                               ; e8 99 cd
     push 00ddah                               ; 68 da 0d
     push 004a8h                               ; 68 a8 04
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 25 ce
+    call 01966h                               ; e8 d1 cd
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 04b8ah                          ; eb 44
+    jmp short 04bdeh                          ; eb 44
     test ah, ah                               ; 84 e4
-    je short 04b5ah                           ; 74 10
+    je short 04baeh                           ; 74 10
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 ce cd
+    call 01923h                               ; e8 7a cd
     push 00de4h                               ; 68 e4 0d
-    jmp short 04b39h                          ; eb df
+    jmp short 04b8dh                          ; eb df
     test bl, 080h                             ; f6 c3 80
-    je short 04b70h                           ; 74 11
+    je short 04bc4h                           ; 74 11
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 b9 cd
+    call 01923h                               ; e8 65 cd
     push si                                   ; 56
     push 00dd0h                               ; 68 d0 0d
-    jmp short 04b7fh                          ; eb 0f
+    jmp short 04bd3h                          ; eb 0f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 a8 cd
+    call 01923h                               ; e8 54 cd
     push si                                   ; 56
     push 00dc6h                               ; 68 c6 0d
     push 004bdh                               ; 68 bd 04
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 df cd
+    call 01966h                               ; e8 8b cd
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04ba4h                          ; 75 14
+    jne short 04bf8h                          ; 75 14
     test dl, dl                               ; 84 d2
-    jne short 04b99h                          ; 75 05
+    jne short 04bedh                          ; 75 05
     push 004d5h                               ; 68 d5 04
-    jmp short 04b9ch                          ; eb 03
+    jmp short 04bf0h                          ; eb 03
     push 004ffh                               ; 68 ff 04
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 c5 cd
+    call 01966h                               ; e8 71 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_:                    ; 0xf4bac LB 0x27
+print_cdromboot_failure_:                    ; 0xf4c00 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -6723,11 +6757,11 @@ print_cdromboot_failure_:                    ; 0xf4bac LB 0x27
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 64 cd
+    call 01923h                               ; e8 10 cd
     push dx                                   ; 52
     push 00534h                               ; 68 34 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 9e cd
+    call 01966h                               ; e8 4a cd
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -6735,7 +6769,7 @@ print_cdromboot_failure_:                    ; 0xf4bac LB 0x27
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf4bd3 LB 0x271
+_int19_function:                             ; 0xf4c27 LB 0x271
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6743,56 +6777,56 @@ _int19_function:                             ; 0xf4bd3 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 88 ca
+    call 0166ch                               ; e8 34 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 b9 ca
+    call 016ach                               ; e8 65 ca
     mov dl, al                                ; 88 c2
     xor dh, dh                                ; 30 f6
     mov ax, strict word 00038h                ; b8 38 00
-    call 016ach                               ; e8 af ca
+    call 016ach                               ; e8 5b 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 9e ca
+    call 016ach                               ; e8 4a 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 31 ca
+    call 01650h                               ; e8 dd c9
     test al, al                               ; 84 c0
-    je short 04c2fh                           ; 74 0c
+    je short 04c83h                           ; 74 0c
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01650h                               ; e8 25 ca
+    call 01650h                               ; e8 d1 c9
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04c45h                          ; 75 10
+    jne short 04c99h                          ; 75 10
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016ach                               ; e8 71 ca
+    call 016ach                               ; e8 1d ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
-    call 07d11h                               ; e8 cc 30
+    call 07d65h                               ; e8 cc 30
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04c4eh                          ; 75 03
+    jne short 04ca2h                          ; 75 03
     shr si, 004h                              ; c1 ee 04
     cmp byte [bp+004h], 003h                  ; 80 7e 04 03
-    jne short 04c57h                          ; 75 03
+    jne short 04cabh                          ; 75 03
     shr si, 008h                              ; c1 ee 08
     cmp byte [bp+004h], 004h                  ; 80 7e 04 04
-    jne short 04c60h                          ; 75 03
+    jne short 04cb4h                          ; 75 03
     shr si, 00ch                              ; c1 ee 0c
     cmp si, strict byte 00010h                ; 83 fe 10
-    jnc short 04c69h                          ; 73 04
+    jnc short 04cbdh                          ; 73 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -6801,48 +6835,48 @@ _int19_function:                             ; 0xf4bd3 LB 0x271
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 a4 cc
+    call 01923h                               ; e8 50 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 d8 cc
+    call 01966h                               ; e8 84 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 04ca7h                           ; 72 0e
-    jbe short 04cb6h                          ; 76 1b
+    jc short 04cfbh                           ; 72 0e
+    jbe short 04d0ah                          ; 76 1b
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 04cd4h                           ; 74 34
+    je short 04d28h                           ; 74 34
     cmp si, strict byte 00003h                ; 83 fe 03
-    je short 04ccah                           ; 74 25
-    jmp short 04d03h                          ; eb 5c
+    je short 04d1eh                           ; 74 25
+    jmp short 04d57h                          ; eb 5c
     cmp si, strict byte 00001h                ; 83 fe 01
-    jne short 04d03h                          ; 75 57
+    jne short 04d57h                          ; 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 04d1bh                          ; eb 65
+    jmp short 04d6fh                          ; eb 65
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 01650h                               ; e8 91 c9
+    call 01650h                               ; e8 3d 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 04d1bh                          ; eb 51
+    jmp short 04d6fh                          ; eb 51
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
-    jmp short 04cdeh                          ; eb 0a
+    jmp short 04d32h                          ; eb 0a
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04d1bh                           ; 74 3d
-    call 03cd8h                               ; e8 f7 ef
+    je short 04d6fh                           ; 74 3d
+    call 03d2ch                               ; e8 f7 ef
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 04d0ah                           ; 74 23
-    call 04bach                               ; e8 c2 fe
+    je short 04d5eh                           ; 74 23
+    call 04c00h                               ; e8 c2 fe
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6852,65 +6886,65 @@ _int19_function:                             ; 0xf4bd3 LB 0x271
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov cx, strict word 00001h                ; b9 01 00
-    call 04b16h                               ; e8 13 fe
+    call 04b6ah                               ; e8 13 fe
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 04e3dh                           ; e9 33 01
+    jmp near 04e91h                           ; e9 33 01
     mov dx, 00372h                            ; ba 72 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 0166ch                               ; e8 59 c9
+    call 0166ch                               ; e8 05 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 04d76h                          ; 75 55
+    jne short 04dcah                          ; 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 04ceah                          ; 75 bb
+    jne short 04d3eh                          ; 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 04ceah                          ; 75 ad
+    jne short 04d3eh                          ; 75 ad
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04ceah                          ; 75 a6
+    jne short 04d3eh                          ; 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 04d78h                          ; 75 24
+    jne short 04dcch                          ; 75 24
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04d78h                          ; 75 1e
+    jne short 04dcch                          ; 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 04acbh                               ; e8 5f fd
+    call 04b1fh                               ; 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 04d97h                          ; eb 21
-    jmp short 04d9dh                          ; eb 25
+    jmp short 04debh                          ; eb 21
+    jmp short 04df1h                          ; 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 04acbh                               ; e8 41 fd
+    call 04b1fh                               ; 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 04ceah                           ; e9 4d ff
+    jmp near 04d3eh                           ; e9 4d ff
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 04dcah                          ; 75 27
+    jne short 04e1eh                          ; 75 27
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04dcah                          ; 75 21
+    jne short 04e1eh                          ; 75 21
     mov di, 007c0h                            ; bf c0 07
     mov es, di                                ; 8e c7
     mov dl, byte [bp-006h]                    ; 8a 56 fa
@@ -6923,32 +6957,32 @@ _int19_function:                             ; 0xf4bd3 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 04dcah                           ; 74 03
-    jmp near 04ceah                           ; e9 20 ff
+    je short 04e1eh                           ; 74 03
+    jmp near 04d3eh                           ; e9 20 ff
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 04dd4h                           ; 74 04
+    je short 04e28h                           ; 74 04
     xor bl, bl                                ; 30 db
-    jmp short 04dd6h                          ; eb 02
+    jmp short 04e2ah                          ; eb 02
     mov BL, strict byte 001h                  ; b3 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04ddeh                           ; 74 02
+    je short 04e32h                           ; 74 02
     mov BL, strict byte 001h                  ; b3 01
     xor dx, dx                                ; 31 d2
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 87 c8
+    call 0166ch                               ; e8 33 c8
     mov si, ax                                ; 89 c6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 7d c8
+    call 0166ch                               ; e8 29 c8
     cmp si, ax                                ; 39 c6
-    je short 04e04h                           ; 74 11
+    je short 04e58h                           ; 74 11
     test bl, bl                               ; 84 db
-    jne short 04e1ch                          ; 75 25
+    jne short 04e70h                          ; 75 25
     mov dx, 001feh                            ; ba fe 01
     mov ax, di                                ; 89 f8
-    call 0166ch                               ; e8 6d c8
+    call 0166ch                               ; e8 19 c8
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04e1ch                           ; 74 18
+    je short 04e70h                           ; 74 18
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6958,14 +6992,14 @@ _int19_function:                             ; 0xf4bd3 LB 0x271
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor cx, cx                                ; 31 c9
-    jmp near 04d00h                           ; e9 e4 fe
+    jmp near 04d54h                           ; 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 04acbh                               ; e8 9d fc
+    call 04b1fh                               ; e8 9d fc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
@@ -6978,18 +7012,18 @@ _int19_function:                             ; 0xf4bd3 LB 0x271
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4e44 LB 0x13
+keyboard_panic_:                             ; 0xf4e98 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 16 cb
+    call 01966h                               ; e8 c2 ca
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4e57 LB 0x26a
+_keyboard_init:                              ; 0xf4eab LB 0x26a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov AL, strict byte 0aah                  ; b0 aa
@@ -7001,44 +7035,44 @@ _keyboard_init:                              ; 0xf4e57 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04e7ah                           ; 74 0d
+    je short 04eceh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04e7ah                          ; 76 08
+    jbe short 04eceh                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04e63h                          ; eb e9
+    jmp short 04eb7h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04e83h                          ; 75 05
+    jne short 04ed7h                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04e44h                               ; e8 c1 ff
+    call 04e98h                               ; 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 04e9dh                          ; 75 0d
+    jne short 04ef1h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04e9dh                          ; 76 08
+    jbe short 04ef1h                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04e86h                          ; eb e9
+    jmp short 04edah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ea7h                          ; 75 06
+    jne short 04efbh                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04e44h                               ; e8 9d ff
+    call 04e98h                               ; 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 04eb8h                           ; 74 06
+    je short 04f0ch                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04e44h                               ; e8 8c ff
+    call 04e98h                               ; e8 8c ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7048,44 +7082,44 @@ _keyboard_init:                              ; 0xf4e57 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04ed8h                           ; 74 0d
+    je short 04f2ch                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ed8h                          ; 76 08
+    jbe short 04f2ch                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ec1h                          ; eb e9
+    jmp short 04f15h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ee2h                          ; 75 06
+    jne short 04f36h                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04e44h                               ; e8 62 ff
+    call 04e98h                               ; 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 04efch                          ; 75 0d
+    jne short 04f50h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04efch                          ; 76 08
+    jbe short 04f50h                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ee5h                          ; eb e9
+    jmp short 04f39h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f06h                          ; 75 06
+    jne short 04f5ah                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04e44h                               ; e8 3e ff
+    call 04e98h                               ; 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 04f16h                           ; 74 06
+    je short 04f6ah                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04e44h                               ; e8 2e ff
+    call 04e98h                               ; e8 2e ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7095,67 +7129,67 @@ _keyboard_init:                              ; 0xf4e57 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04f36h                           ; 74 0d
+    je short 04f8ah                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f36h                          ; 76 08
+    jbe short 04f8ah                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f1fh                          ; eb e9
+    jmp short 04f73h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f40h                          ; 75 06
+    jne short 04f94h                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04e44h                               ; e8 04 ff
+    call 04e98h                               ; 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 04f5ah                          ; 75 0d
+    jne short 04faeh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f5ah                          ; 76 08
+    jbe short 04faeh                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f43h                          ; eb e9
+    jmp short 04f97h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f64h                          ; 75 06
+    jne short 04fb8h                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04e44h                               ; e8 e0 fe
+    call 04e98h                               ; 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 04f75h                           ; 74 06
+    je short 04fc9h                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04e44h                               ; e8 cf fe
+    call 04e98h                               ; 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 04f87h                          ; 75 08
+    jne short 04fdbh                          ; 75 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f75h                          ; eb ee
+    jmp short 04fc9h                          ; 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 04fa0h                           ; 74 0e
+    je short 04ff4h                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04fa0h                           ; 74 06
+    je short 04ff4h                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04e44h                               ; e8 a4 fe
+    call 04e98h                               ; e8 a4 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7165,44 +7199,44 @@ _keyboard_init:                              ; 0xf4e57 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04fc0h                           ; 74 0d
+    je short 05014h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04fc0h                          ; 76 08
+    jbe short 05014h                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fa9h                          ; eb e9
+    jmp short 04ffdh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04fcah                          ; 75 06
+    jne short 0501eh                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04e44h                               ; e8 7a fe
+    call 04e98h                               ; 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 04fe4h                          ; 75 0d
+    jne short 05038h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04fe4h                          ; 76 08
+    jbe short 05038h                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fcdh                          ; eb e9
+    jmp short 05021h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04feeh                          ; 75 06
+    jne short 05042h                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04e44h                               ; e8 56 fe
+    call 04e98h                               ; 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 04fffh                           ; 74 06
+    je short 05053h                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04e44h                               ; e8 45 fe
+    call 04e98h                               ; e8 45 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7212,18 +7246,18 @@ _keyboard_init:                              ; 0xf4e57 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0501fh                           ; 74 0d
+    je short 05073h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0501fh                          ; 76 08
+    jbe short 05073h                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05008h                          ; eb e9
+    jmp short 0505ch                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05029h                          ; 75 06
+    jne short 0507dh                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04e44h                               ; e8 1b fe
+    call 04e98h                               ; e8 1b fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7233,18 +7267,18 @@ _keyboard_init:                              ; 0xf4e57 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05049h                           ; 74 0d
+    je short 0509dh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05049h                          ; 76 08
+    jbe short 0509dh                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05032h                          ; eb e9
+    jmp short 05086h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05053h                          ; 75 06
+    jne short 050a7h                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04e44h                               ; e8 f1 fd
+    call 04e98h                               ; e8 f1 fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7254,53 +7288,53 @@ _keyboard_init:                              ; 0xf4e57 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05073h                           ; 74 0d
+    je short 050c7h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05073h                          ; 76 08
+    jbe short 050c7h                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0505ch                          ; eb e9
+    jmp short 050b0h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0507dh                          ; 75 06
+    jne short 050d1h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04e44h                               ; e8 c7 fd
+    call 04e98h                               ; 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 05097h                          ; 75 0d
+    jne short 050ebh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05097h                          ; 76 08
+    jbe short 050ebh                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05080h                          ; eb e9
+    jmp short 050d4h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050a1h                          ; 75 06
+    jne short 050f5h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04e44h                               ; e8 a3 fd
+    call 04e98h                               ; 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 050b2h                           ; 74 06
+    je short 05106h                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04e44h                               ; e8 92 fd
+    call 04e98h                               ; 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 0655bh                               ; e8 9e 14
+    call 065afh                               ; e8 9e 14
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf50c1 LB 0x9e
+enqueue_key_:                                ; 0xf5115 LB 0x9e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -7312,35 +7346,35 @@ enqueue_key_:                                ; 0xf50c1 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 95 c5
+    call 0166ch                               ; e8 41 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 8a c5
+    call 0166ch                               ; e8 36 c5
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 050efh                           ; 72 03
+    jc short 05143h                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 050f7h                          ; 75 04
+    jne short 0514bh                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 05121h                          ; eb 2a
+    jmp short 05175h                          ; 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 59 c5
+    call 0165eh                               ; e8 05 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 4b c5
+    call 0165eh                               ; e8 f7 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 5c c5
+    call 0167ah                               ; e8 08 c5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop di                                    ; 5f
@@ -7349,40 +7383,11 @@ enqueue_key_:                                ; 0xf50c1 LB 0x9e
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    aam 0c6h                                  ; d4 c6
-    lds di, [bp+si-04948h]                    ; c5 ba b8 b6
-    stosb                                     ; aa
-    popfw                                     ; 9d
-    push sp                                   ; 54
-    push bx                                   ; 53
-    inc si                                    ; 46
-    inc bp                                    ; 45
-    cmp bh, byte [bx+si]                      ; 3a 38
-    sub bl, byte [ss:di]                      ; 36 2a 1d
-    popfw                                     ; 9d
-    push sp                                   ; 54
-    push bp                                   ; 55
-    push dx                                   ; 52
-    not word [bx+di-009h]                     ; f7 51 f7
-    push cx                                   ; 51
-    in AL, strict byte 052h                   ; e4 52
-    into                                      ; ce
-    push cx                                   ; 51
-    push 0dc53h                               ; 68 53 dc
-    push bx                                   ; 53
-    adc word [si+061h], strict byte 00054h    ; 83 54 61 54
-    pushfw                                    ; 9c
-    push dx                                   ; 52
-    not word [bx+di-009h]                     ; f7 51 f7
-    push cx                                   ; 51
-    db  026h, 053h
-    ; es push bx                                ; 26 53
-    in AL, DX                                 ; ec
-    push cx                                   ; 51
-    mov sp, 04153h                            ; bc 53 41
-    push sp                                   ; 54
-    jl short 051b3h                           ; 7c 54
-_int09_function:                             ; 0xf515f LB 0x494
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
@@ -7390,40 +7395,40 @@ _int09_function:                             ; 0xf515f 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 05189h                          ; 75 19
+    jne short 051ddh                          ; 75 19
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 a8 c7
+    call 01923h                               ; e8 54 c7
     push 00587h                               ; 68 87 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 e3 c7
+    call 01966h                               ; e8 8f c7
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 0524fh                           ; e9 c6 00
+    jmp near 052a3h                           ; e9 c6 00
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 be c4
+    call 01650h                               ; e8 6a 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 af c4
+    call 01650h                               ; e8 5b 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 a0 c4
+    call 01650h                               ; e8 4c 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, 0512ah                            ; bf 2a 51
+    mov di, 0517eh                            ; bf 7e 51
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0513bh]               ; 2e 8b 85 3b 51
+    mov ax, word [cs:di+0518fh]               ; 2e 8b 85 8f 51
     jmp ax                                    ; ff e0
     xor byte [bp-00eh], 040h                  ; 80 76 f2 40
     mov al, byte [bp-00eh]                    ; 8a 46 f2
@@ -7431,53 +7436,53 @@ _int09_function:                             ; 0xf515f 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 7c c4
+    call 0165eh                               ; e8 28 c4
     or byte [bp-008h], 040h                   ; 80 4e f8 40
     mov al, byte [bp-008h]                    ; 8a 46 f8
-    jmp near 0546dh                           ; e9 81 02
+    jmp near 054c1h                           ; 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 0546dh                           ; e9 76 02
+    jmp near 054c1h                           ; e9 76 02
     test byte [bp-00ch], 002h                 ; f6 46 f4 02
-    jne short 05230h                          ; 75 33
+    jne short 05284h                          ; 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 0520bh                          ; 75 05
+    jne short 0525fh                          ; 75 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 0520eh                          ; eb 03
+    jmp short 05262h                          ; eb 03
     mov dx, strict word 00001h                ; ba 01 00
     test byte [bp-00ah], 080h                 ; f6 46 f6 80
-    je short 0521dh                           ; 74 09
+    je short 05271h                           ; 74 09
     mov al, dl                                ; 88 d0
     not al                                    ; f6 d0
     and byte [bp-00eh], al                    ; 20 46 f2
-    jmp short 05220h                          ; eb 03
+    jmp short 05274h                          ; 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 2e c4
+    call 0165eh                               ; e8 da 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 0523dh                           ; 74 04
+    je short 05291h                           ; 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 0f c4
+    call 0165eh                               ; e8 bb 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 05230h                          ; 75 d5
+    jne short 05284h                          ; 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
@@ -7485,16 +7490,16 @@ _int09_function:                             ; 0xf515f 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 ee c3
+    call 0165eh                               ; e8 9a c3
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 05285h                           ; 74 0e
+    je short 052d9h                           ; 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 05294h                          ; eb 0f
+    jmp short 052e8h                          ; 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
@@ -7502,10 +7507,10 @@ _int09_function:                             ; 0xf515f 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 c4 c3
-    jmp short 05230h                          ; eb 94
+    call 0165eh                               ; e8 70 c3
+    jmp short 05284h                          ; eb 94
     test byte [bp-004h], 001h                 ; f6 46 fc 01
-    jne short 05230h                          ; 75 8e
+    jne short 05284h                          ; 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
@@ -7513,16 +7518,16 @@ _int09_function:                             ; 0xf515f 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 a7 c3
+    call 0165eh                               ; e8 53 c3
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 052cch                           ; 74 0e
+    je short 05320h                           ; 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 052dbh                          ; eb 0f
+    jmp short 0532fh                          ; 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
@@ -7530,8 +7535,8 @@ _int09_function:                             ; 0xf515f 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 7d c3
-    jmp near 05230h                           ; e9 4c ff
+    call 0165eh                               ; e8 29 c3
+    jmp near 05284h                           ; 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
@@ -7539,16 +7544,16 @@ _int09_function:                             ; 0xf515f 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 65 c3
+    call 0165eh                               ; e8 11 c3
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 0530eh                           ; 74 0e
+    je short 05362h                           ; 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 0531dh                          ; eb 0f
+    jmp short 05371h                          ; 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
@@ -7556,8 +7561,8 @@ _int09_function:                             ; 0xf515f 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 3b c3
-    jmp near 05230h                           ; e9 0a ff
+    call 0165eh                               ; e8 e7 c2
+    jmp near 05284h                           ; 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
@@ -7565,16 +7570,16 @@ _int09_function:                             ; 0xf515f 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 23 c3
+    call 0165eh                               ; e8 cf c2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 002h                 ; a8 02
-    je short 05350h                           ; 74 0e
+    je short 053a4h                           ; 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 0535fh                          ; eb 0f
+    jmp short 053b3h                          ; 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
@@ -7582,10 +7587,10 @@ _int09_function:                             ; 0xf515f 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 f9 c2
-    jmp near 05230h                           ; e9 c8 fe
+    call 0165eh                               ; e8 a5 c2
+    jmp near 05284h                           ; e9 c8 fe
     test byte [bp-004h], 003h                 ; f6 46 fc 03
-    jne short 0538eh                          ; 75 20
+    jne short 053e2h                          ; 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
@@ -7593,11 +7598,11 @@ _int09_function:                             ; 0xf515f 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 db c2
+    call 0165eh                               ; e8 87 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 05223h                           ; e9 95 fe
+    jmp near 05277h                           ; 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
@@ -7605,20 +7610,20 @@ _int09_function:                             ; 0xf515f 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 bb c2
+    call 0165eh                               ; e8 67 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
-    call 0e034h                               ; e8 88 8c
+    call 0e034h                               ; e8 34 8c
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 9b c2
+    call 01650h                               ; e8 47 c2
     test AL, strict byte 008h                 ; a8 08
-    jne short 053ach                          ; 75 f3
-    jmp near 05230h                           ; e9 74 fe
+    jne short 05400h                          ; 75 f3
+    jmp near 05284h                           ; e9 74 fe
     test byte [bp-004h], 003h                 ; f6 46 fc 03
-    je short 053c5h                           ; 74 03
-    jmp near 05230h                           ; e9 6b fe
+    je short 05419h                           ; 74 03
+    jmp near 05284h                           ; 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
@@ -7626,21 +7631,21 @@ _int09_function:                             ; 0xf515f 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 84 c2
-    jmp short 053c2h                          ; eb e6
+    call 0165eh                               ; e8 30 c2
+    jmp short 05416h                          ; eb e6
     test byte [bp-004h], 002h                 ; f6 46 fc 02
-    je short 05415h                           ; 74 33
+    je short 05469h                           ; 74 33
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 81 c2
+    call 0166ch                               ; e8 2d 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 84 c2
+    call 0167ah                               ; e8 30 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 5c c2
+    call 0165eh                               ; e8 08 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7649,8 +7654,8 @@ _int09_function:                             ; 0xf515f LB 0x494
     pop bp                                    ; 5d
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
-    call 050c1h                               ; e8 ae fc
-    jmp short 053c2h                          ; eb ad
+    call 05115h                               ; e8 ae fc
+    jmp short 05416h                          ; 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
@@ -7658,7 +7663,7 @@ _int09_function:                             ; 0xf515f 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 34 c2
+    call 0165eh                               ; e8 e0 c1
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor AL, strict byte 010h                  ; 34 10
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7666,11 +7671,11 @@ _int09_function:                             ; 0xf515f 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 1f c2
-    jmp short 053c2h                          ; eb 81
+    call 0165eh                               ; e8 cb c1
+    jmp short 05416h                          ; eb 81
     test byte [bp-004h], 002h                 ; f6 46 fc 02
-    je short 0544ah                           ; 74 03
-    jmp near 05230h                           ; e9 e6 fd
+    je short 0549eh                           ; 74 03
+    jmp near 05284h                           ; 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
@@ -7678,109 +7683,109 @@ _int09_function:                             ; 0xf515f 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 ff c1
-    jmp short 05447h                          ; eb e6
+    call 0165eh                               ; e8 ab c1
+    jmp short 0549bh                          ; eb e6
     mov al, byte [bp-010h]                    ; 8a 46 f0
     test AL, strict byte 004h                 ; a8 04
-    jne short 05447h                          ; 75 df
+    jne short 0549bh                          ; 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 e4 c1
-    jmp short 05447h                          ; eb cb
+    call 0165eh                               ; e8 90 c1
+    jmp short 0549bh                          ; eb cb
     mov al, byte [bp-010h]                    ; 8a 46 f0
     and AL, strict byte 0fbh                  ; 24 fb
-    jmp short 0544fh                          ; eb cc
+    jmp short 054a3h                          ; 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 0549dh                          ; 75 11
+    jne short 054f1h                          ; 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 e2 c1
+    call 0167ah                               ; e8 8e c1
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-008h], 008h                 ; f6 46 f8 08
-    je short 054b2h                           ; 74 0f
+    je short 05506h                           ; 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 05249h                           ; e9 97 fd
+    jmp near 0529dh                           ; e9 97 fd
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 080h                 ; a8 80
-    je short 054f0h                           ; 74 37
+    je short 05544h                           ; 74 37
     cmp AL, strict byte 0fah                  ; 3c fa
-    jne short 054cfh                          ; 75 12
+    jne short 05523h                          ; 75 12
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 8a c1
+    call 01650h                               ; e8 36 c1
     mov bl, al                                ; 88 c3
     or bl, 010h                               ; 80 cb 10
     xor bh, bh                                ; 30 ff
-    jmp short 054e5h                          ; eb 16
+    jmp short 05539h                          ; eb 16
     cmp AL, strict byte 0feh                  ; 3c fe
-    je short 054d6h                           ; 74 03
-    jmp near 05230h                           ; e9 5a fd
+    je short 0552ah                           ; 74 03
+    jmp near 05284h                           ; e9 5a fd
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 71 c1
+    call 01650h                               ; e8 1d 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 70 c1
-    jmp short 054d3h                          ; eb e3
+    call 0165eh                               ; e8 1c c1
+    jmp short 05527h                          ; eb e3
     cmp byte [bp-00ah], 058h                  ; 80 7e f6 58
-    jbe short 05515h                          ; 76 1f
+    jbe short 05569h                          ; 76 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 22 c4
+    call 01923h                               ; e8 ce 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 57 c4
+    call 01966h                               ; e8 03 c4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 0524fh                           ; e9 3a fd
+    jmp near 052a3h                           ; e9 3a fd
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 008h                 ; a8 08
-    je short 0552fh                           ; 74 13
+    je short 05583h                           ; 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 055bfh                           ; e9 90 00
+    jmp near 05613h                           ; e9 90 00
     test AL, strict byte 004h                 ; a8 04
-    je short 05546h                           ; 74 13
+    je short 0559ah                           ; 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 055bfh                           ; e9 79 00
+    jmp near 05613h                           ; 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 05563h                          ; 76 14
+    jbe short 055b7h                          ; 76 14
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 05563h                           ; 72 0d
+    jc short 055b7h                           ; 72 0d
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 05563h                         ; 77 09
+    jnbe short 055b7h                         ; 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 055bbh                          ; eb 58
+    jmp short 0560fh                          ; eb 58
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    je short 05598h                           ; 74 2f
+    je short 055ech                           ; 74 2f
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     imul bx, ax, strict byte 0000ah           ; 6b d8 0a
@@ -7788,15 +7793,15 @@ _int09_function:                             ; 0xf515f LB 0x494
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 05588h                           ; 74 0a
+    je short 055dch                           ; 74 0a
     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
-    jmp short 05590h                          ; eb 08
+    jmp short 055e4h                          ; 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 055c5h                          ; eb 2d
+    jmp short 05619h                          ; eb 2d
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     imul bx, ax, strict byte 0000ah           ; 6b d8 0a
@@ -7804,33 +7809,33 @@ _int09_function:                             ; 0xf515f LB 0x494
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 055b7h                           ; 74 0a
+    je short 0560bh                           ; 74 0a
     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
-    jmp short 055bfh                          ; eb 08
+    jmp short 05613h                          ; 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 055e5h                          ; 75 1a
+    jne short 05639h                          ; 75 1a
     test dl, dl                               ; 84 d2
-    jne short 055e5h                          ; 75 16
+    jne short 05639h                          ; 75 16
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 49 c3
+    call 01923h                               ; e8 f5 c2
     push 005d8h                               ; 68 d8 05
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 84 c3
+    call 01966h                               ; e8 30 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 05410h                           ; e9 1d fe
-dequeue_key_:                                ; 0xf55f3 LB 0x94
+    jmp near 05464h                           ; e9 1d fe
+dequeue_key_:                                ; 0xf5647 LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -7843,36 +7848,36 @@ dequeue_key_:                                ; 0xf55f3 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 5f c0
+    call 0166ch                               ; e8 0b 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 54 c0
+    call 0166ch                               ; e8 00 c0
     cmp bx, ax                                ; 39 c3
-    je short 05659h                           ; 74 3d
+    je short 056adh                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 2c c0
+    call 01650h                               ; e8 d8 bf
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 21 c0
+    call 01650h                               ; e8 cd 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 05654h                           ; 74 13
+    je short 056a8h                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 0564bh                           ; 72 03
+    jc short 0569fh                           ; 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 26 c0
+    call 0167ah                               ; e8 d2 bf
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0565bh                          ; eb 02
+    jmp short 056afh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -7883,35 +7888,36 @@ dequeue_key_:                                ; 0xf55f3 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+di+04057h], cl               ; 00 89 57 40
+    add ch, bl                                ; 00 dd
     push di                                   ; 57
-    rcl byte [bx+01eh], CL                    ; d2 57 1e
-    pop ax                                    ; 58
-    das                                       ; 2f
-    pop ax                                    ; 58
-    pop ax                                    ; 58
-    pop ax                                    ; 58
-    popaw                                     ; 61
+    xchg sp, ax                               ; 94
+    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
     pop ax                                    ; 58
-    rcr byte [bx+si+004h], CL                 ; d2 58 04
     pop cx                                    ; 59
-    xor bx, word [bx+di+06ch]                 ; 33 59 6c
+    xchg word [bx+di-040h], bx                ; 87 59 c0
     pop cx                                    ; 59
-    int3                                      ; cc
-    push di                                   ; 57
-_int16_function:                             ; 0xf5687 LB 0x2f0
+    db  020h
+    pop ax                                    ; 58
+_int16_function:                             ; 0xf56db 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 b9 bf
+    call 01650h                               ; e8 65 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 ac bf
+    call 01650h                               ; e8 58 bf
     mov bl, al                                ; 88 c3
     mov dl, cl                                ; 88 ca
     xor dh, dh                                ; 30 f6
@@ -7921,7 +7927,7 @@ _int16_function:                             ; 0xf5687 LB 0x2f0
     xor ah, ah                                ; 30 e4
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 05720h                           ; 74 66
+    je short 05774h                           ; 74 66
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
     mov dx, strict word 00060h                ; ba 60 00
@@ -7931,17 +7937,17 @@ _int16_function:                             ; 0xf5687 LB 0x2f0
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 056d3h                          ; 75 08
+    jne short 05727h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 056c1h                          ; eb ee
+    jmp short 05715h                          ; 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 0571fh                          ; 75 41
+    jne short 05773h                          ; 75 41
     mov dl, bl                                ; 88 da
     and dl, 0c8h                              ; 80 e2 c8
     mov al, bh                                ; 88 f8
@@ -7961,11 +7967,11 @@ _int16_function:                             ; 0xf5687 LB 0x2f0
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0570eh                          ; 75 08
+    jne short 05762h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 056fch                          ; eb ee
+    jmp short 05750h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -7973,39 +7979,39 @@ _int16_function:                             ; 0xf5687 LB 0x2f0
     xor bh, bh                                ; 30 ff
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 3f bf
+    call 0165eh                               ; e8 eb 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 05789h                         ; 77 5e
+    jnbe short 057ddh                         ; 77 5e
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 05664h                            ; bf 64 56
+    mov di, 056b8h                            ; bf b8 56
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0566fh]               ; 2e 8b 85 6f 56
+    mov ax, word [cs:di+056c3h]               ; 2e 8b 85 c3 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 055f3h                               ; e8 a4 fe
+    call 05647h                               ; e8 a4 fe
     test ax, ax                               ; 85 c0
-    jne short 0575eh                          ; 75 0b
+    jne short 057b2h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 0b c2
+    call 01966h                               ; e8 b7 c1
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 0576ah                           ; 74 06
+    je short 057beh                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 05770h                           ; 74 06
+    je short 057c4h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 05774h                          ; 75 04
+    jne short 057c8h                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
@@ -8014,22 +8020,22 @@ _int16_function:                             ; 0xf5687 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 057cch                           ; e9 43 00
+    jmp near 05820h                           ; 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 8f c1
+    call 01923h                               ; e8 3b 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 c3 c1
+    call 01966h                               ; e8 6f 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 72 c1
+    call 01923h                               ; e8 1e c1
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -8040,7 +8046,7 @@ _int16_function:                             ; 0xf5687 LB 0x2f0
     push ax                                   ; 50
     push 0065bh                               ; 68 5b 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 9d c1
+    call 01966h                               ; e8 49 c1
     add sp, strict byte 0000ch                ; 83 c4 0c
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
@@ -8052,17 +8058,17 @@ _int16_function:                             ; 0xf5687 LB 0x2f0
     lea bx, [bp-008h]                         ; 8d 5e f8
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 055f3h                               ; e8 0d fe
+    call 05647h                               ; e8 0d fe
     test ax, ax                               ; 85 c0
-    jne short 057f0h                          ; 75 06
+    jne short 05844h                          ; 75 06
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp short 057cch                          ; eb dc
+    jmp short 05820h                          ; eb dc
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 057fch                           ; 74 06
+    je short 05850h                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 05802h                           ; 74 06
+    je short 05856h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 05806h                          ; 75 04
+    jne short 0585ah                          ; 75 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
@@ -8072,32 +8078,32 @@ _int16_function:                             ; 0xf5687 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 057cch                          ; eb ae
+    jmp short 05820h                          ; eb ae
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 29 be
+    call 01650h                               ; e8 d5 bd
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
-    jmp near 05783h                           ; e9 54 ff
+    jmp near 057d7h                           ; 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 050c1h                               ; e8 82 f8
+    call 05115h                               ; e8 82 f8
     test ax, ax                               ; 85 c0
-    jne short 05850h                          ; 75 0d
+    jne short 058a4h                          ; 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 057cch                           ; e9 7c ff
+    jmp near 05820h                           ; e9 7c ff
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 057cch                           ; e9 74 ff
+    jmp near 05820h                           ; 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 0584ah                          ; eb e9
+    jmp short 0589eh                          ; eb e9
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
     cli                                       ; fa
@@ -8110,40 +8116,40 @@ _int16_function:                             ; 0xf5687 LB 0x2f0
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05888h                          ; 75 0d
+    jne short 058dch                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05888h                          ; 76 08
+    jbe short 058dch                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05871h                          ; eb e9
+    jmp short 058c5h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 058cch                          ; 76 40
+    jbe short 05920h                          ; 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 058cch                          ; 75 35
+    jne short 05920h                          ; 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 058b1h                          ; 75 0d
+    jne short 05905h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 058b1h                          ; 76 08
+    jbe short 05905h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 0589ah                          ; eb e9
+    jmp short 058eeh                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 058c3h                          ; 76 0e
+    jbe short 05917h                          ; 76 0e
     shr cx, 008h                              ; c1 e9 08
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -8153,71 +8159,71 @@ _int16_function:                             ; 0xf5687 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 05897h                         ; 77 cb
+    jnbe short 058ebh                         ; 77 cb
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 057cch                           ; e9 fa fe
+    jmp near 05820h                           ; 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 055f3h                               ; e8 12 fd
+    call 05647h                               ; e8 12 fd
     test ax, ax                               ; 85 c0
-    jne short 058f0h                          ; 75 0b
+    jne short 05944h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 79 c0
+    call 01966h                               ; e8 25 c0
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 058f9h                          ; 75 03
-    jmp near 05774h                           ; e9 7b fe
+    jne short 0594dh                          ; 75 03
+    jmp near 057c8h                           ; e9 7b fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    jne short 05902h                          ; 75 03
-    jmp near 05770h                           ; e9 6e fe
-    jmp short 058f6h                          ; eb f2
+    jne short 05956h                          ; 75 03
+    jmp near 057c4h                           ; e9 6e fe
+    jmp short 0594ah                          ; 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 055f3h                               ; e8 db fc
+    call 05647h                               ; e8 db fc
     test ax, ax                               ; 85 c0
-    jne short 0591fh                          ; 75 03
-    jmp near 057eah                           ; e9 cb fe
+    jne short 05973h                          ; 75 03
+    jmp near 0583eh                           ; e9 cb fe
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 05928h                          ; 75 03
-    jmp near 05806h                           ; e9 de fe
+    jne short 0597ch                          ; 75 03
+    jmp near 0585ah                           ; e9 de fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    jne short 05931h                          ; 75 03
-    jmp near 05802h                           ; e9 d1 fe
-    jmp short 05925h                          ; eb f2
+    jne short 05985h                          ; 75 03
+    jmp near 05856h                           ; e9 d1 fe
+    jmp short 05979h                          ; eb f2
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 14 bd
+    call 01650h                               ; e8 c0 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 03 bd
+    call 01650h                               ; e8 af 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 f5 bc
+    call 01650h                               ; e8 a1 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 05781h                           ; e9 15 fe
+    jmp near 057d5h                           ; e9 15 fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 0584ah                           ; e9 d3 fe
-set_geom_lba_:                               ; 0xf5977 LB 0xe7
+    jmp near 0589eh                           ; e9 d3 fe
+set_geom_lba_:                               ; 0xf59cb LB 0xe7
     push bx                                   ; 53
     push cx                                   ; 51
     push si                                   ; 56
@@ -8233,32 +8239,32 @@ set_geom_lba_:                               ; 0xf5977 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 09f80h                               ; e8 dc 45
+    call 09fd0h                               ; e8 d8 45
     test ax, ax                               ; 85 c0
-    jne short 059b4h                          ; 75 0c
+    jne short 05a08h                          ; 75 0c
     test bx, bx                               ; 85 db
-    jne short 059b4h                          ; 75 08
+    jne short 05a08h                          ; 75 08
     test cx, cx                               ; 85 c9
-    jne short 059b4h                          ; 75 04
+    jne short 05a08h                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 059bbh                           ; 74 07
+    je short 05a0fh                           ; 74 07
     mov bx, strict word 0ffffh                ; bb ff ff
     mov si, bx                                ; 89 de
-    jmp short 059c1h                          ; eb 06
+    jmp short 05a15h                          ; 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 059cdh                          ; eb 05
+    jmp short 05a21h                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 059f0h                          ; 7d 23
+    jnl short 05a44h                          ; 7d 23
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp si, ax                                ; 39 c6
-    jc short 059deh                           ; 72 0a
-    jne short 059e7h                          ; 75 11
+    jc short 05a32h                           ; 72 0a
+    jne short 05a3bh                          ; 75 11
     mov ax, word [bp-004h]                    ; 8b 46 fc
     cmp ax, word [bp-008h]                    ; 3b 46 f8
-    jnbe short 059e7h                         ; 77 09
+    jnbe short 05a3bh                         ; 77 09
     mov ax, word [bp-002h]                    ; 8b 46 fe
     inc ax                                    ; 40
     shr ax, 1                                 ; d1 e8
@@ -8266,20 +8272,20 @@ set_geom_lba_:                               ; 0xf5977 LB 0xe7
     shr word [bp-006h], 1                     ; d1 6e fa
     rcr word [bp-008h], 1                     ; d1 5e f8
     inc bx                                    ; 43
-    jmp short 059c8h                          ; eb d8
+    jmp short 05a1ch                          ; 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 09f30h                               ; e8 33 45
+    call 09f80h                               ; e8 2f 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 09f50h                               ; e8 47 45
+    call 09fa0h                               ; e8 43 45
     mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 05a18h                          ; 76 06
+    jbe short 05a6ch                          ; 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
@@ -8290,65 +8296,48 @@ set_geom_lba_:                               ; 0xf5977 LB 0xe7
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn 00008h                               ; c2 08 00
-    out strict byte 05ah, AL                  ; e6 5a
-    neg word [bp+si+026h]                     ; f7 5a 26
+    cmp bl, byte [bp+di+04bh]                 ; 3a 5b 4b
     pop bx                                    ; 5b
-    db  026h, 05bh
-    ; es pop bx                                 ; 26 5b
-    db  026h, 05bh
-    ; es pop bx                                 ; 26 5b
-    push SS                                   ; 16
-    pop bp                                    ; 5d
-    dec di                                    ; 4f
-    pop si                                    ; 5e
-    dec di                                    ; 4f
-    pop si                                    ; 5e
-    inc bx                                    ; 43
-    pop bp                                    ; 5d
-    sub AL, strict byte 05eh                  ; 2c 5e
-    dec di                                    ; 4f
-    pop si                                    ; 5e
-    dec di                                    ; 4f
-    pop si                                    ; 5e
-    sub AL, strict byte 05eh                  ; 2c 5e
-    sub AL, strict byte 05eh                  ; 2c 5e
-    dec di                                    ; 4f
+    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
     pop si                                    ; 5e
-    dec di                                    ; 4f
-    pop si                                    ; 5e
-    scasb                                     ; ae
+    xchg di, ax                               ; 97
     pop bp                                    ; 5d
-    sub AL, strict byte 05eh                  ; 2c 5e
-    dec di                                    ; 4f
+    sbb byte [bp-05dh], 05eh                  ; 80 5e a3 5e
+    mov word [0805eh], ax                     ; a3 5e 80
     pop si                                    ; 5e
-    dec di                                    ; 4f
+    sbb byte [bp-05dh], 05eh                  ; 80 5e a3 5e
+    mov word [0025eh], ax                     ; a3 5e 02
     pop si                                    ; 5e
-    sub AL, strict byte 05eh                  ; 2c 5e
-    fistp word [di+04fh]                      ; df 5d 4f
+    sbb byte [bp-05dh], 05eh                  ; 80 5e a3 5e
+    mov word [0805eh], ax                     ; a3 5e 80
     pop si                                    ; 5e
-    dec di                                    ; 4f
+    xor bx, word [bp-05dh]                    ; 33 5e a3
     pop si                                    ; 5e
-    dec di                                    ; 4f
+    mov word [0a35eh], ax                     ; a3 5e a3
     pop si                                    ; 5e
-_int13_harddisk:                             ; 0xf5a5e LB 0x44f
+_int13_harddisk:                             ; 0xf5ab2 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 ff bb
+    call 0166ch                               ; e8 ab 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 e0 bb
+    call 0165eh                               ; e8 8c bb
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05a8dh                           ; 72 05
+    jc short 05ae1h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05aabh                           ; 72 1e
+    jc short 05affh                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8358,9 +8347,9 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     push 0067eh                               ; 68 7e 06
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 c1 be
+    call 01966h                               ; e8 6d be
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05e6ah                           ; e9 bf 03
+    jmp near 05ebeh                           ; e9 bf 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8369,29 +8358,29 @@ _int13_harddisk:                             ; 0xf5a5e 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 05ad4h                           ; 72 10
+    jc short 05b28h                           ; 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 05aa0h                          ; eb cc
+    jmp short 05af4h                          ; 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 05b23h                         ; 77 44
+    jnbe short 05b77h                         ; 77 44
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+05a2ch]                   ; 2e ff a7 2c 5a
+    jmp word [cs:bx+05a80h]                   ; 2e ff a7 80 5a
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc short 05af4h                          ; 73 08
+    jnc short 05b48h                          ; 73 08
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 01d85h                               ; e8 91 c2
-    jmp near 05d2ch                           ; e9 35 02
+    call 01d85h                               ; e8 3d c2
+    jmp near 05d80h                           ; e9 35 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 50 bb
+    call 01650h                               ; e8 fc ba
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
     xor dh, dh                                ; 30 f6
@@ -8402,11 +8391,11 @@ _int13_harddisk:                             ; 0xf5a5e 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 42 bb
+    call 0165eh                               ; e8 ee ba
     test cl, cl                               ; 84 c9
-    je short 05b84h                           ; 74 64
-    jmp near 05e86h                           ; e9 63 03
-    jmp near 05e4fh                           ; e9 29 03
+    je short 05bd8h                           ; 74 64
+    jmp near 05edah                           ; e9 63 03
+    jmp near 05ea3h                           ; e9 29 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -8426,23 +8415,23 @@ _int13_harddisk:                             ; 0xf5a5e 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 05b61h                         ; 77 04
+    jnbe short 05bb5h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 05b87h                          ; 75 26
+    jne short 05bdbh                          ; 75 26
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 b7 bd
+    call 01923h                               ; e8 63 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 e8 bd
+    call 01966h                               ; e8 94 bd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05e6ah                           ; e9 e6 02
-    jmp near 05d30h                           ; e9 a9 01
+    jmp near 05ebeh                           ; e9 e6 02
+    jmp near 05d84h                           ; 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
@@ -8454,16 +8443,16 @@ _int13_harddisk:                             ; 0xf5a5e 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 05bb5h                          ; 73 0c
+    jnc short 05c09h                          ; 73 0c
     cmp cx, word [bp-008h]                    ; 3b 4e f8
-    jbe short 05bb5h                          ; 76 07
+    jbe short 05c09h                          ; 76 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp ax, dx                                ; 39 d0
-    jbe short 05be5h                          ; 76 30
+    jbe short 05c39h                          ; 76 30
     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 0f bd
     push word [bp-006h]                       ; ff 76 fa
     push word [bp-008h]                       ; ff 76 f8
     push di                                   ; 57
@@ -8476,13 +8465,13 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     push 0067eh                               ; 68 7e 06
     push 00712h                               ; 68 12 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 87 bd
+    call 01966h                               ; e8 33 bd
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 05e6ah                           ; e9 85 02
+    jmp near 05ebeh                           ; 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 05c10h                           ; 74 20
+    je short 05c64h                           ; 74 20
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -8490,25 +8479,25 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
     cmp cx, word [es:bx+030h]                 ; 26 3b 4f 30
-    jne short 05c19h                          ; 75 14
+    jne short 05c6dh                          ; 75 14
     mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    je short 05c13h                           ; 74 05
-    jmp short 05c19h                          ; eb 09
-    jmp near 05d2ch                           ; e9 19 01
+    je short 05c67h                           ; 74 05
+    jmp short 05c6dh                          ; eb 09
+    jmp near 05d80h                           ; e9 19 01
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 05c49h                           ; 72 30
+    jc short 05c9dh                           ; 72 30
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 09f30h                               ; e8 0c 43
+    call 09f80h                               ; e8 08 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 09f30h                               ; e8 fd 42
+    call 09f80h                               ; e8 f9 42
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
     adc dx, bx                                ; 11 da
@@ -8564,11 +8553,11 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     or bx, ax                                 ; 09 c3
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je short 05d2ch                           ; 74 46
+    je short 05d80h                           ; 74 46
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 32 bc
+    call 01923h                               ; e8 de bb
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8578,25 +8567,25 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     push 0067eh                               ; 68 7e 06
     push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 5e bc
+    call 01966h                               ; e8 0a 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 05e72h                           ; e9 5c 01
+    jmp near 05ec6h                           ; 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 02 bc
+    call 01923h                               ; e8 ae bb
     push 0077ah                               ; 68 7a 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 3d bc
+    call 01966h                               ; e8 e9 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 23 b9
+    call 0165eh                               ; e8 cf b8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
@@ -8639,7 +8628,7 @@ _int13_harddisk:                             ; 0xf5a5e 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 05d2ch                           ; e9 7e ff
+    jmp near 05d80h                           ; e9 7e ff
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -8656,12 +8645,12 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 05dd4h                          ; 75 03
-    jmp near 05d2ch                           ; e9 58 ff
+    jne short 05e28h                          ; 75 03
+    jmp near 05d80h                           ; e9 58 ff
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 05e72h                           ; e9 93 00
+    jmp near 05ec6h                           ; 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
@@ -8676,10 +8665,10 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-008h]                    ; 8b 5e f8
     xor cx, cx                                ; 31 c9
-    call 09f30h                               ; e8 26 41
+    call 09f80h                               ; e8 22 41
     mov bx, word [bp-006h]                    ; 8b 5e fa
     xor cx, cx                                ; 31 c9
-    call 09f30h                               ; e8 1e 41
+    call 09f80h                               ; e8 1a 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
@@ -8688,30 +8677,30 @@ _int13_harddisk:                             ; 0xf5a5e LB 0x44f
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05d30h                           ; e9 04 ff
+    jmp near 05d84h                           ; 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 ec ba
+    call 01923h                               ; e8 98 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 1d bb
+    call 01966h                               ; e8 c9 ba
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05d2ch                           ; e9 dd fe
+    jmp near 05d80h                           ; 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 c9 ba
+    call 01923h                               ; e8 75 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 05b79h                           ; e9 0f fd
+    jmp near 05bcdh                           ; e9 0f fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8721,54 +8710,48 @@ _int13_harddisk:                             ; 0xf5a5e 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 d8 b7
+    call 0165eh                               ; e8 84 b7
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05d3fh                           ; e9 b2 fe
-    dec cx                                    ; 49
-    pop di                                    ; 5f
-    jl short 05ef0h                           ; 7c 5f
-    jl short 05ef2h                           ; 7c 5f
-    jl short 05ef4h                           ; 7c 5f
-    insw                                      ; 6d
-    arpl di, dx                               ; 63 d7
-    pushaw                                    ; 60
-    jl short 05efah                           ; 7c 5f
-    loopne 05efdh                             ; e0 60
-    insw                                      ; 6d
-    arpl [bx+di+05fh], sp                     ; 63 61 5f
-    popaw                                     ; 61
+    jmp near 05d93h                           ; e9 b2 fe
+    popfw                                     ; 9d
     pop di                                    ; 5f
-    popaw                                     ; 61
+    rcr byte [bx-030h], 1                     ; d0 5f d0
     pop di                                    ; 5f
+    rcr byte [bx-03fh], 1                     ; d0 5f c1
+    arpl [bp+di], bp                          ; 63 2b
     popaw                                     ; 61
-    pop di                                    ; 5f
-    test byte [bp+di+061h], ah                ; 84 63 61
-    pop di                                    ; 5f
+    rcr byte [bx+034h], 1                     ; d0 5f 34
     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
     pop di                                    ; 5f
-_int13_harddisk_ext:                         ; 0xf5ead LB 0x50f
+    mov CH, strict byte 05fh                  ; b5 5f
+_int13_harddisk_ext:                         ; 0xf5f01 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 b0 b7
+    call 0166ch                               ; e8 5c 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 a4 b7
+    call 0166ch                               ; e8 50 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 83 b7
+    call 0165eh                               ; e8 2f b7
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05eeah                           ; 72 05
+    jc short 05f3eh                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05f08h                           ; 72 1e
+    jc short 05f5ch                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8778,9 +8761,9 @@ _int13_harddisk_ext:                         ; 0xf5ead LB 0x50f
     push 007f5h                               ; 68 f5 07
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 64 ba
+    call 01966h                               ; e8 10 ba
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 0639ah                           ; e9 92 04
+    jmp near 063eeh                           ; e9 92 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     les bx, [bp-008h]                         ; c4 5e f8
@@ -8788,40 +8771,40 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 05f2fh                           ; 72 10
+    jc short 05f83h                           ; 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 05efdh                          ; eb ce
+    jmp short 05f51h                          ; 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 05f61h                         ; 77 24
+    jnbe short 05fb5h                         ; 77 24
     add bx, bx                                ; 01 db
     mov dx, word [bp+016h]                    ; 8b 56 16
     xor dh, dh                                ; 30 f6
-    jmp word [cs:bx+05e8dh]                   ; 2e ff a7 8d 5e
+    jmp word [cs:bx+05ee1h]                   ; 2e ff a7 e1 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 06371h                           ; e9 10 04
+    jmp near 063c5h                           ; 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 b7 b9
+    call 01923h                               ; e8 63 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 06011h                           ; e9 95 00
+    jmp near 06065h                           ; 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
@@ -8837,7 +8820,7 @@ _int13_harddisk_ext:                         ; 0xf5ead LB 0x50f
     xor ax, ax                                ; 31 c0
     xor bx, bx                                ; 31 db
     mov si, strict word 00020h                ; be 20 00
-    call 09f90h                               ; e8 e1 3f
+    call 09fe0h                               ; e8 dd 3f
     mov si, ax                                ; 89 c6
     mov word [bp-00ch], bx                    ; 89 5e f4
     mov ax, word [es:di+008h]                 ; 26 8b 45 08
@@ -8851,39 +8834,39 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 05ff9h                         ; 77 22
-    jne short 0601ch                          ; 75 43
+    jnbe short 0604dh                         ; 77 22
+    jne short 06070h                          ; 75 43
     mov di, word [bp-00ch]                    ; 8b 7e f4
     cmp di, word [es:bx+03ah]                 ; 26 3b 7f 3a
-    jnbe short 05ff9h                         ; 77 17
+    jnbe short 0604dh                         ; 77 17
     mov di, word [bp-00ch]                    ; 8b 7e f4
     cmp di, word [es:bx+03ah]                 ; 26 3b 7f 3a
-    jne short 0601ch                          ; 75 31
+    jne short 06070h                          ; 75 31
     cmp cx, word [es:bx+038h]                 ; 26 3b 4f 38
-    jnbe short 05ff9h                         ; 77 08
-    jne short 0601ch                          ; 75 29
+    jnbe short 0604dh                         ; 77 08
+    jne short 06070h                          ; 75 29
     cmp dx, word [es:bx+036h]                 ; 26 3b 57 36
-    jc short 0601ch                           ; 72 23
+    jc short 06070h                           ; 72 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 1f b9
+    call 01923h                               ; e8 cb 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 50 b9
+    call 01966h                               ; e8 fc b8
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 0639ah                           ; e9 7e 03
+    jmp near 063eeh                           ; 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 0602ch                           ; 74 05
+    je short 06080h                           ; 74 05
     cmp di, strict byte 00047h                ; 83 ff 47
-    jne short 0602fh                          ; 75 03
-    jmp near 0636dh                           ; e9 3e 03
+    jne short 06083h                          ; 75 03
+    jmp near 063c1h                           ; 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
@@ -8921,11 +8904,11 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 060feh                           ; 74 51
+    je short 06152h                           ; 74 51
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 6b b8
+    call 01923h                               ; e8 17 b8
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8933,15 +8916,15 @@ _int13_harddisk_ext:                         ; 0xf5ead LB 0x50f
     push 007f5h                               ; 68 f5 07
     push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 9d b8
+    call 01966h                               ; e8 49 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 063a2h                           ; e9 cb 02
+    jmp near 063f6h                           ; e9 cb 02
     or dh, 0b2h                               ; 80 ce b2
     mov word [bp+016h], dx                    ; 89 56 16
-    jmp near 063a5h                           ; e9 c5 02
+    jmp near 063f9h                           ; 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
@@ -8951,11 +8934,11 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 06101h                          ; 73 06
-    jmp near 0639ah                           ; e9 9c 02
-    jmp near 0636dh                           ; e9 6c 02
-    jnc short 06106h                          ; 73 03
-    jmp near 0619dh                           ; e9 97 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
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     imul ax, ax, strict byte 0001ch           ; 6b c0 1c
@@ -8994,12 +8977,12 @@ _int13_harddisk_ext:                         ; 0xf5ead LB 0x50f
     mov ax, si                                ; 89 f0
     mov bx, word [bp-00ch]                    ; 8b 5e f4
     mov si, strict word 00020h                ; be 20 00
-    call 09f80h                               ; e8 ed 3d
+    call 09fd0h                               ; e8 e9 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 06208h                           ; 72 65
+    jc short 0625ch                           ; 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
@@ -9026,22 +9009,22 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 061f8h                          ; 75 04
+    jne short 0624ch                          ; 75 04
     xor bx, bx                                ; 31 db
-    jmp short 061fbh                          ; eb 03
+    jmp short 0624fh                          ; eb 03
     mov bx, strict word 00008h                ; bb 08 00
     or bl, 010h                               ; 80 cb 10
     cmp dl, 001h                              ; 80 fa 01
-    jne short 0620bh                          ; 75 08
+    jne short 0625fh                          ; 75 08
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0620dh                          ; eb 05
-    jmp near 0629eh                           ; e9 93 00
+    jmp short 06261h                          ; eb 05
+    jmp near 062f2h                           ; e9 93 00
     xor ax, ax                                ; 31 c0
     or bx, ax                                 ; 09 c3
     cmp dl, 003h                              ; 80 fa 03
-    jne short 06219h                          ; 75 05
+    jne short 0626dh                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 0621bh                          ; eb 02
+    jmp short 0626fh                          ; eb 02
     xor ax, ax                                ; 31 c0
     or bx, ax                                 ; 09 c3
     mov ax, word [bp-01ch]                    ; 8b 46 e4
@@ -9068,24 +9051,24 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 06280h                          ; eb 05
+    jmp short 062d4h                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 06294h                          ; 73 14
+    jnc short 062e8h                          ; 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 c2 b3
+    call 01650h                               ; e8 6e b3
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 0627bh                          ; eb e7
+    jmp short 062cfh                          ; 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 062a7h                          ; 73 03
-    jmp near 0636dh                           ; e9 c6 00
+    jnc short 062fbh                          ; 73 03
+    jmp near 063c1h                           ; e9 c6 00
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -9104,7 +9087,7 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 062efh                          ; 75 0c
+    jne short 06343h                          ; 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
@@ -9113,7 +9096,7 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 06324h                          ; 75 16
+    jne short 06378h                          ; 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
@@ -9128,19 +9111,19 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 0634fh                          ; eb 05
+    jmp short 063a3h                          ; eb 05
     cmp bh, 040h                              ; 80 ff 40
-    jnc short 06364h                          ; 73 15
+    jnc short 063b8h                          ; 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 f2 b2
+    call 01650h                               ; e8 9e b2
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 0634ah                          ; eb e6
+    jmp short 0639eh                          ; eb e6
     neg bl                                    ; f6 db
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+041h], bl                 ; 26 88 5d 41
@@ -9148,20 +9131,20 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 e2 b2
+    call 0165eh                               ; e8 8e 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 0636dh                           ; 74 e4
+    je short 063c1h                           ; 74 e4
     cmp dx, strict byte 00001h                ; 83 fa 01
-    jc short 0639ah                           ; 72 0c
-    jbe short 0636dh                          ; 76 dd
+    jc short 063eeh                           ; 72 0c
+    jbe short 063c1h                          ; 76 dd
     cmp dx, strict byte 00003h                ; 83 fa 03
-    jc short 0639ah                           ; 72 05
+    jc short 063eeh                           ; 72 05
     cmp dx, strict byte 00004h                ; 83 fa 04
-    jbe short 0636dh                          ; 76 d3
+    jbe short 063c1h                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -9171,10 +9154,10 @@ _int13_harddisk_ext:                         ; 0xf5ead 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 a8 b2
+    call 0165eh                               ; e8 54 b2
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 06380h                          ; eb c4
-_int14_function:                             ; 0xf63bc LB 0x15c
+    jmp short 063d4h                          ; eb c4
+_int14_function:                             ; 0xf6410 LB 0x15c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9182,30 +9165,30 @@ _int14_function:                             ; 0xf63bc 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 a0 b2
+    call 0166ch                               ; e8 4c 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 74 b2
+    call 01650h                               ; e8 20 b2
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc short 063e8h                          ; 73 04
+    jnc short 0643ch                          ; 73 04
     test si, si                               ; 85 f6
-    jnbe short 063ebh                         ; 77 03
-    jmp near 0650eh                           ; e9 23 01
+    jnbe short 0643fh                         ; 77 03
+    jmp near 06562h                           ; e9 23 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 063ffh                           ; 72 0d
-    jbe short 0645fh                          ; 76 6b
+    jc short 06453h                           ; 72 0d
+    jbe short 064b3h                          ; 76 6b
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 06457h                           ; 74 5f
+    je short 064abh                           ; 74 5f
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0645ah                           ; 74 5e
-    jmp near 06508h                           ; e9 09 01
+    je short 064aeh                           ; 74 5e
+    jmp near 0655ch                           ; e9 09 01
     test al, al                               ; 84 c0
-    jne short 0645ch                          ; 75 59
+    jne short 064b0h                          ; 75 59
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9215,14 +9198,14 @@ _int14_function:                             ; 0xf63bc 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 06422h                          ; 75 0c
+    jne short 06476h                          ; 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 06439h                          ; eb 17
+    jmp short 0648dh                          ; eb 17
     and AL, strict byte 0e0h                  ; 24 e0
     xor ah, ah                                ; 30 e4
     mov cx, ax                                ; 89 c1
@@ -9248,13 +9231,13 @@ _int14_function:                             ; 0xf63bc LB 0x15c
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 064e9h                           ; e9 92 00
-    jmp near 064f7h                           ; e9 9d 00
-    jmp short 064adh                          ; eb 51
-    jmp near 06508h                           ; e9 a9 00
+    jmp near 0653dh                           ; e9 92 00
+    jmp near 0654bh                           ; e9 9d 00
+    jmp short 06501h                          ; eb 51
+    jmp near 0655ch                           ; e9 a9 00
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 04 b2
+    call 0166ch                               ; e8 b0 b1
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
@@ -9262,20 +9245,20 @@ _int14_function:                             ; 0xf63bc 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 0648fh                           ; 74 17
+    je short 064e3h                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 0648fh                           ; 74 13
+    je short 064e3h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 e7 b1
+    call 0166ch                               ; e8 93 b1
     cmp ax, si                                ; 39 f0
-    je short 0646ah                           ; 74 e1
+    je short 064beh                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 0646ah                          ; eb db
+    jmp short 064beh                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 06499h                           ; 74 06
+    je short 064edh                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -9285,33 +9268,33 @@ _int14_function:                             ; 0xf63bc LB 0x15c
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 064e9h                          ; 75 43
+    jne short 0653dh                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 064e9h                          ; eb 3c
+    jmp short 0653dh                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 b6 b1
+    call 0166ch                               ; e8 62 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 064d9h                          ; 75 17
+    jne short 0652dh                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 064d9h                           ; 74 13
+    je short 0652dh                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 9d b1
+    call 0166ch                               ; e8 49 b1
     cmp ax, si                                ; 39 f0
-    je short 064b8h                           ; 74 e5
+    je short 0650ch                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 064b8h                          ; eb df
+    jmp short 0650ch                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 064efh                           ; 74 12
+    je short 06543h                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -9319,12 +9302,12 @@ _int14_function:                             ; 0xf63bc 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 06512h                          ; eb 23
+    jmp short 06566h                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 064a8h                          ; eb b1
+    jmp short 064fch                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9334,15 +9317,15 @@ _int14_function:                             ; 0xf63bc LB 0x15c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 064e6h                          ; eb de
+    jmp short 0653ah                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 06512h                          ; eb 04
+    jmp short 06566h                          ; 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_:                                 ; 0xf6518 LB 0x43
+timer_wait_:                                 ; 0xf656c LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9350,7 +9333,7 @@ timer_wait_:                                 ; 0xf6518 LB 0x43
     push ax                                   ; 50
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 09f50h                               ; e8 2a 3a
+    call 09fa0h                               ; e8 26 3a
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
     mov dx, strict word 00061h                ; ba 61 00
@@ -9362,23 +9345,23 @@ timer_wait_:                                 ; 0xf6518 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 06545h                          ; 75 05
+    jne short 06599h                          ; 75 05
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 06554h                           ; 74 0f
+    je short 065a8h                           ; 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 06545h                          ; 75 f3
-    jmp short 06535h                          ; eb e1
+    jne short 06599h                          ; 75 f3
+    jmp short 06589h                          ; eb e1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf655b LB 0x30
+set_enable_a20_:                             ; 0xf65af LB 0x30
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9391,16 +9374,16 @@ set_enable_a20_:                             ; 0xf655b LB 0x30
     ; sub ah, ah                                ; 2a e4
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 06574h                           ; 74 05
+    je short 065c8h                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 06577h                          ; eb 03
+    jmp short 065cbh                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
     test cl, 002h                             ; f6 c1 02
-    je short 06581h                           ; 74 05
+    je short 065d5h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 06583h                          ; eb 02
+    jmp short 065d7h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -9408,7 +9391,7 @@ set_enable_a20_:                             ; 0xf655b LB 0x30
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf658b LB 0x88
+set_e820_range_:                             ; 0xf65df LB 0x88
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9438,10 +9421,10 @@ set_e820_range_:                             ; 0xf658b 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  01dh, 069h, 04eh, 066h, 062h, 066h, 0f7h, 066h, 0fdh, 066h, 002h, 067h, 007h, 067h, 0afh, 067h
-    db  0dah, 067h, 0f0h, 066h, 0f0h, 066h, 0a7h, 068h, 0cfh, 068h, 0e2h, 068h, 0f1h, 068h, 0f7h, 066h
-    db  0f8h, 068h
-_int15_function:                             ; 0xf6613 LB 0x33c
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9449,15 +9432,15 @@ _int15_function:                             ; 0xf6613 LB 0x33c
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe short 06658h                         ; 77 35
+    jnbe short 066ach                         ; 77 35
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00011h                ; b9 11 00
-    mov di, 065e1h                            ; bf e1 65
+    mov di, 06635h                            ; bf 35 66
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+065f1h]               ; 2e 8b b5 f1 65
+    mov si, word [cs:di+06645h]               ; 2e 8b b5 45 66
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     mov cx, word [bp+018h]                    ; 8b 4e 18
@@ -9470,31 +9453,31 @@ _int15_function:                             ; 0xf6613 LB 0x33c
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    je short 0665bh                           ; 74 03
-    jmp near 0691dh                           ; e9 c2 02
+    je short 066afh                           ; 74 03
+    jmp near 06971h                           ; e9 c2 02
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 068c6h                           ; e9 64 02
+    jmp near 0691ah                           ; e9 64 02
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06677h                           ; 72 0e
-    jbe short 0668bh                          ; 76 20
+    jc short 066cbh                           ; 72 0e
+    jbe short 066dfh                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 066b8h                           ; 74 48
+    je short 0670ch                           ; 74 48
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 0669bh                           ; 74 26
-    jmp short 066c5h                          ; eb 4e
+    je short 066efh                           ; 74 26
+    jmp short 06719h                          ; eb 4e
     test ax, ax                               ; 85 c0
-    jne short 066c5h                          ; 75 4a
+    jne short 06719h                          ; 75 4a
     xor ax, ax                                ; 31 c0
-    call 0655bh                               ; e8 db fe
+    call 065afh                               ; e8 db fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 066f0h                           ; e9 65 00
+    jmp near 06744h                           ; e9 65 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 0655bh                               ; e8 ca fe
+    call 065afh                               ; e8 ca fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 066f0h                           ; e9 55 00
+    jmp near 06744h                           ; e9 55 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9506,21 +9489,21 @@ _int15_function:                             ; 0xf6613 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 066f0h                           ; e9 38 00
+    jmp near 06744h                           ; 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 066f0h                           ; e9 2b 00
+    jmp near 06744h                           ; 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 53 b2
+    call 01923h                               ; e8 ff 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 88 b2
+    call 01966h                               ; e8 34 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
@@ -9533,38 +9516,38 @@ _int15_function:                             ; 0xf6613 LB 0x33c
     pop bp                                    ; 5d
     retn                                      ; c3
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp near 067a9h                           ; e9 ac 00
+    jmp near 067fdh                           ; e9 ac 00
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 066f0h                          ; eb ee
+    jmp short 06744h                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 066edh                          ; eb e6
+    jmp short 06741h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 0677ch                          ; 75 6f
+    jne short 067d0h                          ; 75 6f
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 3a af
+    call 01650h                               ; e8 e6 ae
     test AL, strict byte 001h                 ; a8 01
-    jne short 06779h                          ; 75 5f
+    jne short 067cdh                          ; 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 38 af
+    call 0165eh                               ; e8 e4 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 48 af
+    call 0167ah                               ; e8 f4 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 3c af
+    call 0167ah                               ; e8 e8 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 30 af
+    call 0167ah                               ; e8 dc 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 24 af
+    call 0167ah                               ; e8 d0 ae
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9573,26 +9556,26 @@ _int15_function:                             ; 0xf6613 LB 0x33c
     and AL, strict byte 0feh                  ; 24 fe
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 43 af
+    call 016ach                               ; e8 ef 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 51 af
-    jmp near 066f0h                           ; e9 77 ff
-    jmp near 068bdh                           ; e9 41 01
+    call 016c7h                               ; e8 fd ae
+    jmp near 06744h                           ; e9 77 ff
+    jmp near 06911h                           ; e9 41 01
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 0679dh                          ; 75 1c
+    jne short 067f1h                          ; 75 1c
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0165eh                               ; e8 d2 ae
+    call 0165eh                               ; e8 7e ae
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 16 af
+    call 016ach                               ; e8 c2 ae
     mov dl, al                                ; 88 c2
     and dl, 0bfh                              ; 80 e2 bf
-    jmp short 0676eh                          ; eb d1
+    jmp short 067c2h                          ; eb d1
     mov word [bp+018h], dx                    ; 89 56 18
     mov ax, bx                                ; 89 d8
     xor ah, bh                                ; 30 fc
@@ -9600,50 +9583,50 @@ _int15_function:                             ; 0xf6613 LB 0x33c
     dec ax                                    ; 48
     or bx, ax                                 ; 09 c3
     mov word [bp+012h], bx                    ; 89 5e 12
-    jmp near 066f0h                           ; e9 41 ff
+    jmp near 06744h                           ; e9 41 ff
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 f7 ae
+    call 016ach                               ; e8 a3 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 ea ae
+    call 016ach                               ; e8 96 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 067d3h                          ; 76 05
+    jbe short 06827h                          ; 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 066f0h                           ; e9 16 ff
+    jmp near 06744h                           ; e9 16 ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 0655bh                               ; e8 7a fd
+    call 065afh                               ; 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 8a ae
+    call 0167ah                               ; e8 36 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 7c ae
+    call 0167ah                               ; e8 28 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 51 ae
+    call 0165eh                               ; e8 fd 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 42 ae
+    call 0165eh                               ; e8 ee 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 50 ae
+    call 0167ah                               ; e8 fc ad
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
     out DX, AL                                ; ee
@@ -9673,7 +9656,7 @@ _int15_function:                             ; 0xf6613 LB 0x33c
     mov dx, 000a1h                            ; ba a1 00
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 0686bh                               ; e8 00 00
+    call 068bfh                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00038h                   ; 6a 38
@@ -9701,66 +9684,68 @@ _int15_function:                             ; 0xf6613 LB 0x33c
     push ax                                   ; 50
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 066f0h                           ; e9 49 fe
+    jmp near 06744h                           ; 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 71 b0
+    call 01923h                               ; e8 1d b0
     push 0086eh                               ; 68 6e 08
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 ac b0
+    call 01966h                               ; e8 58 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 066f0h                           ; e9 21 fe
+    jmp near 06744h                           ; 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 066f0h                           ; e9 0e fe
+    jmp near 06744h                           ; e9 0e fe
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 81 ad
+    call 0166ch                               ; e8 2d ad
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 067d3h                           ; e9 e2 fe
+    jmp near 06827h                           ; e9 e2 fe
     push 0089dh                               ; 68 9d 08
     push strict byte 00008h                   ; 6a 08
-    jmp short 068b7h                          ; eb bf
+    jmp short 0690bh                          ; eb bf
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 0691dh                          ; 75 1f
+    jne short 06971h                          ; 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 06916h                           ; 72 0b
+    jc short 0696ah                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 06916h                         ; 77 06
+    jnbe short 0696ah                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 066f0h                           ; e9 da fd
+    jmp near 06744h                           ; e9 da fd
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 066f0h                           ; e9 d3 fd
+    jmp near 06744h                           ; 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 fb af
+    call 01923h                               ; e8 a7 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 30 b0
+    call 01966h                               ; e8 dc af
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp short 068bdh                          ; eb 82
-    mov cx, 0de6ah                            ; b9 6a de
-    push strict byte 0fffeh                   ; 6a fe
-    push strict byte 0004dh                   ; 6a 4d
-    imul bp, word [bp+di+06bh], strict byte 0ff88h ; 6b 6b 6b 88
-    imul bp, word [bp+si-03395h], strict byte 0006bh ; 6b aa 6b cc 6b
-    or word [si+03dh], bp                     ; 09 6c 3d
+    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
     insb                                      ; 6c
-_int15_function32:                           ; 0xf694f LB 0x38a
+    xchg cx, ax                               ; 91
+    insb                                      ; 6c
+_int15_function32:                           ; 0xf69a3 LB 0x38a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9772,34 +9757,34 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov dx, word [bp+020h]                    ; 8b 56 20
     xor dh, dh                                ; 30 f6
     cmp ax, 000e8h                            ; 3d e8 00
-    je short 069b6h                           ; 74 4a
+    je short 06a0ah                           ; 74 4a
     cmp ax, 000d0h                            ; 3d d0 00
-    je short 06983h                           ; 74 12
+    je short 069d7h                           ; 74 12
     cmp ax, 00086h                            ; 3d 86 00
-    jne short 069b4h                          ; 75 3e
+    jne short 06a08h                          ; 75 3e
     sti                                       ; fb
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 06518h                               ; e8 98 fb
-    jmp near 06b47h                           ; e9 c4 01
+    call 0656ch                               ; e8 98 fb
+    jmp near 06b9bh                           ; e9 c4 01
     cmp dx, strict byte 0004fh                ; 83 fa 4f
-    jne short 069b4h                          ; 75 2c
+    jne short 06a08h                          ; 75 2c
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne short 069eah                          ; 75 5b
+    jne short 06a3eh                          ; 75 5b
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne short 069eah                          ; 75 54
+    jne short 06a3eh                          ; 75 54
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne short 069eah                          ; 75 4d
+    jne short 06a3eh                          ; 75 4d
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne short 069eah                          ; 75 46
+    jne short 06a3eh                          ; 75 46
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne short 069eah                          ; 75 3e
+    jne short 06a3eh                          ; 75 3e
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    je short 069b8h                           ; 74 04
-    jmp short 069eah                          ; eb 34
-    jmp short 069e0h                          ; eb 28
+    je short 06a0ch                           ; 74 04
+    jmp short 06a3eh                          ; eb 34
+    jmp short 06a34h                          ; 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
@@ -9811,28 +9796,28 @@ _int15_function32:                           ; 0xf694f 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 06b47h                           ; e9 67 01
+    jmp near 06b9bh                           ; e9 67 01
     cmp dx, strict byte 00020h                ; 83 fa 20
-    je short 069f0h                           ; 74 0b
+    je short 06a44h                           ; 74 0b
     cmp dx, strict byte 00001h                ; 83 fa 01
-    je short 069edh                           ; 74 03
-    jmp near 06b1dh                           ; e9 30 01
-    jmp near 06c8bh                           ; e9 9b 02
+    je short 06a41h                           ; 74 03
+    jmp near 06b71h                           ; e9 30 01
+    jmp near 06cdfh                           ; e9 9b 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne short 069eah                          ; 75 f3
+    jne short 06a3eh                          ; 75 f3
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne short 069eah                          ; 75 ec
+    jne short 06a3eh                          ; 75 ec
     mov ax, strict word 00035h                ; b8 35 00
-    call 016ach                               ; e8 a8 ac
+    call 016ach                               ; e8 54 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 06a0dh                               ; e2 fa
+    loop 06a61h                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 016ach                               ; e8 93 ac
+    call 016ach                               ; e8 3f ac
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
     or dx, ax                                 ; 09 c2
@@ -9840,31 +9825,31 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     add bx, bx                                ; 01 db
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 06a33h                           ; 72 06
-    jne short 06a61h                          ; 75 32
+    jc short 06a87h                           ; 72 06
+    jne short 06ab5h                          ; 75 32
     test bx, bx                               ; 85 db
-    jnbe short 06a61h                         ; 77 2e
+    jnbe short 06ab5h                         ; 77 2e
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 73 ac
+    call 016ach                               ; e8 1f 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 06a42h                               ; e2 fa
+    loop 06a96h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 016ach                               ; e8 5e ac
+    call 016ach                               ; e8 0a 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 06a55h                               ; e2 fa
+    loop 06aa9h                               ; 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 45 ac
+    call 016ach                               ; e8 f1 ab
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
     xor al, al                                ; 30 c0
@@ -9872,28 +9857,28 @@ _int15_function32:                           ; 0xf694f 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 06a74h                               ; e2 f8
+    loop 06ac8h                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 016ach                               ; e8 2a ac
+    call 016ach                               ; e8 d6 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 14 ac
+    call 016ach                               ; e8 c0 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 06b1dh                         ; 77 77
+    jnbe short 06b71h                         ; 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+0693bh]                   ; 2e ff a4 3b 69
+    jmp word [cs:si+0698fh]                   ; 2e ff a4 8f 69
     push strict byte 00001h                   ; 6a 01
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9903,10 +9888,10 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 0658bh                               ; e8 ba fa
+    call 065dfh                               ; 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 06c70h                           ; e9 92 01
+    jmp near 06cc4h                           ; e9 92 01
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9916,9 +9901,9 @@ _int15_function32:                           ; 0xf694f 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 0658bh                               ; e8 94 fa
+    call 065dfh                               ; e8 94 fa
     mov word [bp+014h], strict word 00002h    ; c7 46 14 02 00
-    jmp short 06ad6h                          ; eb d8
+    jmp short 06b2ah                          ; eb d8
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9928,18 +9913,18 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 0658bh                               ; e8 75 fa
+    call 065dfh                               ; e8 75 fa
     mov word [bp+014h], strict word 00003h    ; c7 46 14 03 00
-    jmp short 06ad6h                          ; eb b9
+    jmp short 06b2ah                          ; eb b9
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 fb ad
+    call 01923h                               ; e8 a7 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 30 ae
+    call 01966h                               ; e8 dc 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
@@ -9959,9 +9944,9 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 0658bh                               ; e8 28 fa
+    call 065dfh                               ; e8 28 fa
     mov word [bp+014h], strict word 00004h    ; c7 46 14 04 00
-    jmp near 06ad6h                           ; e9 6b ff
+    jmp near 06b2ah                           ; e9 6b ff
     push strict byte 00003h                   ; 6a 03
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9971,9 +9956,9 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov si, word [bp+024h]                    ; 8b 76 24
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 0658bh                               ; e8 0b fa
+    call 065dfh                               ; e8 0b fa
     mov word [bp+014h], strict word 00005h    ; c7 46 14 05 00
-    jmp near 06ad6h                           ; e9 4e ff
+    jmp near 06b2ah                           ; e9 4e ff
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9983,9 +9968,9 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fec0h                            ; b9 c0 fe
-    call 0658bh                               ; e8 e9 f9
+    call 065dfh                               ; e8 e9 f9
     mov word [bp+014h], strict word 00006h    ; c7 46 14 06 00
-    jmp near 06ad6h                           ; e9 2c ff
+    jmp near 06b2ah                           ; e9 2c ff
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -9995,9 +9980,9 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fee0h                            ; b9 e0 fe
-    call 0658bh                               ; e8 c7 f9
+    call 065dfh                               ; e8 c7 f9
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 06ad6h                           ; e9 0a ff
+    jmp near 06b2ah                           ; e9 0a ff
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -10007,19 +9992,19 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 0658bh                               ; e8 a7 f9
+    call 065dfh                               ; e8 a7 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06bf1h                          ; 75 07
+    jne short 06c45h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06c01h                           ; 74 10
+    je short 06c55h                           ; 74 10
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06ad6h                           ; e9 dd fe
+    jmp near 06b2ah                           ; e9 dd fe
     mov word [bp+014h], strict word 00008h    ; c7 46 14 08 00
-    jmp near 06ad6h                           ; e9 d5 fe
+    jmp near 06b2ah                           ; e9 d5 fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06c70h                          ; eb 67
+    jmp short 06cc4h                          ; eb 67
     push strict byte 00002h                   ; 6a 02
     push strict byte 00000h                   ; 6a 00
     push strict byte 00000h                   ; 6a 00
@@ -10029,21 +10014,21 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 0658bh                               ; e8 6b f9
+    call 065dfh                               ; e8 6b f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c2dh                          ; 75 07
+    jne short 06c81h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06c35h                           ; 74 08
+    je short 06c89h                           ; 74 08
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06ad6h                           ; e9 a1 fe
+    jmp near 06b2ah                           ; e9 a1 fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06c70h                          ; eb 33
+    jmp short 06cc4h                          ; eb 33
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c49h                          ; 75 06
+    jne short 06c9dh                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 06c70h                           ; 74 27
+    je short 06cc4h                           ; 74 27
     push strict byte 00001h                   ; 6a 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
     db  0feh, 0c0h
@@ -10057,7 +10042,7 @@ _int15_function32:                           ; 0xf694f LB 0x38a
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 0658bh                               ; e8 23 f9
+    call 065dfh                               ; e8 23 f9
     xor ax, ax                                ; 31 c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
@@ -10066,36 +10051,36 @@ _int15_function32:                           ; 0xf694f 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 06b47h                           ; e9 bc fe
+    jmp near 06b9bh                           ; e9 bc fe
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 016ach                               ; e8 18 aa
+    call 016ach                               ; e8 c4 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 0b aa
+    call 016ach                               ; e8 b7 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 06cb3h                          ; 76 05
+    jbe short 06d07h                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 016ach                               ; e8 f3 a9
+    call 016ach                               ; e8 9f 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 e6 a9
+    call 016ach                               ; e8 92 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 06b47h                           ; e9 6e fe
-_int15_blkmove:                              ; 0xf6cd9 LB 0x18a
+    jmp near 06b9bh                           ; e9 6e fe
+_int15_blkmove:                              ; 0xf6d2d LB 0x18a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10104,7 +10089,7 @@ _int15_blkmove:                              ; 0xf6cd9 LB 0x18a
     push ax                                   ; 50
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 0655bh                               ; e8 74 f8
+    call 065afh                               ; e8 74 f8
     mov di, ax                                ; 89 c7
     mov ax, word [bp+006h]                    ; 8b 46 06
     sal ax, 004h                              ; c1 e0 04
@@ -10114,7 +10099,7 @@ _int15_blkmove:                              ; 0xf6cd9 LB 0x18a
     shr dx, 00ch                              ; c1 ea 0c
     mov byte [bp-006h], dl                    ; 88 56 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 06d06h                          ; 73 05
+    jnc short 06d5ah                          ; 73 05
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
     mov byte [bp-006h], dl                    ; 88 56 fa
@@ -10122,53 +10107,53 @@ _int15_blkmove:                              ; 0xf6cd9 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 65 a9
+    call 0167ah                               ; e8 11 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 57 a9
+    call 0167ah                               ; e8 03 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 2a a9
+    call 0165eh                               ; e8 d6 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 1b a9
+    call 0165eh                               ; e8 c7 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 29 a9
+    call 0167ah                               ; e8 d5 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 1a a9
+    call 0167ah                               ; e8 c6 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 0c a9
+    call 0167ah                               ; e8 b8 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 e1 a8
+    call 0165eh                               ; e8 8d 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 d2 a8
+    call 0165eh                               ; e8 7e 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 e0 a8
+    call 0167ah                               ; e8 8c a8
     mov ax, ss                                ; 8c d0
     mov cx, ax                                ; 89 c1
     sal cx, 004h                              ; c1 e1 04
@@ -10178,28 +10163,28 @@ _int15_blkmove:                              ; 0xf6cd9 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 c4 a8
+    call 0167ah                               ; e8 70 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 b6 a8
+    call 0167ah                               ; e8 62 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 89 a8
+    call 0165eh                               ; e8 35 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 7a a8
+    call 0165eh                               ; e8 26 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 88 a8
+    call 0167ah                               ; e8 34 a8
     lea bx, [bp+004h]                         ; 8d 5e 04
     mov si, word [bp+00ah]                    ; 8b 76 0a
     mov es, [bp+006h]                         ; 8e 46 06
@@ -10209,7 +10194,7 @@ _int15_blkmove:                              ; 0xf6cd9 LB 0x18a
     mov ds, ax                                ; 8e d8
     mov word [00467h], bx                     ; 89 1e 67 04
     mov [00469h], ss                          ; 8c 16 69 04
-    call 06e0dh                               ; e8 00 00
+    call 06e61h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00020h                   ; 6a 20
@@ -10241,7 +10226,7 @@ _int15_blkmove:                              ; 0xf6cd9 LB 0x18a
     lidt [cs:0efe1h]                          ; 2e 0f 01 1e e1 ef
     int3                                      ; cc
     mov ax, di                                ; 89 f8
-    call 0655bh                               ; e8 08 f7
+    call 065afh                               ; e8 08 f7
     sti                                       ; fb
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
@@ -10250,7 +10235,7 @@ _int15_blkmove:                              ; 0xf6cd9 LB 0x18a
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_inv_op_handler:                             ; 0xf6e63 LB 0x19b
+_inv_op_handler:                             ; 0xf6eb7 LB 0x19b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10259,12 +10244,12 @@ _inv_op_handler:                             ; 0xf6e63 LB 0x19b
     push ax                                   ; 50
     les bx, [bp+018h]                         ; c4 5e 18
     cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
-    jne short 06e79h                          ; 75 06
+    jne short 06ecdh                          ; 75 06
     inc word [bp+018h]                        ; ff 46 18
-    jmp near 06ff7h                           ; e9 7e 01
+    jmp near 0704bh                           ; e9 7e 01
     cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
-    je short 06e83h                           ; 74 03
-    jmp near 06ff3h                           ; e9 70 01
+    je short 06ed7h                           ; 74 03
+    jmp near 07047h                           ; e9 70 01
     mov si, 00800h                            ; be 00 08
     xor ax, ax                                ; 31 c0
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -10293,11 +10278,11 @@ _inv_op_handler:                             ; 0xf6e63 LB 0x19b
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06ed4h                               ; e2 fa
+    loop 06f28h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06ee2h                          ; 75 04
+    jne short 06f36h                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06ee7h                           ; 74 05
+    je short 06f3bh                           ; 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
@@ -10308,11 +10293,11 @@ _inv_op_handler:                             ; 0xf6e63 LB 0x19b
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06efdh                               ; e2 fa
+    loop 06f51h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f0bh                          ; 75 04
+    jne short 06f5fh                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f0fh                           ; 74 04
+    je short 06f63h                           ; 74 04
     or byte [bp-008h], 002h                   ; 80 4e f8 02
     push strict byte 00000h                   ; 6a 00
     push 00800h                               ; 68 00 08
@@ -10366,10 +10351,10 @@ _inv_op_handler:                             ; 0xf6e63 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 06fb0h                            ; 0f 84 02 00
+    je near 07004h                            ; 0f 84 02 00
     mov es, ax                                ; 8e c0
     test cx, strict word 00002h               ; f7 c1 02 00
-    je near 06fd8h                            ; 0f 84 20 00
+    je near 0702ch                            ; 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
@@ -10386,144 +10371,144 @@ _inv_op_handler:                             ; 0xf6e63 LB 0x19b
     sub sp, strict byte 00006h                ; 83 ec 06
     mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
     iret                                      ; cf
-    jmp short 06ff7h                          ; eb 04
+    jmp short 0704bh                          ; eb 04
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 06ff4h                          ; eb fd
+    jmp short 07048h                          ; eb fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf6ffe LB 0x28
+init_rtc_:                                   ; 0xf7052 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 bc a6
+    call 016c7h                               ; e8 68 a6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 b3 a6
+    call 016c7h                               ; e8 5f a6
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016ach                               ; e8 92 a6
+    call 016ach                               ; e8 3e a6
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 016ach                               ; e8 8c a6
+    call 016ach                               ; e8 38 a6
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf7026 LB 0x21
+rtc_updating_:                               ; 0xf707a LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 0703eh                           ; 74 0e
+    je short 07092h                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016ach                               ; e8 76 a6
+    call 016ach                               ; e8 22 a6
     test AL, strict byte 080h                 ; a8 80
-    jne short 0702dh                          ; 75 f3
+    jne short 07081h                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 07041h                          ; eb 03
+    jmp short 07095h                          ; 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:                             ; 0xf7047 LB 0xbf
+_int70_function:                             ; 0xf709b 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 5a a6
+    call 016ach                               ; e8 06 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 4f a6
+    call 016ach                               ; e8 fb a5
     mov dl, al                                ; 88 c2
     test bl, 060h                             ; f6 c3 60
-    jne short 07067h                          ; 75 03
-    jmp near 070edh                           ; e9 86 00
+    jne short 070bbh                          ; 75 03
+    jmp near 07141h                           ; e9 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 0706fh                           ; 74 04
+    je short 070c3h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dl, 040h                             ; f6 c2 40
-    je short 070d7h                           ; 74 63
+    je short 0712bh                           ; 74 63
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01650h                               ; e8 d3 a5
+    call 01650h                               ; e8 7f a5
     test al, al                               ; 84 c0
-    je short 070edh                           ; 74 6c
+    je short 07141h                           ; 74 6c
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01688h                               ; e8 fe a5
+    call 01688h                               ; e8 aa a5
     test dx, dx                               ; 85 d2
-    jne short 070d9h                          ; 75 4b
+    jne short 0712dh                          ; 75 4b
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 070d9h                          ; 73 46
+    jnc short 0712dh                          ; 73 46
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 d0 a5
+    call 0166ch                               ; e8 7c a5
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 c5 a5
+    call 0166ch                               ; e8 71 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 aa a5
+    call 0165eh                               ; e8 56 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 05 a6
+    call 016c7h                               ; e8 b1 a5
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01650h                               ; e8 87 a5
+    call 01650h                               ; e8 33 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 87 a5
-    jmp short 070edh                          ; eb 14
+    call 0165eh                               ; e8 33 a5
+    jmp short 07141h                          ; 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 ad a5
-    call 0e030h                               ; e8 40 6f
+    call 0169ah                               ; e8 59 a5
+    call 0e030h                               ; e8 ec 6e
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    sbb AL, strict byte 071h                  ; 1c 71
-    inc bx                                    ; 43
-    jno short 07163h                          ; 71 68
-    jno short 070a1h                          ; 71 a4
-    jno short 070f5h                          ; 71 f6
-    jno short 0712eh                          ; 71 2d
-    jc short 07177h                           ; 72 74
-    jc short 070d4h                           ; 72 cf
-    db  072h
-_int1a_function:                             ; 0xf7106 LB 0x1d9
+    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
+    db  073h
+_int1a_function:                             ; 0xf715a 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 0716fh                         ; 77 5e
+    jnbe short 071c3h                         ; 77 5e
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+070f6h]                   ; 2e ff a7 f6 70
+    jmp word [cs:bx+0714ah]                   ; 2e ff a7 4a 71
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10538,7 +10523,7 @@ _int1a_function:                             ; 0xf7106 LB 0x1d9
     mov byte [bp+012h], al                    ; 88 46 12
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
-    jmp short 0716fh                          ; eb 2c
+    jmp short 071c3h                          ; eb 2c
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10552,23 +10537,23 @@ _int1a_function:                             ; 0xf7106 LB 0x1d9
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 0716fh                          ; eb 07
-    call 07026h                               ; e8 bb fe
+    jmp short 071c3h                          ; eb 07
+    call 0707ah                               ; e8 bb fe
     test ax, ax                               ; 85 c0
-    je short 07172h                           ; 74 03
-    jmp near 071a0h                           ; e9 2e 00
+    je short 071c6h                           ; 74 03
+    jmp near 071f4h                           ; e9 2e 00
     xor ax, ax                                ; 31 c0
-    call 016ach                               ; e8 35 a5
+    call 016ach                               ; e8 e1 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 016ach                               ; e8 2c a5
+    call 016ach                               ; e8 d8 a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 016ach                               ; e8 23 a5
+    call 016ach                               ; e8 cf 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 18 a5
+    call 016ach                               ; e8 c4 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
@@ -10576,24 +10561,24 @@ _int1a_function:                             ; 0xf7106 LB 0x1d9
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 07026h                               ; e8 7f fe
+    call 0707ah                               ; e8 7f fe
     test ax, ax                               ; 85 c0
-    je short 071aeh                           ; 74 03
-    call 06ffeh                               ; e8 50 fe
+    je short 07202h                           ; 74 03
+    call 07052h                               ; e8 50 fe
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     xor ax, ax                                ; 31 c0
-    call 016c7h                               ; e8 0f a5
+    call 016c7h                               ; e8 bb 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 04 a5
+    call 016c7h                               ; e8 b0 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 f9 a4
+    call 016c7h                               ; e8 a5 a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 d8 a4
+    call 016ach                               ; e8 84 a4
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
     or bl, 002h                               ; 80 cb 02
@@ -10603,78 +10588,78 @@ _int1a_function:                             ; 0xf7106 LB 0x1d9
     mov dl, bl                                ; 88 da
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 da a4
+    call 016c7h                               ; e8 86 a4
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp short 071a0h                          ; eb aa
+    jmp short 071f4h                          ; eb aa
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 07026h                               ; e8 29 fe
+    call 0707ah                               ; e8 29 fe
     test ax, ax                               ; 85 c0
-    je short 07203h                           ; 74 02
-    jmp short 071a0h                          ; eb 9d
+    je short 07257h                           ; 74 02
+    jmp short 071f4h                          ; eb 9d
     mov ax, strict word 00009h                ; b8 09 00
-    call 016ach                               ; e8 a3 a4
+    call 016ach                               ; e8 4f a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 016ach                               ; e8 9a a4
+    call 016ach                               ; e8 46 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 016ach                               ; e8 91 a4
+    call 016ach                               ; e8 3d a4
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 016ach                               ; e8 88 a4
+    call 016ach                               ; e8 34 a4
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 071a0h                           ; e9 73 ff
-    call 07026h                               ; e8 f6 fd
+    jmp near 071f4h                           ; e9 73 ff
+    call 0707ah                               ; e8 f6 fd
     test ax, ax                               ; 85 c0
-    je short 0723ah                           ; 74 06
-    call 06ffeh                               ; e8 c7 fd
-    jmp near 071a0h                           ; e9 66 ff
+    je short 0728eh                           ; 74 06
+    call 07052h                               ; e8 c7 fd
+    jmp near 071f4h                           ; 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 82 a4
+    call 016c7h                               ; e8 2e 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 77 a4
+    call 016c7h                               ; e8 23 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 6c a4
+    call 016c7h                               ; e8 18 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 61 a4
+    call 016c7h                               ; e8 0d a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 40 a4
+    call 016ach                               ; e8 ec a3
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 071e3h                           ; e9 6f ff
+    jmp near 07237h                           ; e9 6f ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 32 a4
+    call 016ach                               ; e8 de 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 07288h                           ; 74 03
-    jmp near 071a0h                           ; e9 18 ff
-    call 07026h                               ; e8 9b fd
+    je short 072dch                           ; 74 03
+    jmp near 071f4h                           ; e9 18 ff
+    call 0707ah                               ; e8 9b fd
     test ax, ax                               ; 85 c0
-    je short 07292h                           ; 74 03
-    call 06ffeh                               ; e8 6c fd
+    je short 072e6h                           ; 74 03
+    call 07052h                               ; 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 2a a4
+    call 016c7h                               ; e8 d6 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 1f a4
+    call 016c7h                               ; e8 cb 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 14 a4
+    call 016c7h                               ; e8 c0 a3
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10686,15 +10671,15 @@ _int1a_function:                             ; 0xf7106 LB 0x1d9
     or dl, 020h                               ; 80 ca 20
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c7h                               ; e8 fb a3
-    jmp near 071a0h                           ; e9 d1 fe
+    call 016c7h                               ; e8 a7 a3
+    jmp near 071f4h                           ; e9 d1 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016ach                               ; e8 d7 a3
+    call 016ach                               ; e8 83 a3
     mov bl, al                                ; 88 c3
     mov dl, al                                ; 88 c2
     and dl, 057h                              ; 80 e2 57
-    jmp near 071e5h                           ; e9 06 ff
-send_to_mouse_ctrl_:                         ; 0xf72df LB 0x34
+    jmp near 07239h                           ; e9 06 ff
+send_to_mouse_ctrl_:                         ; 0xf7333 LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10705,11 +10690,11 @@ send_to_mouse_ctrl_:                         ; 0xf72df LB 0x34
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 072feh                           ; 74 0e
+    je short 07352h                           ; 74 0e
     push 008eeh                               ; 68 ee 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 6b a6
+    call 01966h                               ; e8 17 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
     mov dx, strict word 00064h                ; ba 64 00
@@ -10723,7 +10708,7 @@ send_to_mouse_ctrl_:                         ; 0xf72df LB 0x34
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf7313 LB 0x5d
+get_mouse_data_:                             ; 0xf7367 LB 0x5d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10738,9 +10723,9 @@ get_mouse_data_:                             ; 0xf7313 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 07356h                           ; 74 28
+    je short 073aah                           ; 74 28
     test cx, cx                               ; 85 c9
-    je short 07356h                           ; 74 24
+    je short 073aah                           ; 74 24
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10757,13 +10742,13 @@ get_mouse_data_:                             ; 0xf7313 LB 0x5d
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cmp dx, ax                                ; 39 c2
-    je short 0733dh                           ; 74 ea
+    je short 07391h                           ; 74 ea
     dec cx                                    ; 49
-    jmp short 07320h                          ; eb ca
+    jmp short 07374h                          ; eb ca
     test cx, cx                               ; 85 c9
-    jne short 0735eh                          ; 75 04
+    jne short 073b2h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 07369h                          ; eb 0b
+    jmp short 073bdh                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10775,7 +10760,7 @@ get_mouse_data_:                             ; 0xf7313 LB 0x5d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf7370 LB 0x32
+set_kbd_command_byte_:                       ; 0xf73c4 LB 0x32
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10786,11 +10771,11 @@ set_kbd_command_byte_:                       ; 0xf7370 LB 0x32
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0738fh                           ; 74 0e
+    je short 073e3h                           ; 74 0e
     push 008f8h                               ; 68 f8 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 da a5
+    call 01966h                               ; e8 86 a5
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -10803,13 +10788,13 @@ set_kbd_command_byte_:                       ; 0xf7370 LB 0x32
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf73a2 LB 0xd2
+_int74_function:                             ; 0xf73f6 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 bb a2
+    call 0166ch                               ; e8 67 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
@@ -10818,7 +10803,7 @@ _int74_function:                             ; 0xf73a2 LB 0xd2
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne short 073e6h                          ; 75 22
+    jne short 0743ah                          ; 75 22
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10826,15 +10811,15 @@ _int74_function:                             ; 0xf73a2 LB 0xd2
     mov bl, al                                ; 88 c3
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 7c a2
+    call 01650h                               ; e8 28 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 71 a2
+    call 01650h                               ; e8 1d a2
     mov byte [bp-006h], al                    ; 88 46 fa
     test AL, strict byte 080h                 ; a8 80
-    jne short 073e9h                          ; 75 03
-    jmp near 07460h                           ; e9 77 00
+    jne short 0743dh                          ; 75 03
+    jmp near 074b4h                           ; 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
@@ -10848,113 +10833,113 @@ _int74_function:                             ; 0xf73a2 LB 0xd2
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 52 a2
+    call 0165eh                               ; e8 fe a1
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp al, byte [bp-004h]                    ; 3a 46 fc
-    jc short 07450h                           ; 72 3c
+    jc short 074a4h                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 34 a2
+    call 01650h                               ; e8 e0 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 27 a2
+    call 01650h                               ; e8 d3 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 1a a2
+    call 01650h                               ; e8 c6 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 07453h                           ; 74 0a
+    je short 074a7h                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 07453h                          ; eb 03
+    jmp short 074a7h                          ; 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 fe a1
+    call 0165eh                               ; e8 aa a1
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    mov BH, strict byte 074h                  ; b7 74
-    xor si, word [di-050h]                    ; 33 75 b0
-    jne short 074b0h                          ; 75 45
-    jbe short 0741eh                          ; 76 b1
-    jbe short 0746dh                          ; 76 fe
-    je short 0744ah                           ; 74 d9
-    jbe short 07411h                          ; 76 9e
+    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
     db  077h
-_int15_function_mouse:                       ; 0xf7474 LB 0x38d
+_int15_function_mouse:                       ; 0xf74c8 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 e8 a1
+    call 0166ch                               ; e8 94 a1
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 07497h                          ; 76 0b
+    jbe short 074ebh                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 077fbh                           ; e9 64 03
+    jmp near 0784fh                           ; e9 64 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 07370h                               ; e8 d3 fe
+    call 073c4h                               ; 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 0750ch                         ; 77 60
+    jnbe short 07560h                         ; 77 60
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     add si, ax                                ; 01 c6
-    jmp word [cs:si+07464h]                   ; 2e ff a4 64 74
+    jmp word [cs:si+074b8h]                   ; 2e ff a4 b8 74
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe short 0750fh                         ; 77 52
+    jnbe short 07563h                         ; 77 52
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 8b a1
+    call 01650h                               ; e8 37 a1
     test AL, strict byte 080h                 ; a8 80
-    jne short 074d4h                          ; 75 0b
+    jne short 07528h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 077f5h                           ; e9 21 03
+    jmp near 07849h                           ; e9 21 03
     cmp byte [bp+00dh], 000h                  ; 80 7e 0d 00
-    jne short 074deh                          ; 75 04
+    jne short 07532h                          ; 75 04
     mov AL, strict byte 0f5h                  ; b0 f5
-    jmp short 074e0h                          ; eb 02
+    jmp short 07534h                          ; eb 02
     mov AL, strict byte 0f4h                  ; b0 f4
     xor ah, ah                                ; 30 e4
-    call 072dfh                               ; e8 fa fd
+    call 07333h                               ; e8 fa fd
     test al, al                               ; 84 c0
-    jne short 07512h                          ; 75 29
+    jne short 07566h                          ; 75 29
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 22 fe
+    call 07367h                               ; e8 22 fe
     test al, al                               ; 84 c0
-    je short 074fbh                           ; 74 06
+    je short 0754fh                           ; 74 06
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    jne short 07512h                          ; 75 17
-    jmp near 077f5h                           ; e9 f7 02
+    jne short 07566h                          ; 75 17
+    jmp near 07849h                           ; e9 f7 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 07509h                           ; 72 04
+    jc short 0755dh                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 07515h                          ; 76 0c
-    jmp near 076a7h                           ; e9 9b 01
-    jmp near 077e2h                           ; e9 d3 02
-    jmp near 077edh                           ; e9 db 02
-    jmp near 07779h                           ; e9 64 02
+    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
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 33 a1
+    call 01650h                               ; e8 df a0
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
     ; dec ah                                    ; fe cc
@@ -10964,283 +10949,283 @@ _int15_function_mouse:                       ; 0xf7474 LB 0x38d
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 0165eh                               ; e8 2b a1
+    call 0165eh                               ; e8 d7 a0
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 15 a1
+    call 01650h                               ; e8 c1 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 14 a1
+    call 0165eh                               ; e8 c0 a0
     mov ax, 000ffh                            ; b8 ff 00
-    call 072dfh                               ; e8 8f fd
+    call 07333h                               ; e8 8f fd
     test al, al                               ; 84 c0
-    jne short 07512h                          ; 75 be
+    jne short 07566h                          ; 75 be
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07313h                               ; e8 b7 fd
+    call 07367h                               ; e8 b7 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-004h], 0feh                  ; 80 7e fc fe
-    jne short 0756eh                          ; 75 0a
+    jne short 075c2h                          ; 75 0a
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp short 074fbh                          ; eb 8d
+    jmp short 0754fh                          ; eb 8d
     cmp byte [bp-004h], 0fah                  ; 80 7e fc fa
-    je short 07585h                           ; 74 11
+    je short 075d9h                           ; 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 e4 a3
+    call 01966h                               ; e8 90 a3
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 07512h                          ; 75 89
+    jne short 07566h                          ; 75 89
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 82 fd
+    call 07367h                               ; e8 82 fd
     test al, al                               ; 84 c0
-    jne short 075ebh                          ; 75 56
+    jne short 0763fh                          ; 75 56
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07313h                               ; e8 76 fd
+    call 07367h                               ; e8 76 fd
     test al, al                               ; 84 c0
-    jne short 075ebh                          ; 75 4a
+    jne short 0763fh                          ; 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 077f5h                           ; e9 45 02
+    jmp near 07849h                           ; e9 45 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 075c7h                           ; 72 10
-    jbe short 075e5h                          ; 76 2c
+    jc short 0761bh                           ; 72 10
+    jbe short 07639h                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 075fah                           ; 74 3d
+    je short 0764eh                           ; 74 3d
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 075f4h                           ; 74 33
+    je short 07648h                           ; 74 33
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 075eeh                           ; 74 29
-    jmp short 07600h                          ; eb 39
+    je short 07642h                           ; 74 29
+    jmp short 07654h                          ; eb 39
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 075dfh                           ; 74 14
+    je short 07633h                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 075d9h                           ; 74 0a
+    je short 0762dh                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 07600h                          ; 75 2d
+    jne short 07654h                          ; 75 2d
     mov byte [bp-008h], 00ah                  ; c6 46 f8 0a
-    jmp short 07604h                          ; eb 2b
+    jmp short 07658h                          ; eb 2b
     mov byte [bp-008h], 014h                  ; c6 46 f8 14
-    jmp short 07604h                          ; eb 25
+    jmp short 07658h                          ; eb 25
     mov byte [bp-008h], 028h                  ; c6 46 f8 28
-    jmp short 07604h                          ; eb 1f
+    jmp short 07658h                          ; eb 1f
     mov byte [bp-008h], 03ch                  ; c6 46 f8 3c
-    jmp short 07604h                          ; eb 19
-    jmp near 07779h                           ; e9 8b 01
+    jmp short 07658h                          ; eb 19
+    jmp near 077cdh                           ; e9 8b 01
     mov byte [bp-008h], 050h                  ; c6 46 f8 50
-    jmp short 07604h                          ; eb 10
+    jmp short 07658h                          ; eb 10
     mov byte [bp-008h], 064h                  ; c6 46 f8 64
-    jmp short 07604h                          ; eb 0a
+    jmp short 07658h                          ; eb 0a
     mov byte [bp-008h], 0c8h                  ; c6 46 f8 c8
-    jmp short 07604h                          ; eb 04
+    jmp short 07658h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jbe short 0763ah                          ; 76 30
+    jbe short 0768eh                          ; 76 30
     mov ax, 000f3h                            ; b8 f3 00
-    call 072dfh                               ; e8 cf fc
+    call 07333h                               ; e8 cf fc
     test al, al                               ; 84 c0
-    jne short 0762fh                          ; 75 1b
+    jne short 07683h                          ; 75 1b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07313h                               ; e8 f7 fc
+    call 07367h                               ; e8 f7 fc
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
-    call 072dfh                               ; e8 bb fc
+    call 07333h                               ; e8 bb fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07313h                               ; e8 e7 fc
-    jmp near 077f5h                           ; e9 c6 01
+    call 07367h                               ; e8 e7 fc
+    jmp near 07849h                           ; 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 077f5h                           ; e9 bb 01
+    jmp near 07849h                           ; 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 077f5h                           ; e9 b0 01
+    jmp near 07849h                           ; e9 b0 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 076a7h                          ; 73 5c
+    jnc short 076fbh                          ; 73 5c
     mov ax, 000e8h                            ; b8 e8 00
-    call 072dfh                               ; e8 8e fc
+    call 07333h                               ; e8 8e fc
     test al, al                               ; 84 c0
-    jne short 0769dh                          ; 75 48
+    jne short 076f1h                          ; 75 48
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 b6 fc
+    call 07367h                               ; e8 b6 fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07674h                           ; 74 11
+    je short 076c8h                           ; 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 f5 a2
+    call 01966h                               ; e8 a1 a2
     add sp, strict byte 00006h                ; 83 c4 06
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     xor ah, ah                                ; 30 e4
-    call 072dfh                               ; e8 63 fc
+    call 07333h                               ; e8 63 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 8f fc
+    call 07367h                               ; e8 8f fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 076d6h                           ; 74 4c
+    je short 0772ah                           ; 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 ce a2
+    call 01966h                               ; e8 7a a2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 076d6h                          ; eb 39
+    jmp short 0772ah                          ; eb 39
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 076d6h                          ; eb 2f
+    jmp short 0772ah                          ; eb 2f
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp short 076d6h                          ; eb 25
+    jmp short 0772ah                          ; eb 25
     mov ax, 000f2h                            ; b8 f2 00
-    call 072dfh                               ; e8 28 fc
+    call 07333h                               ; e8 28 fc
     test al, al                               ; 84 c0
-    jne short 076ceh                          ; 75 13
+    jne short 07722h                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 50 fc
+    call 07367h                               ; e8 50 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07313h                               ; e8 48 fc
-    jmp near 075a7h                           ; e9 d9 fe
+    call 07367h                               ; e8 48 fc
+    jmp near 075fbh                           ; 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 077f5h                           ; e9 1c 01
+    jmp near 07849h                           ; e9 1c 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 076e7h                          ; 76 07
+    jbe short 0773bh                          ; 76 07
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 0774eh                          ; 76 6a
-    jmp near 07783h                           ; e9 9c 00
+    jbe short 077a2h                          ; 76 6a
+    jmp near 077d7h                           ; e9 9c 00
     mov ax, 000e9h                            ; b8 e9 00
-    call 072dfh                               ; e8 f2 fb
+    call 07333h                               ; e8 f2 fb
     test al, al                               ; 84 c0
-    jne short 07757h                          ; 75 66
+    jne short 077abh                          ; 75 66
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 1a fc
+    call 07367h                               ; e8 1a fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07712h                           ; 74 11
+    je short 07766h                           ; 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 57 a2
+    call 01966h                               ; e8 03 a2
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 07779h                          ; 75 63
+    jne short 077cdh                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 f5 fb
+    call 07367h                               ; e8 f5 fb
     test al, al                               ; 84 c0
-    jne short 07779h                          ; 75 57
+    jne short 077cdh                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07313h                               ; e8 e9 fb
+    call 07367h                               ; e8 e9 fb
     test al, al                               ; 84 c0
-    jne short 07779h                          ; 75 4b
+    jne short 077cdh                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07313h                               ; e8 dd fb
+    call 07367h                               ; e8 dd fb
     test al, al                               ; 84 c0
-    jne short 07779h                          ; 75 3f
+    jne short 077cdh                          ; 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 076d6h                          ; eb 88
+    jmp short 0772ah                          ; eb 88
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 07759h                          ; 75 07
+    jne short 077adh                          ; 75 07
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 0775ch                          ; eb 05
-    jmp short 07779h                          ; eb 20
+    jmp short 077b0h                          ; eb 05
+    jmp short 077cdh                          ; eb 20
     mov ax, 000e7h                            ; b8 e7 00
-    call 072dfh                               ; e8 80 fb
+    call 07333h                               ; e8 80 fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 07775h                          ; 75 10
+    jne short 077c9h                          ; 75 10
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07313h                               ; e8 a6 fb
+    call 07367h                               ; e8 a6 fb
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07775h                           ; 74 02
+    je short 077c9h                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je short 077e0h                           ; 74 67
+    je short 07834h                           ; 74 67
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 077e0h                          ; eb 5d
+    jmp short 07834h                          ; 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 d5 a1
+    call 01966h                               ; e8 81 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 077f5h                          ; eb 57
+    jmp short 07849h                          ; 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 cf 9e
+    call 0167ah                               ; e8 7b 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 c4 9e
+    call 0167ah                               ; e8 70 9e
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01650h                               ; e8 92 9e
+    call 01650h                               ; e8 3e 9e
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 077d2h                          ; 75 0e
+    jne short 07826h                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 077d2h                          ; 75 08
+    jne short 07826h                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 077d4h                           ; 74 06
+    je short 07828h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 077d4h                          ; eb 02
+    jmp short 07828h                          ; 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 7e 9e
-    jmp short 077f5h                          ; eb 13
+    call 0165eh                               ; e8 2a 9e
+    jmp short 07849h                          ; eb 13
     push 00974h                               ; 68 74 09
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 7c a1
+    call 01966h                               ; e8 28 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 07370h                               ; e8 75 fb
+    call 073c4h                               ; e8 75 fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf7801 LB 0xaf
+_int17_function:                             ; 0xf7855 LB 0xaf
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11250,26 +11235,26 @@ _int17_function:                             ; 0xf7801 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 57 9e
+    call 0166ch                               ; e8 03 9e
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc short 0782bh                          ; 73 0c
+    jnc short 0787fh                          ; 73 0c
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc short 0782bh                          ; 73 04
+    jnc short 0787fh                          ; 73 04
     test bx, bx                               ; 85 db
-    jnbe short 0782eh                         ; 77 03
-    jmp near 078a6h                           ; e9 78 00
+    jnbe short 07882h                         ; 77 03
+    jmp near 078fah                           ; 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 17 9e
+    call 01650h                               ; e8 c3 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 07872h                          ; 75 2c
+    jne short 078c6h                          ; 75 2c
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11289,13 +11274,13 @@ _int17_function:                             ; 0xf7801 LB 0xaf
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 07872h                           ; 74 07
+    je short 078c6h                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 07872h                           ; 74 03
+    je short 078c6h                           ; 74 03
     dec cx                                    ; 49
-    jmp short 07861h                          ; eb ef
+    jmp short 078b5h                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 0788dh                          ; 75 15
+    jne short 078e1h                          ; 75 15
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -11314,16 +11299,16 @@ _int17_function:                             ; 0xf7801 LB 0xaf
     xor AL, strict byte 048h                  ; 34 48
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 078a0h                          ; 75 04
+    jne short 078f4h                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 078aah                          ; eb 04
+    jmp short 078feh                          ; 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_:                                       ; 0xf78b0 LB 0xaf
+wait_:                                       ; 0xf7904 LB 0xaf
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11341,28 +11326,28 @@ wait_:                                       ; 0xf78b0 LB 0xaf
     xor cx, cx                                ; 31 c9
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 01688h                               ; e8 b5 9d
+    call 01688h                               ; e8 61 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 a7 9d
+    call 01688h                               ; e8 53 9d
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 078f1h                         ; 77 07
-    jne short 078f8h                          ; 75 0c
+    jnbe short 07945h                         ; 77 07
+    jne short 0794ch                          ; 75 0c
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jbe short 078f8h                          ; 76 07
+    jbe short 0794ch                          ; 76 07
     sub ax, word [bp-010h]                    ; 2b 46 f0
     sbb dx, bx                                ; 19 da
-    jmp short 07903h                          ; eb 0b
+    jmp short 07957h                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 07903h                           ; 72 07
-    jne short 07907h                          ; 75 09
+    jc short 07957h                           ; 72 07
+    jne short 0795bh                          ; 75 09
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    jnc short 07907h                          ; 73 04
+    jnc short 0795bh                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -11370,13 +11355,13 @@ wait_:                                       ; 0xf78b0 LB 0xaf
     mov bx, di                                ; 89 fb
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je short 0791bh                           ; 74 05
+    je short 0796fh                           ; 74 05
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 0791dh                           ; e9 02 00
+    jmp near 07971h                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 07944h                           ; 74 23
+    je short 07998h                           ; 74 23
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     int 016h                                  ; cd 16
@@ -11387,17 +11372,17 @@ wait_:                                       ; 0xf78b0 LB 0xaf
     push ax                                   ; 50
     push 00996h                               ; 68 96 09
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 2f a0
+    call 01966h                               ; e8 db 9f
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 07944h                           ; 74 04
+    je short 07998h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 07956h                          ; eb 12
+    jmp short 079aah                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 078d8h                         ; 7f 90
-    jne short 0794eh                          ; 75 04
+    jnle short 0792ch                         ; 7f 90
+    jne short 079a2h                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 078d8h                         ; 77 8a
+    jnbe short 0792ch                         ; 77 8a
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     push ax                                   ; 50
     popfw                                     ; 9d
@@ -11409,7 +11394,7 @@ wait_:                                       ; 0xf78b0 LB 0xaf
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf795f LB 0x16
+read_logo_byte_:                             ; 0xf79b3 LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11424,7 +11409,7 @@ read_logo_byte_:                             ; 0xf795f LB 0x16
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf7975 LB 0x14
+read_logo_word_:                             ; 0xf79c9 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11437,7 +11422,7 @@ read_logo_word_:                             ; 0xf7975 LB 0x14
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf7989 LB 0x13a
+print_detected_harddisks_:                   ; 0xf79dd LB 0x13a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11449,31 +11434,31 @@ print_detected_harddisks_:                   ; 0xf7989 LB 0x13a
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 d0 9c
+    call 0166ch                               ; e8 7c 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 a4 9c
+    call 01650h                               ; e8 50 9c
     mov byte [bp-00ch], al                    ; 88 46 f4
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp-00ch]                    ; 3a 5e f4
-    jnc short 07a13h                          ; 73 5d
+    jnc short 07a67h                          ; 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 8b 9c
+    call 01650h                               ; e8 37 9c
     mov bh, al                                ; 88 c7
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 079f0h                           ; 72 25
+    jc short 07a44h                           ; 72 25
     test cl, cl                               ; 84 c9
-    jne short 079dch                          ; 75 0d
+    jne short 07a30h                          ; 75 0d
     push 009a7h                               ; 68 a7 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 8f 9f
+    call 01966h                               ; e8 3b 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     mov al, bl                                ; 88 d8
@@ -11482,38 +11467,38 @@ print_detected_harddisks_:                   ; 0xf7989 LB 0x13a
     push ax                                   ; 50
     push 009bch                               ; 68 bc 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 7c 9f
+    call 01966h                               ; e8 28 9f
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07a90h                           ; e9 a0 00
+    jmp near 07ae4h                           ; e9 a0 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 07a07h                           ; 72 13
+    jc short 07a5bh                           ; 72 13
     test ch, ch                               ; 84 ed
-    jne short 07a05h                          ; 75 0d
+    jne short 07a59h                          ; 75 0d
     push 009cfh                               ; 68 cf 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 66 9f
+    call 01966h                               ; e8 12 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
-    jmp short 079dch                          ; eb d5
+    jmp short 07a30h                          ; eb d5
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 07a27h                          ; 73 1c
+    jnc short 07a7bh                          ; 73 1c
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 07a16h                           ; 74 05
-    jmp short 07a27h                          ; eb 14
-    jmp near 07a95h                           ; e9 7f 00
+    je short 07a6ah                           ; 74 05
+    jmp short 07a7bh                          ; eb 14
+    jmp near 07ae9h                           ; e9 7f 00
     push 009e4h                               ; 68 e4 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 48 9f
+    call 01966h                               ; e8 f4 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07a3dh                          ; eb 16
+    jmp short 07a91h                          ; eb 16
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07a3dh                           ; 72 11
+    jc short 07a91h                           ; 72 11
     test cl, cl                               ; 84 c9
-    jne short 07a3dh                          ; 75 0d
+    jne short 07a91h                          ; 75 0d
     push 009f6h                               ; 68 f6 09
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 2e 9f
+    call 01966h                               ; e8 da 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     mov al, bl                                ; 88 d8
@@ -11522,10 +11507,10 @@ print_detected_harddisks_:                   ; 0xf7989 LB 0x13a
     push ax                                   ; 50
     push 00a0ah                               ; 68 0a 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 1b 9f
+    call 01966h                               ; e8 c7 9e
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07a56h                           ; 72 03
+    jc short 07aaah                           ; 72 03
     sub bh, 004h                              ; 80 ef 04
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
@@ -11534,12 +11519,12 @@ print_detected_harddisks_:                   ; 0xf7989 LB 0x13a
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07a68h                           ; 74 05
+    je short 07abch                           ; 74 05
     push 00a14h                               ; 68 14 0a
-    jmp short 07a6bh                          ; eb 03
+    jmp short 07abfh                          ; eb 03
     push 00a1fh                               ; 68 1f 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 f6 9e
+    call 01966h                               ; e8 a2 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
@@ -11547,29 +11532,29 @@ print_detected_harddisks_:                   ; 0xf7989 LB 0x13a
     cwd                                       ; 99
     idiv di                                   ; f7 ff
     test dx, dx                               ; 85 d2
-    je short 07a86h                           ; 74 05
+    je short 07adah                           ; 74 05
     push 00a28h                               ; 68 28 0a
-    jmp short 07a89h                          ; eb 03
+    jmp short 07addh                          ; eb 03
     push 00a2eh                               ; 68 2e 0a
     push di                                   ; 57
-    call 01966h                               ; e8 d9 9e
+    call 01966h                               ; e8 85 9e
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp near 079b1h                           ; e9 1c ff
+    jmp near 07a05h                           ; e9 1c ff
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 07aaeh                          ; 75 13
+    jne short 07b02h                          ; 75 13
     test cl, cl                               ; 84 c9
-    jne short 07aaeh                          ; 75 0f
+    jne short 07b02h                          ; 75 0f
     test ch, ch                               ; 84 ed
-    jne short 07aaeh                          ; 75 0b
+    jne short 07b02h                          ; 75 0b
     push 00a35h                               ; 68 35 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 bb 9e
+    call 01966h                               ; e8 67 9e
     add sp, strict byte 00004h                ; 83 c4 04
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 b0 9e
+    call 01966h                               ; e8 5c 9e
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -11579,7 +11564,7 @@ print_detected_harddisks_:                   ; 0xf7989 LB 0x13a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf7ac3 LB 0x28
+get_boot_drive_:                             ; 0xf7b17 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11587,12 +11572,12 @@ get_boot_drive_:                             ; 0xf7ac3 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 99 9b
+    call 0166ch                               ; e8 45 9b
     mov dx, 00304h                            ; ba 04 03
-    call 01650h                               ; e8 77 9b
+    call 01650h                               ; e8 23 9b
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 07ae2h                           ; 72 02
+    jc short 07b36h                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11600,7 +11585,7 @@ get_boot_drive_:                             ; 0xf7ac3 LB 0x28
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf7aeb LB 0x226
+show_logo_:                                  ; 0xf7b3f LB 0x226
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11611,7 +11596,7 @@ show_logo_:                                  ; 0xf7aeb 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 6d 9b
+    call 0166ch                               ; e8 19 9b
     mov si, ax                                ; 89 c6
     xor cl, cl                                ; 30 c9
     xor dx, dx                                ; 31 d2
@@ -11623,9 +11608,9 @@ show_logo_:                                  ; 0xf7aeb LB 0x226
     out strict byte 040h, AL                  ; e6 40
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
-    call 07975h                               ; e8 5d fe
+    call 079c9h                               ; e8 5d fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne short 07b2fh                          ; 75 12
+    jne short 07b83h                          ; 75 12
     push SS                                   ; 16
     pop ES                                    ; 07
     lea di, [bp-016h]                         ; 8d 7e ea
@@ -11633,123 +11618,123 @@ show_logo_:                                  ; 0xf7aeb LB 0x226
     int 010h                                  ; cd 10
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    je short 07b32h                           ; 74 03
-    jmp near 07befh                           ; e9 bd 00
+    je short 07b86h                           ; 74 03
+    jmp near 07c43h                           ; e9 bd 00
     mov al, dl                                ; 88 d0
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 0795fh                               ; e8 24 fe
+    call 079b3h                               ; 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 0795fh                               ; e8 16 fe
+    call 079b3h                               ; 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 07975h                               ; e8 1e fe
+    call 079c9h                               ; 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 0795fh                               ; e8 fa fd
+    call 079b3h                               ; e8 fa fd
     mov byte [bp-00eh], al                    ; 88 46 f2
     test ch, ch                               ; 84 ed
-    jne short 07b74h                          ; 75 08
+    jne short 07bc8h                          ; 75 08
     test dh, dh                               ; 84 f6
-    jne short 07b74h                          ; 75 04
+    jne short 07bc8h                          ; 75 04
     test bx, bx                               ; 85 db
-    je short 07bcch                           ; 74 58
+    je short 07c20h                           ; 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 07ba5h                           ; 74 23
+    je short 07bf9h                           ; 74 23
     xor bx, bx                                ; 31 db
-    jmp short 07b8ch                          ; eb 06
+    jmp short 07be0h                          ; eb 06
     inc bx                                    ; 43
     cmp bx, strict byte 00010h                ; 83 fb 10
-    jnbe short 07bach                         ; 77 20
+    jnbe short 07c00h                         ; 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 078b0h                               ; e8 13 fd
+    call 07904h                               ; e8 13 fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07b86h                          ; 75 e5
+    jne short 07bdah                          ; 75 e5
     mov CL, strict byte 001h                  ; b1 01
-    jmp short 07bach                          ; eb 07
+    jmp short 07c00h                          ; 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 07bc2h                          ; 75 12
+    jne short 07c16h                          ; 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 078b0h                               ; e8 f4 fc
+    call 07904h                               ; e8 f4 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bc2h                          ; 75 02
+    jne short 07c16h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    je short 07befh                           ; 74 27
+    je short 07c43h                           ; 74 27
     test cl, cl                               ; 84 c9
-    je short 07bceh                           ; 74 02
-    jmp short 07befh                          ; eb 21
+    je short 07c22h                           ; 74 02
+    jmp short 07c43h                          ; eb 21
     mov bx, strict word 00010h                ; bb 10 00
-    jmp short 07bd8h                          ; eb 05
+    jmp short 07c2ch                          ; eb 05
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 07befh                          ; 76 17
+    jbe short 07c43h                          ; 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 078b0h                               ; e8 c7 fc
+    call 07904h                               ; e8 c7 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bd3h                          ; 75 e6
+    jne short 07c27h                          ; 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 65 9a
+    call 0165eh                               ; e8 11 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 07c19h                           ; 74 14
+    je short 07c6dh                           ; 74 14
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jne short 07c40h                          ; 75 35
+    jne short 07c94h                          ; 75 35
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    jne short 07c40h                          ; 75 2f
+    jne short 07c94h                          ; 75 2f
     cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    je short 07c1ch                           ; 74 05
-    jmp short 07c40h                          ; eb 27
-    jmp near 07cf4h                           ; e9 d8 00
+    je short 07c70h                           ; 74 05
+    jmp short 07c94h                          ; eb 27
+    jmp near 07d48h                           ; e9 d8 00
     cmp byte [bp-00eh], 002h                  ; 80 7e f2 02
-    jne short 07c2dh                          ; 75 0b
+    jne short 07c81h                          ; 75 0b
     push 00a4bh                               ; 68 4b 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 3c 9d
+    call 01966h                               ; e8 e8 9c
     add sp, strict byte 00004h                ; 83 c4 04
     test cl, cl                               ; 84 c9
-    jne short 07c40h                          ; 75 0f
+    jne short 07c94h                          ; 75 0f
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 078b0h                               ; e8 76 fc
+    call 07904h                               ; e8 76 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c40h                          ; 75 02
+    jne short 07c94h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je short 07c19h                           ; 74 d5
+    je short 07c6dh                           ; 74 d5
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     mov ax, 00100h                            ; b8 00 01
     mov cx, 01000h                            ; b9 00 10
@@ -11768,57 +11753,57 @@ show_logo_:                                  ; 0xf7aeb LB 0x226
     int 010h                                  ; cd 10
     push 00a6dh                               ; 68 6d 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 f9 9c
+    call 01966h                               ; e8 a5 9c
     add sp, strict byte 00004h                ; 83 c4 04
-    call 07989h                               ; e8 16 fd
+    call 079ddh                               ; e8 16 fd
     push 00ab1h                               ; 68 b1 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 eb 9c
+    call 01966h                               ; e8 97 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 078b0h                               ; e8 29 fc
+    call 07904h                               ; e8 29 fc
     mov bl, al                                ; 88 c3
     test al, al                               ; 84 c0
-    je short 07c7eh                           ; 74 f1
+    je short 07cd2h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 07ce1h                           ; 74 50
+    je short 07d35h                           ; 74 50
     cmp bl, 002h                              ; 80 fb 02
-    jc short 07cbah                           ; 72 24
+    jc short 07d0eh                           ; 72 24
     cmp bl, 009h                              ; 80 fb 09
-    jnbe short 07cbah                         ; 77 1f
+    jnbe short 07d0eh                         ; 77 1f
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
-    call 07ac3h                               ; e8 21 fe
+    call 07b17h                               ; e8 21 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 07ca8h                          ; 75 02
-    jmp short 07c7eh                          ; eb d6
+    jne short 07cfch                          ; 75 02
+    jmp short 07cd2h                          ; 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 aa 99
+    call 0165eh                               ; e8 56 99
     mov byte [bp-00ch], 002h                  ; c6 46 f4 02
-    jmp short 07ce1h                          ; eb 27
+    jmp short 07d35h                          ; eb 27
     cmp bl, 02eh                              ; 80 fb 2e
-    je short 07ccfh                           ; 74 10
+    je short 07d23h                           ; 74 10
     cmp bl, 026h                              ; 80 fb 26
-    je short 07cd5h                           ; 74 11
+    je short 07d29h                           ; 74 11
     cmp bl, 021h                              ; 80 fb 21
-    jne short 07cdbh                          ; 75 12
+    jne short 07d2fh                          ; 75 12
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07ce1h                          ; eb 12
+    jmp short 07d35h                          ; eb 12
     mov byte [bp-00ch], 003h                  ; c6 46 f4 03
-    jmp short 07ce1h                          ; eb 0c
+    jmp short 07d35h                          ; eb 0c
     mov byte [bp-00ch], 004h                  ; c6 46 f4 04
-    jmp short 07ce1h                          ; eb 06
+    jmp short 07d35h                          ; eb 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 07c7eh                           ; 74 9d
+    je short 07cd2h                           ; 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 70 99
+    call 0165eh                               ; e8 1c 99
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
@@ -11831,7 +11816,7 @@ show_logo_:                                  ; 0xf7aeb LB 0x226
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 ba 70
+    call 0edbfh                               ; e8 66 70
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -11842,7 +11827,7 @@ show_logo_:                                  ; 0xf7aeb LB 0x226
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf7d11 LB 0x6b
+delay_boot_:                                 ; 0xf7d65 LB 0x6b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11852,7 +11837,7 @@ delay_boot_:                                 ; 0xf7d11 LB 0x6b
     push di                                   ; 57
     mov dx, ax                                ; 89 c2
     test ax, ax                               ; 85 c0
-    je short 07d72h                           ; 74 53
+    je short 07dc6h                           ; 74 53
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
     mov AL, strict byte 0d3h                  ; b0 d3
@@ -11862,24 +11847,24 @@ delay_boot_:                                 ; 0xf7d11 LB 0x6b
     push dx                                   ; 52
     push 00afbh                               ; 68 fb 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 32 9c
+    call 01966h                               ; e8 de 9b
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, dx                                ; 89 d3
     test bx, bx                               ; 85 db
-    jbe short 07d54h                          ; 76 17
+    jbe short 07da8h                          ; 76 17
     push bx                                   ; 53
     push 00b19h                               ; 68 19 0b
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 20 9c
+    call 01966h                               ; e8 cc 9b
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 078b0h                               ; e8 5f fb
+    call 07904h                               ; e8 5f fb
     dec bx                                    ; 4b
-    jmp short 07d39h                          ; eb e5
+    jmp short 07d8dh                          ; eb e5
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 01966h                               ; e8 0a 9c
+    call 01966h                               ; e8 b6 9b
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -11890,7 +11875,7 @@ delay_boot_:                                 ; 0xf7d11 LB 0x6b
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 4f 70
+    call 0edbfh                               ; e8 fb 6f
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -11901,7 +11886,7 @@ delay_boot_:                                 ; 0xf7d11 LB 0x6b
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7d7c LB 0xd5
+scsi_cmd_data_in_:                           ; 0xf7dd0 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11917,12 +11902,12 @@ scsi_cmd_data_in_:                           ; 0xf7d7c LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07d92h                          ; 75 f7
+    jne short 07de6h                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07da6h                          ; 75 04
+    jne short 07dfah                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07da8h                          ; eb 02
+    jmp short 07dfch                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
     mov ax, bx                                ; 89 d8
@@ -11930,7 +11915,7 @@ scsi_cmd_data_in_:                           ; 0xf7d7c LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07db2h                               ; e2 fa
+    loop 07e06h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, di                                 ; 09 f9
@@ -11948,29 +11933,29 @@ scsi_cmd_data_in_:                           ; 0xf7d7c LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07dd7h                               ; e2 fa
+    loop 07e2bh                               ; 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 07df9h                          ; 73 0e
+    jnc short 07e4dh                          ; 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 07de2h                          ; eb e9
+    jmp short 07e36h                          ; 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 07df9h                          ; 75 f7
+    jne short 07e4dh                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07e14h                           ; 74 0e
+    je short 07e68h                           ; 74 0e
     lea dx, [si+003h]                         ; 8d 54 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -11978,12 +11963,12 @@ scsi_cmd_data_in_:                           ; 0xf7d7c LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov di, strict word 00004h                ; bf 04 00
-    jmp short 07e46h                          ; eb 32
+    jmp short 07e9ah                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07e23h                          ; 75 06
+    jne short 07e77h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07e3dh                          ; 76 1a
+    jbe short 07e91h                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -11992,7 +11977,7 @@ scsi_cmd_data_in_:                           ; 0xf7d7c LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07e14h                          ; eb d7
+    jmp short 07e68h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -12003,7 +11988,7 @@ scsi_cmd_data_in_:                           ; 0xf7d7c LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
+scsi_cmd_data_out_:                          ; 0xf7ea5 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12019,12 +12004,12 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07e67h                          ; 75 f7
+    jne short 07ebbh                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07e7bh                          ; 75 04
+    jne short 07ecfh                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07e7dh                          ; eb 02
+    jmp short 07ed1h                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     mov ax, bx                                ; 89 d8
@@ -12032,7 +12017,7 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e87h                               ; e2 fa
+    loop 07edbh                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, si                                 ; 09 f1
@@ -12050,26 +12035,26 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07each                               ; e2 fa
+    loop 07f00h                               ; 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 07eceh                          ; 73 0e
+    jnc short 07f22h                          ; 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 07eb7h                          ; eb e9
+    jmp short 07f0bh                          ; eb e9
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07eddh                          ; 75 06
+    jne short 07f31h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07ef8h                          ; 76 1b
+    jbe short 07f4ch                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12079,7 +12064,7 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07eceh                          ; eb d6
+    jmp short 07f22h                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12089,9 +12074,9 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07f00h                          ; 75 f7
+    jne short 07f54h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07f1bh                           ; 74 0e
+    je short 07f6fh                           ; 74 0e
     lea dx, [di+003h]                         ; 8d 55 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12099,14 +12084,14 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 07f1dh                          ; eb 02
+    jmp short 07f71h                          ; 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:                          ; 0xf7f26 LB 0xe0
+ at scsi_read_sectors:                          ; 0xf7f7a LB 0xe0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12118,13 +12103,13 @@ scsi_cmd_data_out_:                          ; 0xf7e51 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 07f52h                          ; 76 11
+    jbe short 07fa6h                          ; 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 17 9a
+    call 01966h                               ; e8 c3 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
@@ -12164,7 +12149,7 @@ scsi_cmd_data_out_:                          ; 0xf7e51 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 07fbch                               ; e2 f8
+    loop 08010h                               ; 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
@@ -12173,10 +12158,10 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07d7ch                               ; e8 9e fd
+    call 07dd0h                               ; e8 9e fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07ff9h                          ; 75 15
+    jne short 0804dh                          ; 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
@@ -12190,7 +12175,7 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at scsi_write_sectors:                         ; 0xf8006 LB 0xe0
+ at scsi_write_sectors:                         ; 0xf805a LB 0xe0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12202,13 +12187,13 @@ scsi_cmd_data_out_:                          ; 0xf7e51 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 08032h                          ; 76 11
+    jbe short 08086h                          ; 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 37 99
+    call 01966h                               ; e8 e3 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
@@ -12248,7 +12233,7 @@ scsi_cmd_data_out_:                          ; 0xf7e51 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 0809ch                               ; e2 f8
+    loop 080f0h                               ; 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
@@ -12257,10 +12242,10 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07e51h                               ; e8 93 fd
+    call 07ea5h                               ; e8 93 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 080d9h                          ; 75 15
+    jne short 0812dh                          ; 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
@@ -12274,7 +12259,7 @@ scsi_cmd_data_out_:                          ; 0xf7e51 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf80e6 LB 0x168
+scsi_cmd_packet_:                            ; 0xf813a LB 0x168
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12286,22 +12271,22 @@ scsi_cmd_packet_:                            ; 0xf80e6 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 6a 95
+    call 0166ch                               ; e8 16 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 0812dh                          ; 75 1f
+    jne short 08181h                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 0a 98
+    call 01923h                               ; e8 b6 97
     push 00b62h                               ; 68 62 0b
     push 00b72h                               ; 68 72 0b
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 42 98
+    call 01966h                               ; e8 ee 97
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 08243h                           ; e9 16 01
+    jmp near 08297h                           ; 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
@@ -12315,7 +12300,7 @@ scsi_cmd_packet_:                            ; 0xf80e6 LB 0x168
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 08149h                          ; 75 f7
+    jne short 0819dh                          ; 75 f7
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, word [bp+004h]                    ; 03 56 04
@@ -12331,7 +12316,7 @@ scsi_cmd_packet_:                            ; 0xf80e6 LB 0x168
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 08174h                               ; e2 fa
+    loop 081c8h                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     mov cl, byte [bp-006h]                    ; 8a 4e fa
     xor ch, ch                                ; 30 ed
@@ -12350,29 +12335,29 @@ scsi_cmd_packet_:                            ; 0xf80e6 LB 0x168
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0819ch                               ; e2 fa
+    loop 081f0h                               ; 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 081beh                          ; 73 0e
+    jnc short 08212h                          ; 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 081a7h                          ; eb e9
+    jmp short 081fbh                          ; 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 081beh                          ; 75 f7
+    jne short 08212h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 081d9h                           ; 74 0e
+    je short 0822dh                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12380,14 +12365,14 @@ scsi_cmd_packet_:                            ; 0xf80e6 LB 0x168
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 08243h                          ; eb 6a
+    jmp short 08297h                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 081e8h                           ; 74 08
+    je short 0823ch                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 081e5h                               ; e2 fd
+    loop 08239h                               ; 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
@@ -12395,9 +12380,9 @@ scsi_cmd_packet_:                            ; 0xf80e6 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 08209h                          ; 75 07
+    jne short 0825dh                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 08226h                          ; 76 1d
+    jbe short 0827ah                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+00ch]                         ; c4 7e 0c
@@ -12407,17 +12392,17 @@ scsi_cmd_packet_:                            ; 0xf80e6 LB 0x168
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 081f9h                          ; eb d3
+    jmp short 0824dh                          ; 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 08241h                           ; 74 07
+    je short 08295h                           ; 74 07
     mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     in AL, DX                                 ; ec
-    loop 0823eh                               ; e2 fd
+    loop 08292h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12425,7 +12410,7 @@ scsi_cmd_packet_:                            ; 0xf80e6 LB 0x168
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
+scsi_enumerate_attached_devices_:            ; 0xf82a2 LB 0x4a6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12437,19 +12422,19 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 08 94
+    call 0166ch                               ; e8 b4 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 08672h                           ; e9 00 04
+    jmp near 086c6h                           ; e9 00 04
     cmp AL, strict byte 004h                  ; 3c 04
-    jc short 08279h                           ; 72 03
-    jmp near 086eah                           ; e9 71 04
+    jc short 082cdh                           ; 72 03
+    jmp near 0873eh                           ; 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 09fa0h                               ; e8 1a 1d
+    call 09ff0h                               ; e8 16 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
@@ -12464,13 +12449,13 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07d7ch                               ; e8 cd fa
+    call 07dd0h                               ; e8 cd fa
     test al, al                               ; 84 c0
-    je short 082c1h                           ; 74 0e
+    je short 08315h                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bcbh                               ; 68 cb 0b
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 a8 96
+    call 01966h                               ; e8 54 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
@@ -12502,7 +12487,7 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08310h                               ; e2 fa
+    loop 08364h                               ; e2 fa
     or bx, ax                                 ; 09 c3
     or dx, si                                 ; 09 f2
     mov al, byte [bp-0023bh]                  ; 8a 86 c5 fd
@@ -12510,56 +12495,56 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     or bx, ax                                 ; 09 c3
     mov word [bp-028h], bx                    ; 89 5e d8
     test dx, dx                               ; 85 d2
-    jne short 0832fh                          ; 75 06
+    jne short 08383h                          ; 75 06
     cmp bx, 00200h                            ; 81 fb 00 02
-    je short 0834fh                           ; 74 20
+    je short 083a3h                           ; 74 20
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 e9 95
+    call 01923h                               ; e8 95 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 1d 96
+    call 01966h                               ; e8 c9 95
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 08666h                           ; e9 17 03
+    jmp near 086bah                           ; e9 17 03
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08362h                           ; 72 0c
-    jbe short 0836ah                          ; 76 12
+    jc short 083b6h                           ; 72 0c
+    jbe short 083beh                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08372h                           ; 74 16
+    je short 083c6h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0836eh                           ; 74 0e
-    jmp short 083bbh                          ; eb 59
+    je short 083c2h                           ; 74 0e
+    jmp short 0840fh                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 083bbh                          ; 75 55
+    jne short 0840fh                          ; 75 55
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 08374h                          ; eb 0a
+    jmp short 083c8h                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 08374h                          ; eb 06
+    jmp short 083c8h                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 08374h                          ; eb 02
+    jmp short 083c8h                          ; 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 2c 93
+    call 016ach                               ; e8 d8 92
     test al, al                               ; 84 c0
-    je short 083bbh                           ; 74 37
+    je short 0840fh                           ; 74 37
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 1f 93
+    call 016ach                               ; e8 cb 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 13 93
+    call 016ach                               ; e8 bf 92
     xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
     cwd                                       ; 99
@@ -12567,42 +12552,42 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 03 93
+    call 016ach                               ; e8 af 92
     xor ah, ah                                ; 30 e4
     mov word [bp-018h], ax                    ; 89 46 e8
     mov ax, cx                                ; 89 c8
-    call 016ach                               ; e8 f9 92
+    call 016ach                               ; e8 a5 92
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp near 084a9h                           ; e9 ee 00
+    jmp near 084fdh                           ; 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 09f80h                               ; e8 b3 1b
+    call 09fd0h                               ; e8 af 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 083f5h                         ; 77 15
-    je short 083e5h                           ; 74 03
-    jmp near 0846ah                           ; e9 85 00
+    jnbe short 08449h                         ; 77 15
+    je short 08439h                           ; 74 03
+    jmp near 084beh                           ; e9 85 00
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    jnbe short 083f5h                         ; 77 0a
-    jne short 083e2h                          ; 75 f5
+    jnbe short 08449h                         ; 77 0a
+    jne short 08436h                          ; 75 f5
     cmp word [bp-01ch], strict byte 00040h    ; 83 7e e4 40
-    jnbe short 083f5h                         ; 77 02
-    jne short 0846ah                          ; 75 75
+    jnbe short 08449h                         ; 77 02
+    jne short 084beh                          ; 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 09f80h                               ; e8 72 1b
+    call 09fd0h                               ; e8 6e 1b
     mov si, word [bp-01eh]                    ; 8b 76 e2
     add si, dx                                ; 01 d6
     mov word [bp-036h], si                    ; 89 76 ca
@@ -12620,7 +12605,7 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     mov cx, word [bp-024h]                    ; 8b 4e dc
     mov dx, si                                ; 89 f2
     mov si, strict word 00008h                ; be 08 00
-    call 09f80h                               ; e8 42 1b
+    call 09fd0h                               ; e8 3e 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
@@ -12629,33 +12614,33 @@ scsi_enumerate_attached_devices_:            ; 0xf824e 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 09f80h                               ; e8 27 1b
+    call 09fd0h                               ; e8 23 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 084a9h                          ; eb 3f
+    jmp short 084fdh                          ; eb 3f
     test ax, ax                               ; 85 c0
-    jnbe short 08480h                         ; 77 12
-    jne short 0848ch                          ; 75 1c
+    jnbe short 084d4h                         ; 77 12
+    jne short 084e0h                          ; 75 1c
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    jnbe short 08480h                         ; 77 0a
-    jne short 0848ch                          ; 75 14
+    jnbe short 084d4h                         ; 77 0a
+    jne short 084e0h                          ; 75 14
     cmp word [bp-01ch], strict byte 00020h    ; 83 7e e4 20
-    jnbe short 08480h                         ; 77 02
-    jne short 0848ch                          ; 75 0c
+    jnbe short 084d4h                         ; 77 02
+    jne short 084e0h                          ; 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 084a5h                          ; eb 19
+    jmp short 084f9h                          ; 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 09f80h                               ; e8 db 1a
+    call 09fd0h                               ; e8 d7 1a
     mov si, dx                                ; 89 d6
     mov dx, cx                                ; 89 ca
     mov al, byte [bp-00ch]                    ; 8a 46 f4
@@ -12690,18 +12675,18 @@ scsi_enumerate_attached_devices_:            ; 0xf824e 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 0851bh                          ; 75 06
+    jne short 0856fh                          ; 75 06
     cmp si, 00400h                            ; 81 fe 00 04
-    jbe short 08529h                          ; 76 0e
+    jbe short 0857dh                          ; 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 08531h                          ; eb 08
+    jmp short 08585h                          ; 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 e7 93
+    call 01923h                               ; e8 93 93
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-010h]                       ; ff 76 f0
     push word [bp-01ch]                       ; ff 76 e4
@@ -12716,7 +12701,7 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     push ax                                   ; 50
     push 00c18h                               ; 68 18 0c
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 05 94
+    call 01966h                               ; e8 b1 93
     add sp, strict byte 00018h                ; 83 c4 18
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
@@ -12744,35 +12729,35 @@ scsi_enumerate_attached_devices_:            ; 0xf824e 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 9b 90
+    call 01650h                               ; e8 47 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 9a 90
+    call 0165eh                               ; e8 46 90
     inc byte [bp-00ch]                        ; fe 46 f4
-    jmp near 0865bh                           ; e9 91 00
+    jmp near 086afh                           ; 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 4e 93
+    call 01923h                               ; e8 fa 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 80 93
+    call 01966h                               ; e8 2c 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 085fdh                           ; 74 05
+    je short 08651h                           ; 74 05
     mov dx, strict word 00001h                ; ba 01 00
-    jmp short 085ffh                          ; eb 02
+    jmp short 08653h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
@@ -12808,8 +12793,8 @@ scsi_enumerate_attached_devices_:            ; 0xf824e 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 08672h                           ; 7c 03
-    jmp near 086eah                           ; e9 78 00
+    jl short 086c6h                           ; 7c 03
+    jmp near 0873eh                           ; 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
@@ -12828,30 +12813,30 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07d7ch                               ; e8 d7 f6
+    call 07dd0h                               ; e8 d7 f6
     test al, al                               ; 84 c0
-    je short 086b7h                           ; 74 0e
+    je short 0870bh                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bb2h                               ; 68 b2 0b
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 b2 92
+    call 01966h                               ; e8 5e 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 086d3h                          ; 75 0a
+    jne short 08727h                          ; 75 0a
     test byte [bp-00246h], 01fh               ; f6 86 ba fd 1f
-    jne short 086d3h                          ; 75 03
-    jmp near 08272h                           ; e9 9f fb
+    jne short 08727h                          ; 75 03
+    jmp near 082c6h                           ; e9 9f fb
     test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
-    jne short 0865bh                          ; 75 81
+    jne short 086afh                          ; 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 086e7h                          ; 75 03
-    jmp near 085cah                           ; e9 e3 fe
-    jmp near 0865bh                           ; e9 71 ff
+    jne short 0873bh                          ; 75 03
+    jmp near 0861eh                           ; e9 e3 fe
+    jmp near 086afh                           ; e9 71 ff
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -12860,12 +12845,12 @@ scsi_enumerate_attached_devices_:            ; 0xf824e LB 0x4a6
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf86f4 LB 0x66
+_scsi_init:                                  ; 0xf8748 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 6c 8f
+    call 0166ch                               ; e8 18 8f
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
     mov byte [es:bx+0022ch], 000h             ; 26 c6 87 2c 02 00
@@ -12876,12 +12861,12 @@ _scsi_init:                                  ; 0xf86f4 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08724h                          ; 75 0c
+    jne short 08778h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 0824eh                               ; e8 2a fb
+    call 082a2h                               ; e8 2a fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
     out DX, AL                                ; ee
@@ -12889,12 +12874,12 @@ _scsi_init:                                  ; 0xf86f4 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 0873dh                          ; 75 0c
+    jne short 08791h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 0824eh                               ; e8 11 fb
+    call 082a2h                               ; e8 11 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
     out DX, AL                                ; ee
@@ -12902,16 +12887,16 @@ _scsi_init:                                  ; 0xf86f4 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08756h                          ; 75 0c
+    jne short 087aah                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 0824eh                               ; e8 f8 fa
+    call 082a2h                               ; e8 f8 fa
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf875a LB 0x1c
+ahci_ctrl_extract_bits_:                     ; 0xf87ae LB 0x1c
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12920,14 +12905,14 @@ ahci_ctrl_extract_bits_:                     ; 0xf875a LB 0x1c
     and dx, cx                                ; 21 ca
     mov cl, byte [bp+006h]                    ; 8a 4e 06
     xor ch, ch                                ; 30 ed
-    jcxz 08771h                               ; e3 06
+    jcxz 087c5h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0876bh                               ; e2 fa
+    loop 087bfh                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf8776 LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf87ca LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -12938,7 +12923,7 @@ ahci_addr_to_phys_:                          ; 0xf8776 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08784h                               ; e2 fa
+    loop 087d8h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -12946,7 +12931,7 @@ ahci_addr_to_phys_:                          ; 0xf8776 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf8794 LB 0x156
+ahci_port_cmd_sync_:                         ; 0xf87e8 LB 0x156
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -12961,8 +12946,8 @@ ahci_port_cmd_sync_:                         ; 0xf8794 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 087b7h                          ; 75 03
-    jmp near 088e2h                           ; e9 2b 01
+    jne short 0880bh                          ; 75 03
+    jmp near 08936h                           ; e9 2b 01
     mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
     xor ah, ah                                ; 30 e4
     xor di, di                                ; 31 ff
@@ -12975,7 +12960,7 @@ ahci_port_cmd_sync_:                         ; 0xf8794 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 08776h                               ; e8 92 ff
+    call 087cah                               ; 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
@@ -13041,14 +13026,14 @@ ahci_port_cmd_sync_:                         ; 0xf8794 LB 0x156
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dh, 040h                             ; f6 c6 40
-    jne short 08875h                          ; 75 04
+    jne short 088c9h                          ; 75 04
     test AL, strict byte 001h                 ; a8 01
-    je short 08879h                           ; 74 04
+    je short 088cdh                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0887bh                          ; eb 02
+    jmp short 088cfh                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 08848h                           ; 74 c9
+    je short 0889ch                           ; 74 c9
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
@@ -13104,7 +13089,7 @@ ahci_port_cmd_sync_:                         ; 0xf8794 LB 0x156
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf88ea LB 0x267
+ahci_cmd_data_:                              ; 0xf893e LB 0x267
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13129,7 +13114,7 @@ ahci_cmd_data_:                              ; 0xf88ea LB 0x267
     xor bx, bx                                ; 31 db
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09fa0h                               ; e8 78 16
+    call 09ff0h                               ; e8 74 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
@@ -13147,7 +13132,7 @@ ahci_cmd_data_:                              ; 0xf88ea 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 09f80h                               ; e8 14 16
+    call 09fd0h                               ; e8 10 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
@@ -13158,7 +13143,7 @@ ahci_cmd_data_:                              ; 0xf88ea 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 09f80h                               ; e8 ee 15
+    call 09fd0h                               ; e8 ea 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
@@ -13170,7 +13155,7 @@ ahci_cmd_data_:                              ; 0xf88ea 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 09f80h                               ; e8 c2 15
+    call 09fd0h                               ; e8 be 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
@@ -13181,7 +13166,7 @@ ahci_cmd_data_:                              ; 0xf88ea 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 09f80h                               ; e8 9c 15
+    call 09fd0h                               ; e8 98 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
@@ -13192,7 +13177,7 @@ ahci_cmd_data_:                              ; 0xf88ea 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 09f80h                               ; e8 76 15
+    call 09fd0h                               ; e8 72 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
@@ -13206,7 +13191,7 @@ ahci_cmd_data_:                              ; 0xf88ea LB 0x267
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-010h]                    ; 8b 5e f0
     xor cx, cx                                ; 31 c9
-    call 09f30h                               ; e8 f1 14
+    call 09f80h                               ; e8 ed 14
     push dx                                   ; 52
     push ax                                   ; 50
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13216,7 +13201,7 @@ ahci_cmd_data_:                              ; 0xf88ea 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 09e86h                               ; e8 2b 14
+    call 09edah                               ; 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
@@ -13239,7 +13224,7 @@ ahci_cmd_data_:                              ; 0xf88ea LB 0x267
     mov bx, si                                ; 89 f3
     mov ax, word [es:bx+020h]                 ; 26 8b 47 20
     test ax, ax                               ; 85 c0
-    je short 08aedh                           ; 74 3b
+    je short 08b41h                           ; 74 3b
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bl, byte [es:di+00263h]               ; 26 8a 9d 63 02
@@ -13257,35 +13242,35 @@ ahci_cmd_data_:                              ; 0xf88ea 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 08afah                          ; 75 06
+    jne short 08b4eh                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 08b11h                          ; eb 17
+    jmp short 08b65h                          ; eb 17
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 08b0dh                          ; 75 0f
+    jne short 08b61h                          ; 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 08b11h                          ; eb 04
+    jmp short 08b65h                          ; 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 08794h                               ; e8 71 fc
+    call 087e8h                               ; 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 09efdh                               ; e8 c5 13
+    call 09f51h                               ; 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 08b47h                           ; 74 05
+    je short 08b9bh                           ; 74 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08b49h                          ; eb 02
+    jmp short 08b9dh                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -13293,7 +13278,7 @@ ahci_cmd_data_:                              ; 0xf88ea LB 0x267
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf8b51 LB 0x180
+ahci_port_deinit_current_:                   ; 0xf8ba5 LB 0x180
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -13308,7 +13293,7 @@ ahci_port_deinit_current_:                   ; 0xf8b51 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 08bd2h                           ; 74 5f
+    je short 08c26h                           ; 74 5f
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
     add ax, 00118h                            ; 05 18 01
@@ -13352,28 +13337,28 @@ ahci_port_deinit_current_:                   ; 0xf8b51 LB 0x180
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08bd5h                           ; 74 07
+    je short 08c29h                           ; 74 07
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08bd7h                          ; eb 05
-    jmp near 08cc8h                           ; e9 f3 00
+    jmp short 08c2bh                          ; eb 05
+    jmp near 08d1ch                           ; e9 f3 00
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08ba5h                           ; 74 ca
+    je short 08bf9h                           ; 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 09fa0h                               ; e8 b8 13
+    call 09ff0h                               ; e8 b4 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 09fa0h                               ; e8 a9 13
+    call 09ff0h                               ; e8 a5 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 09fa0h                               ; e8 9a 13
+    call 09ff0h                               ; e8 96 13
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
@@ -13478,7 +13463,7 @@ ahci_port_deinit_current_:                   ; 0xf8b51 LB 0x180
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
+ahci_port_init_:                             ; 0xf8d25 LB 0x24d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13488,7 +13473,7 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     mov si, ax                                ; 89 c6
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 08b51h                               ; e8 6c fe
+    call 08ba5h                               ; e8 6c fe
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
@@ -13537,28 +13522,28 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08d56h                           ; 74 04
+    je short 08daah                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08d58h                          ; eb 02
+    jmp short 08dach                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08d21h                           ; 74 c5
+    je short 08d75h                           ; 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 09fa0h                               ; e8 37 12
+    call 09ff0h                               ; e8 33 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 09fa0h                               ; e8 28 12
+    call 09ff0h                               ; e8 24 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 09fa0h                               ; e8 17 12
+    call 09ff0h                               ; e8 13 12
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     sal bx, 007h                              ; c1 e3 07
@@ -13576,7 +13561,7 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     out DX, eax                               ; 66 ef
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08776h                               ; e8 bf f9
+    call 087cah                               ; 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
@@ -13621,7 +13606,7 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     out DX, eax                               ; 66 ef
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08776h                               ; e8 53 f9
+    call 087cah                               ; 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
@@ -13726,7 +13711,7 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
- at ahci_read_sectors:                          ; 0xf8f1e LB 0xa8
+ at ahci_read_sectors:                          ; 0xf8f72 LB 0xa8
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13737,12 +13722,12 @@ ahci_port_init_:                             ; 0xf8cd1 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 08f44h                          ; 76 0f
+    jbe short 08f98h                          ; 76 0f
     push bx                                   ; 53
     push 00c62h                               ; 68 62 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 25 8a
+    call 01966h                               ; e8 d1 89
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
     les si, [bp+004h]                         ; c4 76 04
@@ -13757,11 +13742,11 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     mov di, si                                ; 89 f7
     mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
     xor ax, ax                                ; 31 c0
-    call 08cd1h                               ; e8 60 fd
+    call 08d25h                               ; 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 088eah                               ; e8 6e f9
+    call 0893eh                               ; e8 6e f9
     mov word [bp-006h], ax                    ; 89 46 fa
     mov es, [bp+006h]                         ; 8e 46 06
     mov bx, si                                ; 89 f3
@@ -13790,7 +13775,7 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at ahci_write_sectors:                         ; 0xf8fc6 LB 0x86
+ at ahci_write_sectors:                         ; 0xf901a LB 0x86
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13802,12 +13787,12 @@ ahci_port_init_:                             ; 0xf8cd1 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 08ff0h                          ; 76 0f
+    jbe short 09044h                          ; 76 0f
     push dx                                   ; 52
     push 00c93h                               ; 68 93 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 01966h                               ; e8 79 89
+    call 01966h                               ; e8 25 89
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     mov es, cx                                ; 8e c1
@@ -13822,11 +13807,11 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08cd1h                               ; e8 b6 fc
+    call 08d25h                               ; e8 b6 fc
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 088eah                               ; e8 c5 f8
+    call 0893eh                               ; e8 c5 f8
     mov dx, ax                                ; 89 c2
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
@@ -13841,7 +13826,7 @@ ahci_port_init_:                             ; 0xf8cd1 LB 0x24d
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf904c LB 0x18a
+ahci_cmd_packet_:                            ; 0xf90a0 LB 0x18a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13853,30 +13838,30 @@ ahci_cmd_packet_:                            ; 0xf904c 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 05 86
+    call 0166ch                               ; e8 b1 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 09092h                          ; 75 1f
+    jne short 090e6h                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 a5 88
+    call 01923h                               ; e8 51 88
     push 00ca6h                               ; 68 a6 0c
     push 00cb6h                               ; 68 b6 0c
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 dd 88
+    call 01966h                               ; e8 89 88
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 091cdh                           ; e9 3b 01
+    jmp near 09221h                           ; e9 3b 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 0908ch                          ; 75 f4
+    jne short 090e0h                          ; 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 090a1h                               ; e2 fa
+    loop 090f5h                               ; 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
@@ -13890,7 +13875,7 @@ ahci_cmd_packet_:                            ; 0xf904c LB 0x18a
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 09f50h                               ; e8 76 0e
+    call 09fa0h                               ; e8 72 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
@@ -13909,7 +13894,7 @@ ahci_cmd_packet_:                            ; 0xf904c LB 0x18a
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     mov bx, ax                                ; 89 c3
     xor al, al                                ; 30 c0
-    call 08cd1h                               ; e8 b8 fb
+    call 08d25h                               ; e8 b8 fb
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -13917,14 +13902,14 @@ ahci_cmd_packet_:                            ; 0xf904c 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 09fb0h                               ; e8 82 0e
+    call 0a000h                               ; e8 7e 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 0916ch                           ; 74 27
+    je short 091c0h                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+0010ch], ax               ; 26 89 85 0c 01
@@ -13937,7 +13922,7 @@ ahci_cmd_packet_:                            ; 0xf904c LB 0x18a
     mov bx, 000a0h                            ; bb a0 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 088eah                               ; e8 73 f7
+    call 0893eh                               ; 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
@@ -13964,16 +13949,16 @@ ahci_cmd_packet_:                            ; 0xf904c 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 091cbh                          ; 75 05
+    jne short 0921fh                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 091cdh                          ; eb 02
+    jmp short 09221h                          ; 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_:                    ; 0xf91d6 LB 0x4e3
+ahci_port_detect_device_:                    ; 0xf922a LB 0x4e3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13986,10 +13971,10 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     mov cl, bl                                ; 88 d9
     xor ch, ch                                ; 30 ed
     mov bx, cx                                ; 89 cb
-    call 08cd1h                               ; e8 e0 fa
+    call 08d25h                               ; e8 e0 fa
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166ch                               ; e8 72 84
+    call 0166ch                               ; e8 1e 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
@@ -14059,10 +14044,10 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0875ah                               ; e8 b5 f4
+    call 087aeh                               ; e8 b5 f4
     test ax, ax                               ; 85 c0
-    jne short 092ach                          ; 75 03
-    jmp near 096b1h                           ; e9 05 04
+    jne short 09300h                          ; 75 03
+    jmp near 09705h                           ; e9 05 04
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     sal ax, 007h                              ; c1 e0 07
@@ -14091,17 +14076,17 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0875ah                               ; e8 67 f4
+    call 087aeh                               ; e8 67 f4
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 092ach                           ; 74 b4
+    je short 09300h                           ; 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 0875ah                               ; e8 53 f4
+    call 087aeh                               ; e8 53 f4
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne short 092a9h                          ; 75 9d
+    jne short 092fdh                          ; 75 9d
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     add ax, 00130h                            ; 05 30 01
     cwd                                       ; 99
@@ -14129,8 +14114,8 @@ ahci_port_detect_device_:                    ; 0xf91d6 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 09356h                           ; 72 03
-    jmp near 096b1h                           ; e9 5b 03
+    jc short 093aah                           ; 72 03
+    jmp near 09705h                           ; e9 5b 03
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     add ax, 00118h                            ; 05 18 01
     mov es, [bp-010h]                         ; 8e 46 f0
@@ -14180,9 +14165,9 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     mov cl, byte [bp-008h]                    ; 8a 4e f8
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne short 0941ch                          ; 75 54
+    jne short 09470h                          ; 75 54
     cmp ax, 00101h                            ; 3d 01 01
-    jne short 0941ch                          ; 75 4f
+    jne short 09470h                          ; 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
@@ -14197,13 +14182,13 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     mov bx, 000ech                            ; bb ec 00
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, es                                ; 8c c2
-    call 088eah                               ; e8 dd f4
+    call 0893eh                               ; e8 dd f4
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 0941fh                           ; 74 08
+    je short 09473h                           ; 74 08
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 09421h                          ; eb 05
-    jmp near 095efh                           ; e9 d0 01
+    jmp short 09475h                          ; eb 05
+    jmp near 09643h                           ; e9 d0 01
     xor ax, ax                                ; 31 c0
     mov dl, al                                ; 88 c2
     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
@@ -14219,9 +14204,9 @@ ahci_port_detect_device_:                    ; 0xf91d6 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 09470h                          ; 75 1e
+    jne short 094c4h                          ; 75 1e
     cmp di, strict byte 0ffffh                ; 83 ff ff
-    jne short 09470h                          ; 75 19
+    jne short 094c4h                          ; 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
@@ -14260,64 +14245,64 @@ ahci_port_detect_device_:                    ; 0xf91d6 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 094ebh                           ; 72 0c
-    jbe short 094f3h                          ; 76 12
+    jc short 0953fh                           ; 72 0c
+    jbe short 09547h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 094fbh                           ; 74 16
+    je short 0954fh                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 094f7h                           ; 74 0e
-    jmp short 09543h                          ; eb 58
+    je short 0954bh                           ; 74 0e
+    jmp short 09597h                          ; eb 58
     test al, al                               ; 84 c0
-    jne short 09543h                          ; 75 54
+    jne short 09597h                          ; 75 54
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 094fdh                          ; eb 0a
+    jmp short 09551h                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 094fdh                          ; eb 06
+    jmp short 09551h                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 094fdh                          ; eb 02
+    jmp short 09551h                          ; 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 a3 81
+    call 016ach                               ; e8 4f 81
     test al, al                               ; 84 c0
-    je short 09543h                           ; 74 36
+    je short 09597h                           ; 74 36
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016ach                               ; e8 96 81
+    call 016ach                               ; e8 42 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 8a 81
+    call 016ach                               ; e8 36 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 7a 81
+    call 016ach                               ; e8 26 81
     xor ah, ah                                ; 30 e4
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov ax, bx                                ; 89 d8
-    call 016ach                               ; e8 70 81
+    call 016ach                               ; e8 1c 81
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp short 09555h                          ; eb 12
+    jmp short 095a9h                          ; 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 05977h                               ; e8 22 c4
+    call 059cbh                               ; 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 c3 83
+    call 01923h                               ; e8 6f 83
     push word [bp-01eh]                       ; ff 76 e2
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-014h]                       ; ff 76 ec
@@ -14338,7 +14323,7 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     push ax                                   ; 50
     push 00cd6h                               ; 68 d6 0c
     push strict byte 00004h                   ; 6a 04
-    call 01966h                               ; e8 d5 83
+    call 01966h                               ; e8 81 83
     add sp, strict byte 0001ch                ; 83 c4 1c
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
@@ -14369,19 +14354,19 @@ ahci_port_detect_device_:                    ; 0xf91d6 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 73 80
+    call 01650h                               ; e8 1f 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 72 80
-    jmp near 096a0h                           ; e9 b1 00
+    call 0165eh                               ; e8 1e 80
+    jmp near 096f4h                           ; e9 b1 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne short 09649h                          ; 75 54
+    jne short 0969dh                          ; 75 54
     cmp ax, 00101h                            ; 3d 01 01
-    jne short 09649h                          ; 75 4f
+    jne short 0969dh                          ; 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
@@ -14396,13 +14381,13 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     mov bx, 000a1h                            ; bb a1 00
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     mov dx, es                                ; 8c c2
-    call 088eah                               ; e8 b0 f2
+    call 0893eh                               ; e8 b0 f2
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 0964bh                           ; 74 07
+    je short 0969fh                           ; 74 07
     mov dx, strict word 00001h                ; ba 01 00
-    jmp short 0964dh                          ; eb 04
-    jmp short 096a0h                          ; eb 55
+    jmp short 096a1h                          ; eb 04
+    jmp short 096f4h                          ; eb 55
     xor dx, dx                                ; 31 d2
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
@@ -14441,7 +14426,7 @@ ahci_port_detect_device_:                    ; 0xf91d6 LB 0x4e3
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf96b9 LB 0x43
+ahci_mem_alloc_:                             ; 0xf970d LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14451,25 +14436,25 @@ ahci_mem_alloc_:                             ; 0xf96b9 LB 0x43
     push di                                   ; 57
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0166ch                               ; e8 a3 7f
+    call 0166ch                               ; e8 4f 7f
     test ax, ax                               ; 85 c0
-    je short 096f2h                           ; 74 25
+    je short 09746h                           ; 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 096d5h                               ; e2 fa
+    loop 09729h                               ; 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 096e2h                               ; e2 fa
+    loop 09736h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0167ah                               ; e8 8a 7f
+    call 0167ah                               ; e8 36 7f
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14479,7 +14464,7 @@ ahci_mem_alloc_:                             ; 0xf96b9 LB 0x43
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf96fc LB 0x16d
+ahci_hba_init_:                              ; 0xf9750 LB 0x16d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14491,7 +14476,7 @@ ahci_hba_init_:                              ; 0xf96fc 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 5a 7f
+    call 0166ch                               ; e8 06 7f
     mov bx, 00122h                            ; bb 22 01
     mov di, ax                                ; 89 c7
     mov ax, strict word 00010h                ; b8 10 00
@@ -14508,11 +14493,11 @@ ahci_hba_init_:                              ; 0xf96fc LB 0x16d
     ; mov dx, ax                                ; 8b d0
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 096b9h                               ; e8 83 ff
+    call 0970dh                               ; e8 83 ff
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    jne short 09740h                          ; 75 03
-    jmp near 09848h                           ; e9 08 01
+    jne short 09794h                          ; 75 03
+    jmp near 0989ch                           ; 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
@@ -14562,7 +14547,7 @@ ahci_hba_init_:                              ; 0xf96fc LB 0x16d
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 0979ah                          ; 75 de
+    jne short 097eeh                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14580,33 +14565,33 @@ ahci_hba_init_:                              ; 0xf96fc LB 0x16d
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 0875ah                               ; e8 7a ef
+    call 087aeh                               ; 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 0980ch                          ; eb 21
+    jmp short 09860h                          ; eb 21
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 09803h                           ; 74 12
+    je short 09857h                           ; 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 091d6h                               ; e8 d8 f9
+    call 0922ah                               ; e8 d8 f9
     dec byte [bp-00ch]                        ; fe 4e f4
-    je short 09846h                           ; 74 43
+    je short 0989ah                           ; 74 43
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 020h                  ; 80 7e f2 20
-    jnc short 09846h                          ; 73 3a
+    jnc short 0989ah                          ; 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 0981eh                               ; e3 06
+    jcxz 09872h                               ; e3 06
     sal bx, 1                                 ; d1 e3
     rcl di, 1                                 ; d1 d7
-    loop 09818h                               ; e2 fa
+    loop 0986ch                               ; e2 fa
     mov ax, strict word 0000ch                ; b8 0c 00
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14622,11 +14607,11 @@ ahci_hba_init_:                              ; 0xf96fc LB 0x16d
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 09842h                          ; 75 04
+    jne short 09896h                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 097ebh                           ; 74 a9
+    je short 0983fh                           ; 74 a9
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 097edh                          ; eb a7
+    jmp short 09841h                          ; eb a7
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14636,19 +14621,19 @@ ahci_hba_init_:                              ; 0xf96fc LB 0x16d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 051h, 099h, 02fh, 099h, 035h, 099h, 03bh, 099h, 041h
-    db  099h, 047h, 099h, 04dh, 099h, 051h, 099h
-_ahci_init:                                  ; 0xf9869 LB 0x119
+    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
     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 09d9dh                               ; e8 24 05
+    call 09df1h                               ; e8 24 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je short 098cch                           ; 74 4c
+    je short 09920h                           ; 74 4c
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-008h], al                    ; 88 46 f8
@@ -14656,10 +14641,10 @@ _ahci_init:                                  ; 0xf9869 LB 0x119
     xor dh, dh                                ; 30 f6
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 09da5h                               ; e8 10 05
+    call 09df9h                               ; e8 10 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 098cfh                           ; 74 34
+    je short 09923h                           ; 74 34
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
@@ -14670,19 +14655,19 @@ _ahci_init:                                  ; 0xf9869 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 09da5h                               ; e8 eb 04
+    call 09df9h                               ; e8 eb 04
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 098cfh                           ; 74 11
+    je short 09923h                           ; 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 09892h                          ; eb c6
-    jmp near 0997ch                           ; e9 ad 00
+    jmp short 098e6h                          ; eb c6
+    jmp near 099d0h                           ; e9 ad 00
     test cl, cl                               ; 84 c9
-    je short 098cch                           ; 74 f9
+    je short 09920h                           ; 74 f9
     add cl, 002h                              ; 80 c1 02
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
@@ -14694,92 +14679,92 @@ _ahci_init:                                  ; 0xf9869 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 09da5h                               ; e8 b0 04
+    call 09df9h                               ; e8 b0 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 098cch                          ; 75 d3
+    jne short 09920h                          ; 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 09dd3h                               ; e8 c6 04
+    call 09e27h                               ; 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 09951h                         ; 77 37
+    jnbe short 099a5h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 09852h                            ; bf 52 98
+    mov di, 098a6h                            ; bf a6 98
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-067a7h]               ; 2e 8b 85 59 98
+    mov ax, word [cs:di-06753h]               ; 2e 8b 85 ad 98
     jmp ax                                    ; ff e0
     mov byte [bp-004h], 010h                  ; c6 46 fc 10
-    jmp short 09951h                          ; eb 1c
+    jmp short 099a5h                          ; eb 1c
     mov byte [bp-004h], 014h                  ; c6 46 fc 14
-    jmp short 09951h                          ; eb 16
+    jmp short 099a5h                          ; eb 16
     mov byte [bp-004h], 018h                  ; c6 46 fc 18
-    jmp short 09951h                          ; eb 10
+    jmp short 099a5h                          ; eb 10
     mov byte [bp-004h], 01ch                  ; c6 46 fc 1c
-    jmp short 09951h                          ; eb 0a
+    jmp short 099a5h                          ; eb 0a
     mov byte [bp-004h], 020h                  ; c6 46 fc 20
-    jmp short 09951h                          ; eb 04
+    jmp short 099a5h                          ; 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 0997ch                           ; 74 1c
+    je short 099d0h                           ; 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 09dfdh                               ; e8 8c 04
+    call 09e51h                               ; e8 8c 04
     test AL, strict byte 001h                 ; a8 01
-    je short 0997ch                           ; 74 07
+    je short 099d0h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, cx                                ; 01 c8
-    call 096fch                               ; e8 80 fd
+    call 09750h                               ; e8 80 fd
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf9982 LB 0x39
+apm_out_str_:                                ; 0xf99d6 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 09997h                           ; 74 0a
+    je short 099ebh                           ; 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 0998fh                          ; 75 f8
+    jne short 099e3h                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    fcomp qword [bx+di-0659ch]                ; dc 99 64 9a
-    out DX, AL                                ; ee
-    cwd                                       ; 99
-    or word [bp+si-0659ch], bx                ; 09 9a 64 9a
-    xor AL, strict byte 09ah                  ; 34 9a
-    db  064h, 09ah, 06ah, 09ah, 039h, 09ah
-    ; fs call far fs:09a39h:09a6ah              ; 64 9a 6a 9a 39 9a
-    cmp word [bp+si-065c7h], bx               ; 39 9a 39 9a
-    test ax, 0399ah                           ; a9 9a 39
-    call far 09aa2h:09a39h                    ; 9a 39 9a a2 9a
-_apm_function:                               ; 0xf99bb LB 0xf3
+    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
+    db  09ah
+_apm_function:                               ; 0xf9a0f LB 0xf3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14787,23 +14772,23 @@ _apm_function:                               ; 0xf99bb 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 09a39h                         ; 77 6c
+    jnbe short 09a8dh                         ; 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-06663h]                   ; 2e ff a7 9d 99
+    jmp word [cs:bx-0660fh]                   ; 2e ff a7 f1 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 09a64h                           ; e9 76 00
+    jmp near 09ab8h                           ; e9 76 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
-    mov word [bp+00ch], 0a024h                ; c7 46 0c 24 a0
+    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 09a64h                           ; e9 5b 00
+    jmp near 09ab8h                           ; 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
@@ -14816,19 +14801,19 @@ _apm_function:                               ; 0xf99bb LB 0xf3
     sal ebx, 010h                             ; 66 c1 e3 10
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 09a64h                           ; e9 30 00
+    jmp near 09ab8h                           ; e9 30 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 09a64h                           ; e9 2b 00
+    jmp near 09ab8h                           ; 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 df 7e
+    call 01923h                               ; e8 8b 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 14 7f
+    call 01966h                               ; e8 c0 7e
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -14840,30 +14825,30 @@ _apm_function:                               ; 0xf99bb LB 0xf3
     pop bp                                    ; 5d
     retn                                      ; c3
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 09a8fh                           ; 74 1f
+    je short 09ae3h                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 09a87h                           ; 74 11
+    je short 09adbh                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 09a97h                          ; 75 1b
+    jne short 09aebh                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d10h                            ; b8 10 0d
-    call 09982h                               ; e8 fd fe
-    jmp short 09a64h                          ; eb dd
+    call 099d6h                               ; e8 fd fe
+    jmp short 09ab8h                          ; eb dd
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d18h                            ; b8 18 0d
-    jmp short 09a82h                          ; eb f3
+    jmp short 09ad6h                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d20h                            ; b8 20 0d
-    jmp short 09a82h                          ; eb eb
+    jmp short 09ad6h                          ; 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 09a64h                          ; eb c2
+    jmp short 09ab8h                          ; eb c2
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 09a64h                          ; eb bb
+    jmp short 09ab8h                          ; eb bb
     or ah, 080h                               ; 80 cc 80
-    jmp short 09a9ah                          ; eb ec
-pci16_select_reg_:                           ; 0xf9aae LB 0x24
+    jmp short 09aeeh                          ; eb ec
+pci16_select_reg_:                           ; 0xf9b02 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14880,7 +14865,7 @@ pci16_select_reg_:                           ; 0xf9aae LB 0x24
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf9ad2 LB 0xf9
+pci16_find_device_:                          ; 0xf9b26 LB 0xf9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14894,49 +14879,49 @@ pci16_find_device_:                          ; 0xf9ad2 LB 0xf9
     xor bx, bx                                ; 31 db
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     test bl, 007h                             ; f6 c3 07
-    jne short 09b1ah                          ; 75 2d
+    jne short 09b6eh                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 09aaeh                               ; e8 b9 ff
+    call 09b02h                               ; 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 09b08h                          ; 75 06
+    jne short 09b5ch                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 09b9bh                           ; e9 93 00
+    jmp near 09befh                           ; e9 93 00
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 09b15h                           ; 74 07
+    je short 09b69h                           ; 74 07
     mov word [bp-010h], strict word 00001h    ; c7 46 f0 01 00
-    jmp short 09b1ah                          ; eb 05
+    jmp short 09b6eh                          ; 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 09b42h                          ; 75 1f
+    jne short 09b96h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 09b42h                          ; 75 16
+    jne short 09b96h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 09aaeh                               ; e8 7a ff
+    call 09b02h                               ; 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 09b42h                          ; 76 03
+    jbe short 09b96h                          ; 76 03
     mov byte [bp-008h], al                    ; 88 46 f8
     test di, di                               ; 85 ff
-    je short 09b4bh                           ; 74 05
+    je short 09b9fh                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 09b4dh                          ; eb 02
+    jmp short 09ba1h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 09aaeh                               ; e8 5c ff
+    call 09b02h                               ; e8 5c ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -14947,51 +14932,49 @@ pci16_find_device_:                          ; 0xf9ad2 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 09b7ch                           ; 74 0f
+    je short 09bd0h                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 09b70h                               ; e2 fa
+    loop 09bc4h                               ; 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 09b8ch                          ; 75 08
+    jne short 09be0h                          ; 75 08
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 09b92h                           ; 74 06
+    je short 09be6h                           ; 74 06
     cmp word [bp-00eh], strict byte 00000h    ; 83 7e f2 00
-    je short 09b98h                           ; 74 06
+    je short 09bech                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 09bach                           ; 74 14
+    je short 09c00h                           ; 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 09bach                         ; 77 03
-    jmp near 09ae8h                           ; e9 3c ff
+    jnbe short 09c00h                         ; 77 03
+    jmp near 09b3ch                           ; e9 3c ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 09bb5h                          ; 75 04
+    jne short 09c09h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 09bb8h                          ; eb 03
+    jmp short 09c0ch                          ; 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
-    lodsb                                     ; ac
-    pushfw                                    ; 9c
-    lds bx, [si-06329h]                       ; c5 9c d7 9c
-    jmp short 09b63h                          ; eb 9c
-    std                                       ; fd
-    pushfw                                    ; 9c
-    db  010h
+    add byte [di-062e7h], bl                  ; 00 9d 19 9d
+    sub bx, word [di-062c1h]                  ; 2b 9d 3f 9d
+    push cx                                   ; 51
     popfw                                     ; 9d
-_pci16_function:                             ; 0xf9bcb LB 0x1d2
+    db  064h, 09dh
+    ; fs popfw                                  ; 64 9d
+_pci16_function:                             ; 0xf9c1f LB 0x1d2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15005,73 +14988,73 @@ _pci16_function:                             ; 0xf9bcb 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 09bfdh                           ; 72 13
-    jbe short 09c50h                          ; 76 64
+    jc short 09c51h                           ; 72 13
+    jbe short 09ca4h                          ; 76 64
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je short 09c58h                           ; 74 67
+    je short 09cach                           ; 74 67
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc short 09c07h                           ; 72 11
+    jc short 09c5bh                           ; 72 11
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe short 09c5bh                          ; 76 60
-    jmp short 09c07h                          ; eb 0a
+    jbe short 09cafh                          ; 76 60
+    jmp short 09c5bh                          ; eb 0a
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 09c26h                           ; 74 24
+    je short 09c7ah                           ; 74 24
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 09c0ah                           ; 74 03
-    jmp near 09d69h                           ; e9 5f 01
+    je short 09c5eh                           ; 74 03
+    jmp near 09dbdh                           ; 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 09d96h                           ; e9 70 01
+    jmp near 09deah                           ; e9 70 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 09c32h                          ; 75 06
+    jne short 09c86h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 09d8fh                           ; e9 5d 01
+    jmp near 09de3h                           ; 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 09ad2h                               ; e8 92 fe
+    call 09b26h                               ; e8 92 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09c52h                          ; 75 0d
+    jne short 09ca6h                          ; 75 0d
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09d8fh                           ; e9 3f 01
-    jmp short 09c5dh                          ; eb 0b
+    jmp near 09de3h                           ; e9 3f 01
+    jmp short 09cb1h                          ; eb 0b
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09d96h                           ; e9 3e 01
-    jmp near 09d24h                           ; e9 c9 00
-    jmp short 09c82h                          ; eb 25
+    jmp near 09deah                           ; e9 3e 01
+    jmp near 09d78h                           ; e9 c9 00
+    jmp short 09cd6h                          ; 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 09ad2h                               ; e8 66 fe
+    call 09b26h                               ; e8 66 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09c7ch                          ; 75 0b
+    jne short 09cd0h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09d8fh                           ; e9 13 01
+    jmp near 09de3h                           ; e9 13 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09d96h                           ; e9 14 01
+    jmp near 09deah                           ; e9 14 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 09c8fh                           ; 72 06
+    jc short 09ce3h                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 09d8fh                           ; e9 00 01
+    jmp near 09de3h                           ; e9 00 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 09aaeh                               ; e8 16 fe
+    call 09b02h                               ; 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 09d0dh                         ; 77 68
+    jnbe short 09d61h                         ; 77 68
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-06441h]                   ; 2e ff a7 bf 9b
+    jmp word [cs:bx-063edh]                   ; 2e ff a7 13 9c
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -15082,14 +15065,14 @@ _pci16_function:                             ; 0xf9bcb LB 0x1d2
     ; sub ah, ah                                ; 2a e4
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp short 09d0dh                          ; eb 48
+    jmp short 09d61h                          ; 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 09d0dh                          ; eb 36
+    jmp short 09d61h                          ; eb 36
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -15098,21 +15081,21 @@ _pci16_function:                             ; 0xf9bcb LB 0x1d2
     xchg dx, ax                               ; 92
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp short 09d0dh                          ; eb 22
+    jmp short 09d61h                          ; 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 09d0dh                          ; eb 10
+    jmp short 09d61h                          ; 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 09d96h                           ; e9 86 00
+    jmp near 09deah                           ; 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
@@ -15121,20 +15104,20 @@ _pci16_function:                             ; 0xf9bcb LB 0x1d2
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09d96h                          ; eb 72
+    jmp short 09deah                          ; 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 09d4ah                          ; 76 11
+    jbe short 09d9eh                          ; 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 09d5eh                          ; eb 14
+    jmp short 09db2h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
     mov dx, ds                                ; 8c da
@@ -15146,18 +15129,18 @@ _pci16_function:                             ; 0xf9bcb 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 09d96h                          ; eb 2d
+    jmp short 09deah                          ; eb 2d
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01923h                               ; e8 af 7b
+    call 01923h                               ; e8 5b 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 e2 7b
+    call 01966h                               ; e8 8e 7b
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -15169,13 +15152,13 @@ _pci16_function:                             ; 0xf9bcb LB 0x1d2
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf9d9d LB 0x8
+pci_find_classcode_:                         ; 0xf9df1 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_:                       ; 0xf9da5 LB 0x2e
+pci_read_config_byte_:                       ; 0xf9df9 LB 0x2e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15201,7 +15184,7 @@ pci_read_config_byte_:                       ; 0xf9da5 LB 0x2e
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf9dd3 LB 0x2a
+pci_read_config_word_:                       ; 0xf9e27 LB 0x2a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15225,7 +15208,7 @@ pci_read_config_word_:                       ; 0xf9dd3 LB 0x2a
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf9dfd LB 0x4e
+pci_read_config_dword_:                      ; 0xf9e51 LB 0x4e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15247,7 +15230,7 @@ pci_read_config_dword_:                      ; 0xf9dfd LB 0x4e
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    jne short 09e3ch                          ; 75 14
+    jne short 09e90h                          ; 75 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
@@ -15257,9 +15240,9 @@ pci_read_config_dword_:                      ; 0xf9dfd LB 0x4e
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    je short 09e41h                           ; 74 05
+    je short 09e95h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 09e43h                          ; eb 02
+    jmp short 09e97h                          ; eb 02
     xor ax, ax                                ; 31 c0
     cwd                                       ; 99
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -15267,7 +15250,7 @@ pci_read_config_dword_:                      ; 0xf9dfd LB 0x4e
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf9e4b LB 0x1d
+vds_is_present_:                             ; 0xf9e9f LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -15275,7 +15258,7 @@ vds_is_present_:                             ; 0xf9e4b 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 09e63h                           ; 74 06
+    je short 09eb7h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
     pop bx                                    ; 5b
@@ -15284,7 +15267,7 @@ vds_is_present_:                             ; 0xf9e4b LB 0x1d
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf9e68 LB 0x1e
+vds_real_to_lin_:                            ; 0xf9ebc LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -15295,7 +15278,7 @@ vds_real_to_lin_:                            ; 0xf9e68 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09e76h                               ; e2 fa
+    loop 09ecah                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -15303,7 +15286,7 @@ vds_real_to_lin_:                            ; 0xf9e68 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9e86 LB 0x77
+vds_build_sg_list_:                          ; 0xf9eda LB 0x77
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15317,23 +15300,23 @@ vds_build_sg_list_:                          ; 0xf9e86 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 09e68h                               ; e8 c3 ff
+    call 09ebch                               ; 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 09e4bh                               ; e8 93 ff
+    call 09e9fh                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 09ecdh                           ; 74 11
+    je short 09f21h                           ; 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 09ecah                           ; 72 02
+    jc short 09f1eh                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 09ef4h                          ; eb 27
+    jmp short 09f48h                          ; 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
@@ -15350,21 +15333,21 @@ vds_build_sg_list_:                          ; 0xf9e86 LB 0x77
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf9efd LB 0x33
+vds_free_sg_list_:                           ; 0xf9f51 LB 0x2f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 09e4bh                               ; e8 44 ff
+    call 09e9fh                               ; e8 44 ff
     test ax, ax                               ; 85 c0
-    je short 09f1ch                           ; 74 11
+    je short 09f70h                           ; 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 09f1bh                           ; 72 02
+    jc short 09f6fh                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
@@ -15375,8 +15358,8 @@ vds_free_sg_list_:                           ; 0xf9efd LB 0x33
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0x5 db 0
-__U4M:                                       ; 0xf9f30 LB 0x20
+    times 0x1 db 0
+__U4M:                                       ; 0xf9f80 LB 0x20
     pushfw                                    ; 9c
     push si                                   ; 56
     push di                                   ; 57
@@ -15403,7 +15386,7 @@ __U4M:                                       ; 0xf9f30 LB 0x20
     popfw                                     ; 9d
     retn                                      ; c3
     times 0x4 db 0
-__U4D:                                       ; 0xf9f50 LB 0x30
+__U4D:                                       ; 0xf9fa0 LB 0x30
     pushfw                                    ; 9c
     push DS                                   ; 1e
     push ES                                   ; 06
@@ -15418,7 +15401,7 @@ __U4D:                                       ; 0xf9f50 LB 0x30
     push bx                                   ; 53
     push dx                                   ; 52
     push ax                                   ; 50
-    call 0a035h                               ; e8 d0 00
+    call 0a085h                               ; e8 d0 00
     mov cx, word [bp-002h]                    ; 8b 4e fe
     mov bx, word [bp-004h]                    ; 8b 5e fc
     db  08bh, 0e5h
@@ -15429,27 +15412,27 @@ __U4D:                                       ; 0xf9f50 LB 0x30
     popfw                                     ; 9d
     retn                                      ; c3
     times 0xe db 0
-__U8RS:                                      ; 0xf9f80 LB 0x10
+__U8RS:                                      ; 0xf9fd0 LB 0x10
     test si, si                               ; 85 f6
-    je short 09f8fh                           ; 74 0b
+    je short 09fdfh                           ; 74 0b
     shr ax, 1                                 ; d1 e8
     rcr bx, 1                                 ; d1 db
     rcr cx, 1                                 ; d1 d9
     rcr dx, 1                                 ; d1 da
     dec si                                    ; 4e
-    jne short 09f84h                          ; 75 f5
+    jne short 09fd4h                          ; 75 f5
     retn                                      ; c3
-__U8LS:                                      ; 0xf9f90 LB 0x10
+__U8LS:                                      ; 0xf9fe0 LB 0x10
     test si, si                               ; 85 f6
-    je short 09f9fh                           ; 74 0b
+    je short 09fefh                           ; 74 0b
     sal dx, 1                                 ; d1 e2
     rcl cx, 1                                 ; d1 d1
     rcl bx, 1                                 ; d1 d3
     rcl ax, 1                                 ; d1 d0
     dec si                                    ; 4e
-    jne short 09f94h                          ; 75 f5
+    jne short 09fe4h                          ; 75 f5
     retn                                      ; c3
-_fmemset_:                                   ; 0xf9fa0 LB 0x10
+_fmemset_:                                   ; 0xf9ff0 LB 0x10
     push di                                   ; 57
     mov es, dx                                ; 8e c2
     db  08bh, 0f8h
@@ -15460,7 +15443,7 @@ _fmemset_:                                   ; 0xf9fa0 LB 0x10
     pop di                                    ; 5f
     retn                                      ; c3
     times 0x3 db 0
-_fmemcpy_:                                   ; 0xf9fb0 LB 0x3a
+_fmemcpy_:                                   ; 0xfa000 LB 0x3a
     push bp                                   ; 55
     db  08bh, 0ech
     ; mov bp, sp                                ; 8b ec
@@ -15485,18 +15468,21 @@ _fmemcpy_:                                   ; 0xf9fb0 LB 0x3a
     add byte [bx+si], al                      ; 00 00
     add byte [bx+si], al                      ; 00 00
     add byte [bx+si], al                      ; 00 00
-    add byte [bx+si-05ffeh], ah               ; 00 a0 02 a0
-    push ES                                   ; 06
-    mov AL, byte [0a006h]                     ; a0 06 a0
-    push ES                                   ; 06
-    mov AL, byte [0a008h]                     ; a0 08 a0
-    or byte [bx+si-05ff6h], ah                ; 08 a0 0a a0
-    push CS                                   ; 0e
-    mov AL, byte [0a00eh]                     ; a0 0e a0
-    adc byte [bx+si-05febh], ah               ; 10 a0 15 a0
-    pop SS                                    ; 17
+    push ax                                   ; 50
+    mov AL, byte [0a052h]                     ; a0 52 a0
+    push si                                   ; 56
+    mov AL, byte [0a056h]                     ; a0 56 a0
+    push si                                   ; 56
+    mov AL, byte [0a058h]                     ; a0 58 a0
+    pop ax                                    ; 58
+    mov AL, byte [0a05ah]                     ; a0 5a a0
+    pop si                                    ; 5e
+    mov AL, byte [0a05eh]                     ; a0 5e a0
+    pushaw                                    ; 60
+    mov AL, byte [0a065h]                     ; a0 65 a0
+    db  067h
     db  0a0h
-apm_worker:                                  ; 0xf9fea LB 0x3a
+apm_worker:                                  ; 0xfa03a LB 0x3a
     sti                                       ; fb
     push ax                                   ; 50
     db  032h, 0e4h
@@ -15508,29 +15494,29 @@ apm_worker:                                  ; 0xf9fea LB 0x3a
     cmp AL, strict byte 00dh                  ; 3c 0d
     pop ax                                    ; 58
     mov AH, strict byte 053h                  ; b4 53
-    jnc short 0a020h                          ; 73 25
-    jmp word [cs:bp-06030h]                   ; 2e ff a6 d0 9f
-    jmp short 0a01eh                          ; eb 1c
+    jnc short 0a070h                          ; 73 25
+    jmp word [cs:bp-05fe0h]                   ; 2e ff a6 20 a0
+    jmp short 0a06eh                          ; eb 1c
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 0a01eh                          ; eb 18
-    jmp short 0a01eh                          ; eb 16
-    jmp short 0a020h                          ; eb 16
+    jmp short 0a06eh                          ; eb 18
+    jmp short 0a06eh                          ; eb 16
+    jmp short 0a070h                          ; eb 16
     mov AH, strict byte 080h                  ; b4 80
-    jmp short 0a022h                          ; eb 14
-    jmp short 0a020h                          ; eb 10
+    jmp short 0a072h                          ; eb 14
+    jmp short 0a070h                          ; eb 10
     mov ax, 00102h                            ; b8 02 01
-    jmp short 0a01eh                          ; eb 09
-    jmp short 0a01eh                          ; eb 07
+    jmp short 0a06eh                          ; eb 09
+    jmp short 0a06eh                          ; eb 07
     mov BL, strict byte 000h                  ; b3 00
     mov cx, strict word 00000h                ; b9 00 00
-    jmp short 0a01eh                          ; eb 00
+    jmp short 0a06eh                          ; eb 00
     clc                                       ; f8
     retn                                      ; c3
     mov AH, strict byte 009h                  ; b4 09
     stc                                       ; f9
     retn                                      ; c3
-apm_pm16_entry:                              ; 0xfa024 LB 0x11
+apm_pm16_entry:                              ; 0xfa074 LB 0x11
     mov AH, strict byte 002h                  ; b4 02
     push DS                                   ; 1e
     push bp                                   ; 55
@@ -15538,11 +15524,11 @@ apm_pm16_entry:                              ; 0xfa024 LB 0x11
     pop bp                                    ; 5d
     add bp, strict byte 00008h                ; 83 c5 08
     mov ds, bp                                ; 8e dd
-    call 09feah                               ; e8 b8 ff
+    call 0a03ah                               ; e8 b8 ff
     pop bp                                    ; 5d
     pop DS                                    ; 1f
     retf                                      ; cb
-_DoUInt32Div:                                ; 0xfa035 LB 0x26b
+_DoUInt32Div:                                ; 0xfa085 LB 0x26b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15560,12 +15546,12 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     mov si, bx                                ; 89 de
     mov [bp-006h], ds                         ; 8c 5e fa
     cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
-    jne short 0a085h                          ; 75 22
+    jne short 0a0d5h                          ; 75 22
     mov ax, word [bx]                         ; 8b 07
     test ax, ax                               ; 85 c0
-    je short 0a082h                           ; 74 19
+    je short 0a0d2h                           ; 74 19
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 0a085h                          ; 75 17
+    jne short 0a0d5h                          ; 75 17
     xor ax, ax                                ; 31 c0
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov word [bp+008h], ax                    ; 89 46 08
@@ -15573,37 +15559,37 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     mov word [bp+004h], ax                    ; 89 46 04
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov word [bp+006h], ax                    ; 89 46 06
-    jmp near 0a28dh                           ; e9 08 02
+    jmp near 0a2ddh                           ; e9 08 02
     lds bx, [bp-00ch]                         ; c5 5e f4
     mov ax, word [bx+002h]                    ; 8b 47 02
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    je short 0a0abh                           ; 74 18
+    je short 0a0fbh                           ; 74 18
     mov ds, [bp-00ah]                         ; 8e 5e f6
     mov ax, word [bx+002h]                    ; 8b 47 02
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    jbe short 0a0a6h                          ; 76 05
+    jbe short 0a0f6h                          ; 76 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0a0cch                          ; eb 26
+    jmp short 0a11ch                          ; eb 26
     mov ax, strict word 0ffffh                ; b8 ff ff
-    jmp short 0a0cch                          ; eb 21
+    jmp short 0a11ch                          ; eb 21
     mov ds, [bp-00ah]                         ; 8e 5e f6
     mov ax, word [bx]                         ; 8b 07
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si]                         ; 3b 04
-    je short 0a0cah                           ; 74 13
+    je short 0a11ah                           ; 74 13
     mov ds, [bp-00ah]                         ; 8e 5e f6
     mov ax, word [bx]                         ; 8b 07
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si]                         ; 3b 04
-    jbe short 0a0c5h                          ; 76 02
-    jmp short 0a0a1h                          ; eb dc
+    jbe short 0a115h                          ; 76 02
+    jmp short 0a0f1h                          ; eb dc
     mov ax, strict word 0ffffh                ; b8 ff ff
-    jmp short 0a0cch                          ; eb 02
+    jmp short 0a11ch                          ; eb 02
     xor ax, ax                                ; 31 c0
     test ax, ax                               ; 85 c0
-    jnl short 0a0eeh                          ; 7d 1e
+    jnl short 0a13eh                          ; 7d 1e
     lds bx, [bp-00ch]                         ; c5 5e f4
     mov ax, word [bx]                         ; 8b 07
     mov dx, word [bx+002h]                    ; 8b 57 02
@@ -15613,47 +15599,47 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     lds bx, [bp-010h]                         ; c5 5e f0
     mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
     mov word [bx], strict word 00000h         ; c7 07 00 00
-    jmp short 0a082h                          ; eb 94
-    jne short 0a105h                          ; 75 15
+    jmp short 0a0d2h                          ; eb 94
+    jne short 0a155h                          ; 75 15
     mov ds, [bp-008h]                         ; 8e 5e f8
     mov word [di+002h], ax                    ; 89 45 02
     mov word [di], ax                         ; 89 05
     lds bx, [bp-010h]                         ; c5 5e f0
     mov word [bx], strict word 00001h         ; c7 07 01 00
     mov word [bx+002h], ax                    ; 89 47 02
-    jmp near 0a28dh                           ; e9 88 01
+    jmp near 0a2ddh                           ; e9 88 01
     lds bx, [bp-00ch]                         ; c5 5e f4
     mov ax, word [bx+002h]                    ; 8b 47 02
     test ax, ax                               ; 85 c0
-    je short 0a120h                           ; 74 11
+    je short 0a170h                           ; 74 11
     push ax                                   ; 50
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a2a0h                               ; e8 88 01
+    call 0a2f0h                               ; e8 88 01
     add sp, strict byte 00002h                ; 83 c4 02
     add ax, strict word 00010h                ; 05 10 00
-    jmp short 0a12dh                          ; eb 0d
+    jmp short 0a17dh                          ; eb 0d
     push word [bx]                            ; ff 37
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a2a0h                               ; e8 76 01
+    call 0a2f0h                               ; e8 76 01
     add sp, strict byte 00002h                ; 83 c4 02
     mov word [bp-014h], ax                    ; 89 46 ec
     mov ds, [bp-006h]                         ; 8e 5e fa
     mov ax, word [si+002h]                    ; 8b 44 02
     test ax, ax                               ; 85 c0
-    je short 0a14bh                           ; 74 11
+    je short 0a19bh                           ; 74 11
     push ax                                   ; 50
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a2a0h                               ; e8 5d 01
+    call 0a2f0h                               ; e8 5d 01
     add sp, strict byte 00002h                ; 83 c4 02
     add ax, strict word 00010h                ; 05 10 00
-    jmp short 0a158h                          ; eb 0d
+    jmp short 0a1a8h                          ; eb 0d
     push word [si]                            ; ff 34
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a2a0h                               ; e8 4b 01
+    call 0a2f0h                               ; e8 4b 01
     add sp, strict byte 00002h                ; 83 c4 02
     mov dx, word [bp-014h]                    ; 8b 56 ec
     sub dx, ax                                ; 29 c2
@@ -15664,42 +15650,42 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     mov ax, word [si+002h]                    ; 8b 44 02
     mov word [bp-016h], ax                    ; 89 46 ea
     test dx, dx                               ; 85 d2
-    je short 0a1c8h                           ; 74 56
+    je short 0a218h                           ; 74 56
     mov cx, dx                                ; 89 d1
     xor ch, dh                                ; 30 f5
     and cl, 01fh                              ; 80 e1 1f
     mov ax, word [si]                         ; 8b 04
     mov dx, word [si+002h]                    ; 8b 54 02
-    jcxz 0a186h                               ; e3 06
+    jcxz 0a1d6h                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0a180h                               ; e2 fa
+    loop 0a1d0h                               ; e2 fa
     mov word [bp-018h], ax                    ; 89 46 e8
     mov word [bp-016h], dx                    ; 89 56 ea
     mov ax, word [bp-016h]                    ; 8b 46 ea
     lds bx, [bp-00ch]                         ; c5 5e f4
     cmp ax, word [bx+002h]                    ; 3b 47 02
-    jnbe short 0a1a6h                         ; 77 0f
+    jnbe short 0a1f6h                         ; 77 0f
     mov ax, word [bp-016h]                    ; 8b 46 ea
     cmp ax, word [bx+002h]                    ; 3b 47 02
-    jne short 0a1aah                          ; 75 0b
+    jne short 0a1fah                          ; 75 0b
     mov ax, word [bp-018h]                    ; 8b 46 e8
     cmp ax, word [bx]                         ; 3b 07
-    jbe short 0a1aah                          ; 76 04
+    jbe short 0a1fah                          ; 76 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a1ach                          ; eb 02
+    jmp short 0a1fch                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a1d3h                           ; 74 23
+    je short 0a223h                           ; 74 23
     shr word [bp-016h], 1                     ; d1 6e ea
     rcr word [bp-018h], 1                     ; d1 5e e8
     dec word [bp-012h]                        ; ff 4e ee
-    jmp short 0a1d3h                          ; eb 18
+    jmp short 0a223h                          ; eb 18
     mov cx, strict word 0001fh                ; b9 1f 00
     sal word [bp-018h], 1                     ; d1 66 e8
     rcl word [bp-016h], 1                     ; d1 56 ea
-    loop 0a1beh                               ; e2 f8
-    jmp short 0a1b6h                          ; eb ee
+    loop 0a20eh                               ; e2 f8
+    jmp short 0a206h                          ; eb ee
     mov ax, word [si]                         ; 8b 04
     mov word [bp-018h], ax                    ; 89 46 e8
     mov ax, word [si+002h]                    ; 8b 44 02
@@ -15716,29 +15702,29 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     mov dx, word [di]                         ; 8b 15
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    jnbe short 0a1ffh                         ; 77 06
-    jne short 0a203h                          ; 75 08
+    jnbe short 0a24fh                         ; 77 06
+    jne short 0a253h                          ; 75 08
     cmp dx, word [si]                         ; 3b 14
-    jc short 0a203h                           ; 72 04
+    jc short 0a253h                           ; 72 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a205h                          ; eb 02
+    jmp short 0a255h                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a26ah                           ; 74 61
+    je short 0a2bah                           ; 74 61
     mov ds, [bp-008h]                         ; 8e 5e f8
     mov ax, word [di+002h]                    ; 8b 45 02
     cmp ax, word [bp-016h]                    ; 3b 46 ea
-    jnbe short 0a220h                         ; 77 0c
+    jnbe short 0a270h                         ; 77 0c
     cmp ax, word [bp-016h]                    ; 3b 46 ea
-    jne short 0a224h                          ; 75 0b
+    jne short 0a274h                          ; 75 0b
     mov ax, word [di]                         ; 8b 05
     cmp ax, word [bp-018h]                    ; 3b 46 e8
-    jc short 0a224h                           ; 72 04
+    jc short 0a274h                           ; 72 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a226h                          ; eb 02
+    jmp short 0a276h                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a250h                           ; 74 26
+    je short 0a2a0h                           ; 74 26
     mov ax, word [bp-018h]                    ; 8b 46 e8
     mov ds, [bp-008h]                         ; 8e 5e f8
     sub word [di], ax                         ; 29 05
@@ -15747,10 +15733,10 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     mov ax, strict word 00001h                ; b8 01 00
     xor dx, dx                                ; 31 d2
     mov cx, word [bp-012h]                    ; 8b 4e ee
-    jcxz 0a248h                               ; e3 06
+    jcxz 0a298h                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0a242h                               ; e2 fa
+    loop 0a292h                               ; e2 fa
     lds bx, [bp-010h]                         ; c5 5e f0
     or word [bx], ax                          ; 09 07
     or word [bx+002h], dx                     ; 09 57 02
@@ -15759,26 +15745,26 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     mov ax, word [di+002h]                    ; 8b 45 02
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    jc short 0a266h                           ; 72 06
-    jne short 0a26ch                          ; 75 0a
+    jc short 0a2b6h                           ; 72 06
+    jne short 0a2bch                          ; 75 0a
     cmp dx, word [si]                         ; 3b 14
-    jnc short 0a26ch                          ; 73 06
+    jnc short 0a2bch                          ; 73 06
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a26eh                          ; eb 04
-    jmp short 0a28dh                          ; eb 21
+    jmp short 0a2beh                          ; eb 04
+    jmp short 0a2ddh                          ; eb 21
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a281h                           ; 74 0f
-    jmp short 0a28dh                          ; eb 19
+    je short 0a2d1h                           ; 74 0f
+    jmp short 0a2ddh                          ; eb 19
     mov cx, strict word 0001fh                ; b9 1f 00
     sal word [bp-018h], 1                     ; d1 66 e8
     rcl word [bp-016h], 1                     ; d1 56 ea
-    loop 0a277h                               ; e2 f8
-    jmp short 0a287h                          ; eb 06
+    loop 0a2c7h                               ; e2 f8
+    jmp short 0a2d7h                          ; eb 06
     shr word [bp-016h], 1                     ; d1 6e ea
     rcr word [bp-018h], 1                     ; d1 5e e8
     dec word [bp-012h]                        ; ff 4e ee
-    jmp near 0a209h                           ; e9 7c ff
+    jmp near 0a259h                           ; e9 7c ff
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     mov dx, word [bp-01ah]                    ; 8b 56 e6
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -15787,25 +15773,25 @@ _DoUInt32Div:                                ; 0xfa035 LB 0x26b
     pop bp                                    ; 5d
     retn                                      ; c3
     times 0x6 db 0
-_ASMBitLastSetU16:                           ; 0xfa2a0 LB 0x18
+_ASMBitLastSetU16:                           ; 0xfa2f0 LB 0x18
     push bp                                   ; 55
     db  08bh, 0ech
     ; mov bp, sp                                ; 8b ec
     mov cx, word [bp+004h]                    ; 8b 4e 04
     test cx, cx                               ; 85 c9
-    je short 0a2b4h                           ; 74 0a
+    je short 0a304h                           ; 74 0a
     mov ax, strict word 00010h                ; b8 10 00
     sal cx, 1                                 ; d1 e1
-    jc short 0a2b6h                           ; 72 05
+    jc short 0a306h                           ; 72 05
     dec ax                                    ; 48
-    jmp short 0a2adh                          ; eb f9
+    jmp short 0a2fdh                          ; eb f9
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     pop bp                                    ; 5d
     retn                                      ; c3
 
-  ; Padding 0x3748 bytes at 0xfa2b8
-  times 14152 db 0
+  ; Padding 0x36f8 bytes at 0xfa308
+  times 14072 db 0
 
 section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
 bios32_service:                              ; 0xfda00 LB 0x26
@@ -15852,7 +15838,7 @@ apm_pm32_entry:                              ; 0xfda40 LB 0x21
     pop bp                                    ; 5d
     add bp, strict byte 00008h                ; 83 c5 08
     push ebp                                  ; 66 55
-    mov bp, 0a026h                            ; bd 26 a0
+    mov bp, 0a076h                            ; bd 76 a0
     add byte [bx+si], al                      ; 00 00
     push ebp                                  ; 66 55
     mov AH, strict byte 003h                  ; b4 03
@@ -16461,7 +16447,7 @@ normal_post:                                 ; 0xfe0c6 LB 0x1ed
     mov ax, 0c000h                            ; b8 00 c0
     mov dx, 0c800h                            ; ba 00 c8
     call 01600h                               ; e8 ea 33
-    call 04e57h                               ; e8 3e 6c
+    call 04eabh                               ; e8 92 6c
     pop DS                                    ; 1f
     mov ax, 0ff53h                            ; b8 53 ff
     mov word [0003ch], ax                     ; a3 3c 00
@@ -16578,8 +16564,8 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     cld                                       ; fc
     call 01c9fh                               ; e8 63 39
     call 02118h                               ; e8 d9 3d
-    call 09869h                               ; e8 27 b5
-    call 086f4h                               ; e8 af a3
+    call 098bdh                               ; e8 7b b5
+    call 08748h                               ; e8 03 a4
     call 0ed2fh                               ; e8 e7 09
     call 0e2d2h                               ; e8 87 ff
     push CS                                   ; 0e
@@ -16589,7 +16575,7 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     mov dx, 0f000h                            ; ba 00 f0
     call 01600h                               ; e8 a9 32
     call 0178dh                               ; e8 33 34
-    call 03acfh                               ; e8 72 57
+    call 03b23h                               ; e8 c6 57
     sti                                       ; fb
     int 019h                                  ; cd 19
     sti                                       ; fb
@@ -16691,7 +16677,7 @@ biosorg_check_at_0E739h:                     ; 0xfe739 LB 0x1a
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 063bch                               ; e8 7a 7c
+    call 06410h                               ; e8 ce 7c
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -16767,7 +16753,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05687h                               ; e8 45 6e
+    call 056dbh                               ; e8 99 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16784,7 +16770,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05687h                               ; e8 27 6e
+    call 056dbh                               ; e8 7b 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16829,7 +16815,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0515fh                               ; e8 96 67
+    call 051b3h                               ; e8 ea 67
     pop ES                                    ; 07
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -16845,7 +16831,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06e63h                               ; e8 84 84
+    call 06eb7h                               ; e8 d8 84
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -16867,16 +16853,16 @@ int13_relocated:                             ; 0xfec5b LB 0x55
     pop DS                                    ; 1f
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 03b13h                           ; e9 a2 4e
+    jmp near 03b67h                           ; e9 f6 4e
     push ES                                   ; 06
     push ax                                   ; 50
     push bx                                   ; 53
     push cx                                   ; 51
     push dx                                   ; 52
-    call 03ae7h                               ; e8 6e 4e
+    call 03b3bh                               ; e8 c2 4e
     cmp AL, strict byte 000h                  ; 3c 00
     je short 0ecabh                           ; 74 2e
-    call 03afdh                               ; e8 7d 4e
+    call 03b51h                               ; e8 d1 4e
     pop dx                                    ; 5a
     push dx                                   ; 52
     db  03ah, 0c2h
@@ -16894,7 +16880,7 @@ int13_relocated:                             ; 0xfec5b LB 0x55
     pop DS                                    ; 1f
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 0410ch                           ; e9 75 54
+    jmp near 04160h                           ; e9 c9 54
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
     ; cmp al, dl                                ; 3a c2
@@ -16934,22 +16920,22 @@ int13_legacy:                                ; 0xfecb4 LB 0x14
     test dl, 080h                             ; f6 c2 80
     jne short 0ecc8h                          ; 75 06
     push 0ece9h                               ; 68 e9 ec
-    jmp near 0315ah                           ; e9 92 44
+    jmp near 03178h                           ; e9 b0 44
 int13_notfloppy:                             ; 0xfecc8 LB 0x14
     cmp dl, 0e0h                              ; 80 fa e0
     jc short 0ecdch                           ; 72 0f
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 0454eh                               ; e8 79 58
+    call 045a2h                               ; e8 cd 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 05a5eh                               ; e8 7a 6d
+    call 05ab2h                               ; e8 ce 6d
     jmp short 0ece9h                          ; eb 03
-    call 05eadh                               ; e8 c4 71
+    call 05f01h                               ; e8 18 72
 int13_out:                                   ; 0xfece9 LB 0x4
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17163,7 +17149,7 @@ int17_handler:                               ; 0xfefd4 LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07801h                               ; e8 24 88
+    call 07855h                               ; e8 78 88
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -17214,28 +17200,28 @@ int19_relocated:                             ; 0xff0ac LB 0x90
     ; mov bp, sp                                ; 8b ec
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 04bd3h                               ; e8 03 5b
+    call 04c27h                               ; e8 57 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 04bd3h                               ; e8 f6 5a
+    call 04c27h                               ; e8 4a 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 04bd3h                               ; e8 e9 5a
+    call 04c27h                               ; e8 3d 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 04bd3h                               ; e8 dc 5a
+    call 04c27h                               ; e8 30 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
@@ -17519,7 +17505,7 @@ int15_handler:                               ; 0xff859 LB 0x40
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06cd9h                               ; e8 72 74
+    call 06d2dh                               ; e8 c6 74
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -17541,20 +17527,20 @@ int15_handler:                               ; 0xff859 LB 0x40
     je short 0f894h                           ; 74 0e
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f899h                           ; 74 0e
-    call 06613h                               ; e8 85 6d
+    call 06667h                               ; e8 d9 6d
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
     popfw                                     ; 9d
     jmp short 0f8a5h                          ; eb 11
-    call 099bbh                               ; e8 24 a1
+    call 09a0fh                               ; e8 78 a1
     jmp short 0f88eh                          ; eb f5
 int15_handler_mouse:                         ; 0xff899 LB 0x5
-    call 07474h                               ; e8 d8 7b
+    call 074c8h                               ; e8 2c 7c
     jmp short 0f88eh                          ; eb f0
 int15_handler32:                             ; 0xff89e LB 0x7
     pushaw                                    ; 60
-    call 0694fh                               ; e8 ad 70
+    call 069a3h                               ; e8 01 71
     popaw                                     ; 61
     jmp short 0f88fh                          ; eb ea
 iret_modify_cf:                              ; 0xff8a5 LB 0x14
@@ -17586,7 +17572,7 @@ int74_handler:                               ; 0xff8b9 LB 0x2b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 073a2h                               ; e8 d8 7a
+    call 073f6h                               ; e8 2c 7b
     pop cx                                    ; 59
     jcxz 0f8d9h                               ; e3 0c
     push strict byte 00000h                   ; 6a 00
@@ -17618,7 +17604,7 @@ int70_handler:                               ; 0xff8f6 LB 0x1f
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07047h                               ; e8 48 77
+    call 0709bh                               ; e8 9c 77
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17707,7 +17693,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07106h                               ; e8 8f 72
+    call 0715ah                               ; e8 e3 72
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17812,4 +17798,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, 0c9h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 089h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
index fcac779..993f762 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative286.md5sum
@@ -1 +1 @@
-373ec368a219608acb12fe2707c27727 *VBoxPcBios286.rom
+5f745a736014b416ef1fa17602a68a12 *VBoxPcBios286.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.asm
index d2a8d1f..35208ad 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, 0dfh, 080h, 006h, 090h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 0cch, 02bh, 00fh, 081h, 036h, 090h
 _softrst:                                    ; 0xf0076 LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 0b4h, 02eh, 091h, 03bh, 091h, 03bh
+    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  029h, 07fh, 004h, 080h, 0dch, 08eh, 082h, 08fh, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  059h, 07fh, 034h, 080h, 00ch, 08fh, 0b2h, 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.0', 000h, 000h
+    db  'VirtualBox 5.1.2', 000h, 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -1152,7 +1152,7 @@ _panic_msg_keyb_buffer_full:                 ; 0xf1168 LB 0x20
   ; Padding 0x478 bytes at 0xf1188
   times 1144 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x89b5 class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x89e5 class=CODE group=AUTO
 rom_scan_:                                   ; 0xf1600 LB 0x50
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -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 07af4h                               ; e8 cb 62
+    call 07b24h                               ; e8 fb 62
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
@@ -1603,7 +1603,7 @@ put_luint_:                                  ; 0xf1927 LB 0x72
     mov dx, cx                                ; 89 ca
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 09ec0h                               ; e8 7f 85
+    call 09ef0h                               ; e8 af 85
     mov word [bp-008h], ax                    ; 89 46 f8
     mov cx, dx                                ; 89 d1
     mov dx, ax                                ; 89 c2
@@ -1829,7 +1829,7 @@ bios_printf_:                                ; 0xf19da LB 0x33d
     mov cx, word [bp-024h]                    ; 8b 4e dc
     mov dx, word [bp-026h]                    ; 8b 56 da
     mov si, word [bp-01eh]                    ; 8b 76 e2
-    call 09f00h                               ; e8 8d 83
+    call 09f30h                               ; e8 bd 83
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
     and AL, strict byte 00fh                  ; 24 0f
@@ -2271,7 +2271,7 @@ ata_cmd_data_in_:                            ; 0xf1ec2 LB 0x2e2
     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 09f00h                               ; e8 31 7f
+    call 09f30h                               ; e8 61 7f
     xor dh, dh                                ; 30 f6
     mov word [bp-016h], dx                    ; 89 56 ea
     mov bx, word [bp-018h]                    ; 8b 5e e8
@@ -2281,7 +2281,7 @@ ata_cmd_data_in_:                            ; 0xf1ec2 LB 0x2e2
     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 09f00h                               ; e8 11 7f
+    call 09f30h                               ; e8 41 7f
     mov bx, dx                                ; 89 d3
     mov ax, word [bp-01eh]                    ; 8b 46 e2
     xor al, al                                ; 30 c0
@@ -2312,7 +2312,7 @@ ata_cmd_data_in_:                            ; 0xf1ec2 LB 0x2e2
     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 09f00h                               ; e8 c0 7e
+    call 09f30h                               ; e8 f0 7e
     mov word [bp-014h], dx                    ; 89 56 ec
     mov bx, word [bp-018h]                    ; 8b 5e e8
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
@@ -2321,7 +2321,7 @@ ata_cmd_data_in_:                            ; 0xf1ec2 LB 0x2e2
     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 09f00h                               ; e8 a2 7e
+    call 09f30h                               ; e8 d2 7e
     and dx, strict byte 0000fh                ; 83 e2 0f
     or dl, 040h                               ; 80 ca 40
     mov bx, dx                                ; 89 d3
@@ -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 059a6h                               ; e8 66 35
+    call 059d6h                               ; e8 96 35
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -2877,7 +2877,7 @@ _ata_detect:                                 ; 0xf21a4 LB 0x65c
     mov cx, word [es:si+038h]                 ; 26 8b 4c 38
     mov dx, word [es:si+036h]                 ; 26 8b 54 36
     mov si, strict word 0000bh                ; be 0b 00
-    call 09f00h                               ; e8 da 78
+    call 09f30h                               ; e8 0a 79
     mov word [bp-030h], dx                    ; 89 56 d0
     mov word [bp-02eh], cx                    ; 89 4e d2
     movzx ax, byte [bp-001c3h]                ; 0f b6 86 3d fe
@@ -3148,7 +3148,7 @@ ata_cmd_data_out_:                           ; 0xf2800 LB 0x2bc
     mov cx, word [bp-016h]                    ; 8b 4e ea
     mov dx, word [bp-01eh]                    ; 8b 56 e2
     mov si, strict word 00018h                ; be 18 00
-    call 09f00h                               ; e8 04 76
+    call 09f30h                               ; e8 34 76
     xor dh, dh                                ; 30 f6
     mov word [bp-01ch], dx                    ; 89 56 e4
     mov ax, word [bp-010h]                    ; 8b 46 f0
@@ -3156,7 +3156,7 @@ ata_cmd_data_out_:                           ; 0xf2800 LB 0x2bc
     mov cx, word [bp-016h]                    ; 8b 4e ea
     mov dx, word [bp-01eh]                    ; 8b 56 e2
     mov si, strict word 00020h                ; be 20 00
-    call 09f00h                               ; e8 ed 75
+    call 09f30h                               ; e8 1d 76
     mov bx, dx                                ; 89 d3
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     xor al, al                                ; 30 c0
@@ -3190,14 +3190,14 @@ ata_cmd_data_out_:                           ; 0xf2800 LB 0x2bc
     mov cx, word [bp-016h]                    ; 8b 4e ea
     mov dx, word [bp-01eh]                    ; 8b 56 e2
     mov si, strict word 00008h                ; be 08 00
-    call 09f00h                               ; e8 99 75
+    call 09f30h                               ; e8 c9 75
     mov word [bp-010h], ax                    ; 89 46 f0
     mov word [bp-014h], bx                    ; 89 5e ec
     mov word [bp-016h], cx                    ; 89 4e ea
     mov word [bp-01eh], dx                    ; 89 56 e2
     mov word [bp-026h], dx                    ; 89 56 da
     mov si, strict word 00010h                ; be 10 00
-    call 09f00h                               ; e8 84 75
+    call 09f30h                               ; e8 b4 75
     mov word [bp-01eh], dx                    ; 89 56 e2
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
@@ -3903,20 +3903,22 @@ floppy_wait_for_interrupt_or_timeout_:       ; 0xf2f9a LB 0x46
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_reset_controller_:                    ; 0xf2fe0 LB 0x2b
+floppy_reset_controller_:                    ; 0xf2fe0 LB 0x48
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
+    push cx                                   ; 51
     push dx                                   ; 52
+    mov bx, ax                                ; 89 c3
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    mov bx, ax                                ; 89 c3
-    movzx ax, bl                              ; 0f b6 c3
+    mov cx, ax                                ; 89 c1
+    movzx ax, cl                              ; 0f b6 c1
     and AL, strict byte 0fbh                  ; 24 fb
     out DX, AL                                ; ee
-    mov al, bl                                ; 88 d8
+    mov al, cl                                ; 88 c8
     or AL, strict byte 004h                   ; 0c 04
     out DX, AL                                ; ee
     mov dx, 003f4h                            ; ba f4 03
@@ -3925,13 +3927,23 @@ floppy_reset_controller_:                    ; 0xf2fe0 LB 0x2b
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02ff8h                          ; 75 f4
-    lea sp, [bp-004h]                         ; 8d 66 fc
+    jne short 02ffbh                          ; 75 f4
+    lea cx, [bx+00090h]                       ; 8d 8f 90 00
+    mov dx, cx                                ; 89 ca
+    mov ax, strict word 00040h                ; b8 40 00
+    call 016b8h                               ; e8 a5 e6
+    and AL, strict byte 0efh                  ; 24 ef
+    movzx bx, al                              ; 0f b6 d8
+    mov dx, cx                                ; 89 ca
+    mov ax, strict word 00040h                ; b8 40 00
+    call 016c6h                               ; e8 a6 e6
+    lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
+    pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_prepare_controller_:                  ; 0xf300b LB 0x81
+floppy_prepare_controller_:                  ; 0xf3028 LB 0x81
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -3941,12 +3953,12 @@ floppy_prepare_controller_:                  ; 0xf300b LB 0x81
     mov cx, ax                                ; 89 c1
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 9b e6
+    call 016b8h                               ; e8 7e e6
     and AL, strict byte 07fh                  ; 24 7f
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 9b e6
+    call 016c6h                               ; e8 7e e6
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -3954,9 +3966,9 @@ floppy_prepare_controller_:                  ; 0xf300b LB 0x81
     and AL, strict byte 004h                  ; 24 04
     mov byte [bp-008h], al                    ; 88 46 f8
     test cx, cx                               ; 85 c9
-    je short 0303eh                           ; 74 04
+    je short 0305bh                           ; 74 04
     mov AL, strict byte 020h                  ; b0 20
-    jmp short 03040h                          ; eb 02
+    jmp short 0305dh                          ; eb 02
     mov AL, strict byte 010h                  ; b0 10
     or AL, strict byte 00ch                   ; 0c 0c
     or al, cl                                 ; 08 c8
@@ -3965,10 +3977,10 @@ floppy_prepare_controller_:                  ; 0xf300b LB 0x81
     mov bx, strict word 00025h                ; bb 25 00
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 016c6h                               ; e8 73 e6
+    call 016c6h                               ; e8 56 e6
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 5c e6
+    call 016b8h                               ; e8 3f e6
     shr al, 006h                              ; c0 e8 06
     mov dx, 003f7h                            ; ba f7 03
     out DX, AL                                ; ee
@@ -3978,21 +3990,21 @@ floppy_prepare_controller_:                  ; 0xf300b LB 0x81
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 03063h                          ; 75 f4
+    jne short 03080h                          ; 75 f4
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 03084h                          ; 75 0f
-    call 02f79h                               ; e8 01 ff
+    jne short 030a1h                          ; 75 0f
+    call 02f79h                               ; e8 e4 fe
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 42 e6
+    call 016c6h                               ; e8 25 e6
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_known_:                         ; 0xf308c LB 0x43
+floppy_media_known_:                         ; 0xf30a9 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -4000,32 +4012,32 @@ floppy_media_known_:                         ; 0xf308c LB 0x43
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 1c e6
+    call 016b8h                               ; e8 ff e5
     mov ah, al                                ; 88 c4
     test bx, bx                               ; 85 db
-    je short 030a4h                           ; 74 02
+    je short 030c1h                           ; 74 02
     shr al, 1                                 ; d0 e8
     and AL, strict byte 001h                  ; 24 01
-    jne short 030ach                          ; 75 04
+    jne short 030c9h                          ; 75 04
     xor ah, ah                                ; 30 e4
-    jmp short 030c8h                          ; eb 1c
+    jmp short 030e5h                          ; eb 1c
     mov dx, 00090h                            ; ba 90 00
     test bx, bx                               ; 85 db
-    je short 030b6h                           ; 74 03
+    je short 030d3h                           ; 74 03
     mov dx, 00091h                            ; ba 91 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 fc e5
+    call 016b8h                               ; e8 df e5
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
     and AL, strict byte 001h                  ; 24 01
-    je short 030a8h                           ; 74 e3
+    je short 030c5h                           ; 74 e3
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_read_id_:                             ; 0xf30cf LB 0x40
+floppy_read_id_:                             ; 0xf30ec LB 0x40
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -4033,24 +4045,24 @@ floppy_read_id_:                             ; 0xf30cf LB 0x40
     push si                                   ; 56
     sub sp, strict byte 00008h                ; 83 ec 08
     mov bx, ax                                ; 89 c3
-    call 0300bh                               ; e8 2e ff
+    call 03028h                               ; e8 2e ff
     mov AL, strict byte 04ah                  ; b0 4a
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02f79h                               ; e8 90 fe
+    call 02f79h                               ; e8 73 fe
     xor si, si                                ; 31 f6
-    jmp short 030f2h                          ; eb 05
+    jmp short 0310fh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 030feh                          ; 7d 0c
+    jnl short 0311bh                          ; 7d 0c
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+si-00eh], al                 ; 88 42 f2
     inc si                                    ; 46
-    jmp short 030edh                          ; eb ef
+    jmp short 0310ah                          ; eb ef
     test byte [bp-00eh], 0c0h                 ; f6 46 f2 c0
     db  00fh, 094h, 0c0h
     ; sete al                                   ; 0f 94 c0
@@ -4061,35 +4073,35 @@ floppy_read_id_:                             ; 0xf30cf LB 0x40
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_recal_:                         ; 0xf310f LB 0x48
+floppy_drive_recal_:                         ; 0xf312c LB 0x48
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push cx                                   ; 51
     push dx                                   ; 52
     mov bx, ax                                ; 89 c3
-    call 0300bh                               ; e8 f1 fe
+    call 03028h                               ; e8 f1 fe
     mov AL, strict byte 007h                  ; b0 07
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02f79h                               ; e8 53 fe
+    call 02f79h                               ; e8 36 fe
     test bx, bx                               ; 85 db
-    je short 03131h                           ; 74 07
+    je short 0314eh                           ; 74 07
     or AL, strict byte 002h                   ; 0c 02
     mov cx, 00095h                            ; b9 95 00
-    jmp short 03136h                          ; eb 05
+    jmp short 03153h                          ; eb 05
     or AL, strict byte 001h                   ; 0c 01
     mov cx, 00094h                            ; b9 94 00
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 84 e5
+    call 016c6h                               ; e8 67 e5
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 7a e5
+    call 016c6h                               ; e8 5d e5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -4097,7 +4109,7 @@ floppy_drive_recal_:                         ; 0xf310f LB 0x48
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_sense_:                         ; 0xf3157 LB 0xf0
+floppy_media_sense_:                         ; 0xf3174 LB 0xf0
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -4106,85 +4118,85 @@ floppy_media_sense_:                         ; 0xf3157 LB 0xf0
     push si                                   ; 56
     push di                                   ; 57
     mov di, ax                                ; 89 c7
-    call 0310fh                               ; e8 ab ff
+    call 0312ch                               ; e8 ab ff
     test ax, ax                               ; 85 c0
-    jne short 0316dh                          ; 75 05
+    jne short 0318ah                          ; 75 05
     xor cx, cx                                ; 31 c9
-    jmp near 0323bh                           ; e9 ce 00
+    jmp near 03258h                           ; e9 ce 00
     mov ax, strict word 00010h                ; b8 10 00
-    call 01714h                               ; e8 a1 e5
+    call 01714h                               ; e8 84 e5
     test di, di                               ; 85 ff
-    jne short 0317eh                          ; 75 07
+    jne short 0319bh                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03183h                          ; eb 05
+    jmp short 031a0h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     cmp cl, 001h                              ; 80 f9 01
-    jne short 03191h                          ; 75 09
+    jne short 031aeh                          ; 75 09
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 015h                  ; b5 15
     mov si, strict word 00001h                ; be 01 00
-    jmp short 031cfh                          ; eb 3e
+    jmp short 031ech                          ; eb 3e
     cmp cl, 002h                              ; 80 f9 02
-    jne short 0319ch                          ; 75 06
+    jne short 031b9h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 035h                  ; b5 35
-    jmp short 0318ch                          ; eb f0
+    jmp short 031a9h                          ; eb f0
     cmp cl, 003h                              ; 80 f9 03
-    jne short 031a7h                          ; 75 06
+    jne short 031c4h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 0318ch                          ; eb e5
+    jmp short 031a9h                          ; eb e5
     cmp cl, 004h                              ; 80 f9 04
-    jne short 031b2h                          ; 75 06
+    jne short 031cfh                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 0318ch                          ; eb da
+    jmp short 031a9h                          ; eb da
     cmp cl, 005h                              ; 80 f9 05
-    jne short 031bdh                          ; 75 06
+    jne short 031dah                          ; 75 06
     mov CL, strict byte 0cch                  ; b1 cc
     mov CH, strict byte 0d7h                  ; b5 d7
-    jmp short 0318ch                          ; eb cf
+    jmp short 031a9h                          ; eb cf
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 031c7h                           ; 74 05
+    je short 031e4h                           ; 74 05
     cmp cl, 00fh                              ; 80 f9 0f
-    jne short 031c9h                          ; 75 02
-    jmp short 031b7h                          ; eb ee
+    jne short 031e6h                          ; 75 02
+    jmp short 031d4h                          ; eb ee
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
     xor si, si                                ; 31 f6
     movzx bx, cl                              ; 0f b6 d9
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 eb e4
+    call 016c6h                               ; e8 ce e4
     mov ax, di                                ; 89 f8
-    call 030cfh                               ; e8 ef fe
+    call 030ech                               ; e8 ef fe
     test ax, ax                               ; 85 c0
-    jne short 03216h                          ; 75 32
+    jne short 03233h                          ; 75 32
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    je short 03216h                           ; 74 2a
+    je short 03233h                           ; 74 2a
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03203h                           ; 74 0f
+    je short 03220h                           ; 74 0f
     mov ah, cl                                ; 88 cc
     and ah, 03fh                              ; 80 e4 3f
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 0320fh                           ; 74 12
+    je short 0322ch                           ; 74 12
     test al, al                               ; 84 c0
-    je short 03208h                           ; 74 07
-    jmp short 031cfh                          ; eb cc
+    je short 03225h                           ; 74 07
+    jmp short 031ech                          ; eb cc
     and cl, 03fh                              ; 80 e1 3f
-    jmp short 031cfh                          ; eb c7
+    jmp short 031ech                          ; eb c7
     mov cl, ah                                ; 88 e1
     or cl, 040h                               ; 80 c9 40
-    jmp short 031cfh                          ; eb c0
+    jmp short 031ech                          ; eb c0
     mov cl, ah                                ; 88 e1
     or cl, 080h                               ; 80 c9 80
-    jmp short 031cfh                          ; eb b9
+    jmp short 031ech                          ; eb b9
     test di, di                               ; 85 ff
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
@@ -4193,11 +4205,11 @@ floppy_media_sense_:                         ; 0xf3157 LB 0xf0
     movzx bx, cl                              ; 0f b6 d9
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 98 e4
+    call 016c6h                               ; e8 7b e4
     movzx bx, ch                              ; 0f b6 dd
     mov dx, di                                ; 89 fa
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 8d e4
+    call 016c6h                               ; e8 70 e4
     mov cx, si                                ; 89 f1
     mov ax, cx                                ; 89 c8
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -4208,17 +4220,17 @@ floppy_media_sense_:                         ; 0xf3157 LB 0xf0
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_exists_:                        ; 0xf3247 LB 0x24
+floppy_drive_exists_:                        ; 0xf3264 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, ax                                ; 89 c2
     mov ax, strict word 00010h                ; b8 10 00
-    call 01714h                               ; e8 c1 e4
+    call 01714h                               ; e8 a4 e4
     test dx, dx                               ; 85 d2
-    jne short 0325ch                          ; 75 05
+    jne short 03279h                          ; 75 05
     shr al, 004h                              ; c0 e8 04
-    jmp short 0325eh                          ; eb 02
+    jmp short 0327bh                          ; eb 02
     and AL, strict byte 00fh                  ; 24 0f
     test al, al                               ; 84 c0
     db  00fh, 095h, 0c0h
@@ -4228,7 +4240,7 @@ floppy_drive_exists_:                        ; 0xf3247 LB 0x24
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_diskette_function:                    ; 0xf326b LB 0x8f7
+_int13_diskette_function:                    ; 0xf3288 LB 0x90a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -4236,7 +4248,7 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     sub sp, strict byte 00016h                ; 83 ec 16
     mov bx, word [bp+016h]                    ; 8b 5e 16
     shr bx, 008h                              ; c1 eb 08
-    mov byte [bp-006h], bl                    ; 88 5e fa
+    mov byte [bp-008h], bl                    ; 88 5e f8
     mov si, word [bp+016h]                    ; 8b 76 16
     and si, 000ffh                            ; 81 e6 ff 00
     mov al, byte [bp+00eh]                    ; 8a 46 0e
@@ -4244,76 +4256,76 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     mov cl, byte [bp+016h]                    ; 8a 4e 16
     mov dx, word [bp+014h]                    ; 8b 56 14
     shr dx, 008h                              ; c1 ea 08
-    mov word [bp-010h], dx                    ; 89 56 f0
+    mov word [bp-012h], dx                    ; 89 56 ee
     cmp bl, 008h                              ; 80 fb 08
-    jc short 032d2h                           ; 72 38
+    jc short 032efh                           ; 72 38
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     or dl, 001h                               ; 80 ca 01
     cmp bl, 008h                              ; 80 fb 08
-    jbe near 03828h                           ; 0f 86 81 05
+    jbe near 03856h                           ; 0f 86 92 05
     cmp bl, 016h                              ; 80 fb 16
-    jc short 032c8h                           ; 72 1c
+    jc short 032e5h                           ; 72 1c
     or si, 00100h                             ; 81 ce 00 01
     cmp bl, 016h                              ; 80 fb 16
-    jbe near 0395ch                           ; 0f 86 a5 06
+    jbe near 0398ch                           ; 0f 86 b8 06
     cmp bl, 018h                              ; 80 fb 18
-    je near 039f2h                            ; 0f 84 34 07
+    je near 03a22h                            ; 0f 84 47 07
     cmp bl, 017h                              ; 80 fb 17
-    je near 03980h                            ; 0f 84 bb 06
-    jmp near 03b3fh                           ; e9 77 08
+    je near 039b0h                            ; 0f 84 ce 06
+    jmp near 03b6fh                           ; e9 8a 08
     cmp bl, 015h                              ; 80 fb 15
-    je near 03918h                            ; 0f 84 49 06
-    jmp near 03b3fh                           ; e9 6d 08
+    je near 03948h                            ; 0f 84 5c 06
+    jmp near 03b6fh                           ; e9 80 08
     cmp bl, 001h                              ; 80 fb 01
-    jc short 032ech                           ; 72 15
-    jbe near 03365h                           ; 0f 86 8a 00
+    jc short 03309h                           ; 72 15
+    jbe near 03382h                           ; 0f 86 8a 00
     cmp bl, 005h                              ; 80 fb 05
-    je near 036a2h                            ; 0f 84 c0 03
+    je near 036cch                            ; 0f 84 cd 03
     cmp bl, 004h                              ; 80 fb 04
-    jbe near 03383h                           ; 0f 86 9a 00
-    jmp near 03b3fh                           ; e9 53 08
+    jbe near 033a0h                           ; 0f 86 9a 00
+    jmp near 03b6fh                           ; e9 66 08
     test bl, bl                               ; 84 db
-    jne near 03b3fh                           ; 0f 85 4d 08
+    jne near 03b6fh                           ; 0f 85 60 08
     mov al, byte [bp+00eh]                    ; 8a 46 0e
-    mov byte [bp-008h], al                    ; 88 46 f8
+    mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03310h                          ; 76 14
+    jbe short 0332dh                          ; 76 14
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02f34h                               ; e8 27 fc
-    jmp near 0367eh                           ; e9 6e 03
+    call 02f34h                               ; e8 0a fc
+    jmp near 036a8h                           ; e9 7b 03
     mov ax, strict word 00010h                ; b8 10 00
-    call 01714h                               ; e8 fe e3
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 03323h                          ; 75 07
+    call 01714h                               ; e8 e1 e3
+    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
+    jne short 03340h                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03328h                          ; eb 05
+    jmp short 03345h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     test cl, cl                               ; 84 c9
-    jne short 0333ch                          ; 75 10
+    jne short 03359h                          ; 75 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp short 0330ah                          ; eb ce
+    jmp short 03327h                          ; eb ce
     xor bx, bx                                ; 31 db
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 7f e3
+    call 016c6h                               ; e8 62 e3
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02f34h                               ; e8 e3 fb
+    call 02f34h                               ; e8 c6 fb
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     xor dx, dx                                ; 31 d2
-    call 02f4ch                               ; e8 ee fb
+    call 02f4ch                               ; e8 d1 fb
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -4322,66 +4334,66 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov dx, 00441h                            ; ba 41 04
     xor ax, ax                                ; 31 c0
-    call 016b8h                               ; e8 47 e3
+    call 016b8h                               ; e8 2a e3
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     or si, dx                                 ; 09 d6
     mov word [bp+016h], si                    ; 89 76 16
     test al, al                               ; 84 c0
-    je short 0335eh                           ; 74 de
-    jmp near 0367eh                           ; e9 fb 02
+    je short 0337bh                           ; 74 de
+    jmp near 036a8h                           ; e9 08 03
     mov ch, cl                                ; 88 cd
-    mov dl, byte [bp-010h]                    ; 8a 56 f0
-    mov byte [bp-00ch], dl                    ; 88 56 f4
-    mov byte [bp-00ah], ah                    ; 88 66 f6
+    mov dl, byte [bp-012h]                    ; 8a 56 ee
+    mov byte [bp-00ah], dl                    ; 88 56 f6
+    mov byte [bp-006h], ah                    ; 88 66 fa
     mov dx, word [bp+012h]                    ; 8b 56 12
     shr dx, 008h                              ; c1 ea 08
     mov byte [bp-00eh], dl                    ; 88 56 f2
-    mov byte [bp-008h], al                    ; 88 46 f8
+    mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 033ach                         ; 77 0e
+    jnbe short 033c9h                         ; 77 0e
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 033ach                         ; 77 09
+    jnbe short 033c9h                         ; 77 09
     test cl, cl                               ; 84 c9
-    je short 033ach                           ; 74 05
+    je short 033c9h                           ; 74 05
     cmp cl, 048h                              ; 80 f9 48
-    jbe short 033d6h                          ; 76 2a
+    jbe short 033f3h                          ; 76 2a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 e2 e5
+    call 01999h                               ; e8 c5 e5
     push 00275h                               ; 68 75 02
     push 0028dh                               ; 68 8d 02
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 18 e6
+    call 019dah                               ; e8 fb e5
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 0344ch                           ; e9 76 00
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 03247h                               ; e8 6a fe
+    jmp near 03469h                           ; e9 76 00
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    call 03264h                               ; e8 6a fe
     test ax, ax                               ; 85 c0
-    je near 034dfh                            ; 0f 84 fc 00
-    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
+    je near 03500h                            ; 0f 84 00 01
+    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     mov ax, dx                                ; 89 d0
-    call 0308ch                               ; e8 a0 fc
+    call 030a9h                               ; e8 a0 fc
     test ax, ax                               ; 85 c0
-    jne short 03409h                          ; 75 19
+    jne short 03426h                          ; 75 19
     mov ax, dx                                ; 89 d0
-    call 03157h                               ; e8 62 fd
+    call 03174h                               ; e8 62 fd
     test ax, ax                               ; 85 c0
-    jne short 03409h                          ; 75 10
+    jne short 03426h                          ; 75 10
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp short 0344ch                          ; eb 43
-    cmp byte [bp-006h], 002h                  ; 80 7e fa 02
-    jne near 03571h                           ; 0f 85 60 01
+    jmp short 03469h                          ; eb 43
+    cmp byte [bp-008h], 002h                  ; 80 7e f8 02
+    jne near 03599h                           ; 0f 85 6b 01
     mov ax, word [bp+006h]                    ; 8b 46 06
     shr ax, 00ch                              ; c1 e8 0c
     mov cl, al                                ; 88 c1
@@ -4389,36 +4401,36 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     sal dx, 004h                              ; c1 e2 04
     mov bx, word [bp+010h]                    ; 8b 5e 10
     add bx, dx                                ; 01 d3
-    mov word [bp-012h], bx                    ; 89 5e ee
+    mov word [bp-010h], bx                    ; 89 5e f0
     cmp dx, bx                                ; 39 da
-    jbe short 0342dh                          ; 76 02
+    jbe short 0344ah                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     movzx bx, ch                              ; 0f b6 dd
     sal bx, 009h                              ; c1 e3 09
     dec bx                                    ; 4b
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     add ax, bx                                ; 01 d8
-    cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 03456h                          ; 73 18
+    cmp ax, word [bp-010h]                    ; 3b 46 f0
+    jnc short 03473h                          ; 73 18
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 009h                               ; 80 cc 09
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00009h                ; b8 09 00
-    call 02f34h                               ; e8 e5 fa
+    call 02f34h                               ; e8 c8 fa
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 0367eh                           ; e9 28 02
+    jmp near 036a8h                           ; e9 35 02
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
     out DX, AL                                ; ee
-    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov al, byte [bp-010h]                    ; 8a 46 f0
     mov dx, strict word 00004h                ; ba 04 00
     out DX, AL                                ; ee
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     shr ax, 008h                              ; c1 e8 08
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
@@ -4439,26 +4451,27 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 0300bh                               ; e8 70 fb
+    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
+    mov ax, bx                                ; 89 d8
+    call 03028h                               ; e8 6e fb
     mov AL, strict byte 0e6h                  ; b0 e6
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
-    movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
-    sal dx, 002h                              ; c1 e2 02
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    sal ax, 002h                              ; c1 e0 02
+    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     or ax, dx                                 ; 09 d0
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     out DX, AL                                ; ee
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     out DX, AL                                ; ee
-    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    mov al, byte [bp-006h]                    ; 8a 46 fa
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
-    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
+    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     movzx ax, ch                              ; 0f b6 c5
     add ax, dx                                ; 01 d0
     dec ax                                    ; 48
@@ -4468,32 +4481,33 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     out DX, AL                                ; ee
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02f9ah                               ; e8 c2 fa
+    call 02f9ah                               ; e8 a3 fa
     test al, al                               ; 84 c0
-    jne short 034f0h                          ; 75 14
-    call 02fe0h                               ; e8 01 fb
+    jne short 03511h                          ; 75 16
+    mov ax, bx                                ; 89 d8
+    call 02fe0h                               ; e8 e0 fa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp near 0344ch                           ; e9 5c ff
+    jmp near 03469h                           ; e9 58 ff
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 0350ah                           ; 74 0e
+    je short 0352bh                           ; 74 0e
     push 00275h                               ; 68 75 02
     push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 d3 e4
+    call 019dah                               ; e8 b2 e4
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 03513h                          ; eb 05
+    jmp short 03534h                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 0352bh                          ; 7d 18
+    jnl short 0354ch                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -4502,17 +4516,19 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     movzx bx, al                              ; 0f b6 d8
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 9e e1
+    call 016c6h                               ; e8 7d e1
     inc si                                    ; 46
-    jmp short 0350eh                          ; eb e3
+    jmp short 0352fh                          ; eb e3
     test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je short 03542h                           ; 74 11
+    je short 0356ah                           ; 74 18
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    call 02fe0h                               ; e8 87 fa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 020h                               ; 80 cc 20
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00020h                ; b8 20 00
-    jmp near 0344ch                           ; e9 0a ff
+    jmp near 03469h                           ; e9 ff fe
     movzx ax, ch                              ; 0f b6 c5
     sal ax, 009h                              ; c1 e0 09
     cwd                                       ; 99
@@ -4528,13 +4544,13 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     mov ds, dx                                ; 8e da
     rep movsw                                 ; f3 a5
     pop DS                                    ; 1f
-    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02f4ch                               ; e8 e2 f9
+    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    call 02f4ch                               ; e8 ba f9
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 039ebh                           ; e9 7a 04
-    cmp byte [bp-006h], 003h                  ; 80 7e fa 03
-    jne near 0368ch                           ; 0f 85 13 01
+    jmp near 03a1bh                           ; e9 82 04
+    cmp byte [bp-008h], 003h                  ; 80 7e f8 03
+    jne near 036b6h                           ; 0f 85 15 01
     mov ax, word [bp+006h]                    ; 8b 46 06
     shr ax, 00ch                              ; c1 e8 0c
     mov cl, al                                ; 88 c1
@@ -4542,28 +4558,28 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     sal dx, 004h                              ; c1 e2 04
     mov bx, word [bp+010h]                    ; 8b 5e 10
     add bx, dx                                ; 01 d3
-    mov word [bp-012h], bx                    ; 89 5e ee
+    mov word [bp-010h], bx                    ; 89 5e f0
     cmp dx, bx                                ; 39 da
-    jbe short 03595h                          ; 76 02
+    jbe short 035bdh                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     movzx bx, ch                              ; 0f b6 dd
     sal bx, 009h                              ; c1 e3 09
     dec bx                                    ; 4b
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     add ax, bx                                ; 01 d8
-    cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jc near 0343eh                            ; 0f 82 96 fe
+    cmp ax, word [bp-010h]                    ; 3b 46 f0
+    jc near 0345bh                            ; 0f 82 8b fe
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
     out DX, AL                                ; ee
-    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov al, byte [bp-010h]                    ; 8a 46 f0
     mov dx, strict word 00004h                ; ba 04 00
     out DX, AL                                ; ee
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     shr ax, 008h                              ; c1 e8 08
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
@@ -4584,26 +4600,27 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 0300bh                               ; e8 1e fa
+    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
+    mov ax, bx                                ; 89 d8
+    call 03028h                               ; e8 11 fa
     mov AL, strict byte 0c5h                  ; b0 c5
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     movzx dx, byte [bp-00eh]                  ; 0f b6 56 f2
     sal dx, 002h                              ; c1 e2 02
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     or ax, dx                                 ; 09 d0
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     out DX, AL                                ; ee
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     out DX, AL                                ; ee
-    mov al, byte [bp-00ah]                    ; 8a 46 f6
+    mov al, byte [bp-006h]                    ; 8a 46 fa
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
-    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
+    movzx dx, byte [bp-006h]                  ; 0f b6 56 fa
     movzx ax, ch                              ; 0f b6 c5
     add ax, dx                                ; 01 d0
     dec ax                                    ; 48
@@ -4613,25 +4630,25 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     out DX, AL                                ; ee
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02f9ah                               ; e8 70 f9
+    call 02f9ah                               ; e8 46 f9
     test al, al                               ; 84 c0
-    je near 034dch                            ; 0f 84 ac fe
+    je near 034fbh                            ; 0f 84 a1 fe
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 0364ah                           ; 74 0e
+    je short 03674h                           ; 74 0e
     push 00275h                               ; 68 75 02
     push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 93 e3
+    call 019dah                               ; e8 69 e3
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 03653h                          ; eb 05
+    jmp short 0367dh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 0366bh                          ; 7d 18
+    jnl short 03695h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -4640,63 +4657,63 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     movzx bx, al                              ; 0f b6 d8
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 5e e0
+    call 016c6h                               ; e8 34 e0
     inc si                                    ; 46
-    jmp short 0364eh                          ; eb e3
+    jmp short 03678h                          ; eb e3
     test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je near 0355fh                            ; 0f 84 ec fe
+    je near 03587h                            ; 0f 84 ea fe
     test byte [bp-019h], 002h                 ; f6 46 e7 02
-    je short 03685h                           ; 74 0c
+    je short 036afh                           ; 74 0c
     mov word [bp+016h], 00300h                ; c7 46 16 00 03
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 0335eh                           ; e9 d9 fc
+    jmp near 0337bh                           ; e9 cc fc
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
-    jmp short 0367eh                          ; eb f2
-    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 02f4ch                               ; e8 b5 f8
+    jmp short 036a8h                          ; eb f2
+    movzx dx, byte [bp-00ah]                  ; 0f b6 56 f6
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    call 02f4ch                               ; e8 8b f8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 0335eh                           ; e9 bc fc
+    jmp near 0337bh                           ; e9 af fc
     mov ch, byte [bp+016h]                    ; 8a 6e 16
     mov ax, word [bp+014h]                    ; 8b 46 14
     shr ax, 008h                              ; c1 e8 08
-    mov byte [bp-00ch], al                    ; 88 46 f4
+    mov byte [bp-00ah], al                    ; 88 46 f6
     mov dx, word [bp+012h]                    ; 8b 56 12
     shr dx, 008h                              ; c1 ea 08
     mov byte [bp-00eh], dl                    ; 88 56 f2
     mov bl, byte [bp+00eh]                    ; 8a 5e 0e
-    mov byte [bp-008h], bl                    ; 88 5e f8
+    mov byte [bp-00ch], bl                    ; 88 5e f4
     cmp bl, 001h                              ; 80 fb 01
-    jnbe short 036d4h                         ; 77 12
+    jnbe short 036feh                         ; 77 12
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 036d4h                         ; 77 0d
+    jnbe short 036feh                         ; 77 0d
     cmp AL, strict byte 04fh                  ; 3c 4f
-    jnbe short 036d4h                         ; 77 09
+    jnbe short 036feh                         ; 77 09
     test ch, ch                               ; 84 ed
-    je short 036d4h                           ; 74 05
+    je short 036feh                           ; 74 05
     cmp ch, 012h                              ; 80 fd 12
-    jbe short 036e9h                          ; 76 15
+    jbe short 03713h                          ; 76 15
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02f34h                               ; e8 4f f8
+    call 02f34h                               ; e8 25 f8
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 03247h                               ; e8 57 fb
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    call 03264h                               ; e8 4a fb
     test ax, ax                               ; 85 c0
-    je near 0332ch                            ; 0f 84 36 fc
-    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
+    je near 03349h                            ; 0f 84 29 fc
+    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     mov ax, dx                                ; 89 d0
-    call 0308ch                               ; e8 8d f9
+    call 030a9h                               ; e8 80 f9
     test ax, ax                               ; 85 c0
-    jne short 0370eh                          ; 75 0b
+    jne short 03738h                          ; 75 0b
     mov ax, dx                                ; 89 d0
-    call 03157h                               ; e8 4f fa
+    call 03174h                               ; e8 42 fa
     test ax, ax                               ; 85 c0
-    je near 033f9h                            ; 0f 84 eb fc
+    je near 03416h                            ; 0f 84 de fc
     mov ax, word [bp+006h]                    ; 8b 46 06
     shr ax, 00ch                              ; c1 e8 0c
     mov cl, al                                ; 88 c1
@@ -4704,28 +4721,28 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     sal dx, 004h                              ; c1 e2 04
     mov bx, word [bp+010h]                    ; 8b 5e 10
     add bx, dx                                ; 01 d3
-    mov word [bp-012h], bx                    ; 89 5e ee
+    mov word [bp-010h], bx                    ; 89 5e f0
     cmp dx, bx                                ; 39 da
-    jbe short 0372ah                          ; 76 02
+    jbe short 03754h                          ; 76 02
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
     movzx bx, ch                              ; 0f b6 dd
     sal bx, 002h                              ; c1 e3 02
     dec bx                                    ; 4b
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     add ax, bx                                ; 01 d8
-    cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jc near 0343eh                            ; 0f 82 01 fd
+    cmp ax, word [bp-010h]                    ; 3b 46 f0
+    jc near 0345bh                            ; 0f 82 f4 fc
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
     out DX, AL                                ; ee
-    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov al, byte [bp-010h]                    ; 8a 46 f0
     mov dx, strict word 00004h                ; ba 04 00
     out DX, AL                                ; ee
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-010h]                    ; 8b 46 f0
     shr ax, 008h                              ; c1 e8 08
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
@@ -4746,18 +4763,19 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 0300bh                               ; e8 89 f8
+    movzx si, byte [bp-00ch]                  ; 0f b6 76 f4
+    mov ax, si                                ; 89 f0
+    call 03028h                               ; e8 7a f8
     mov AL, strict byte 00fh                  ; b0 0f
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
-    movzx bx, byte [bp-00eh]                  ; 0f b6 5e f2
-    sal bx, 002h                              ; c1 e3 02
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    movzx ax, byte [bp-00eh]                  ; 0f b6 46 f2
+    sal ax, 002h                              ; c1 e0 02
+    movzx bx, byte [bp-00ch]                  ; 0f b6 5e f4
     or bx, ax                                 ; 09 c3
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    mov al, byte [bp-00ch]                    ; 8a 46 f4
+    mov al, byte [bp-00ah]                    ; 8a 46 f6
     out DX, AL                                ; ee
     mov AL, strict byte 04dh                  ; b0 4d
     out DX, AL                                ; ee
@@ -4771,27 +4789,28 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     out DX, AL                                ; ee
     mov AL, strict byte 0f6h                  ; b0 f6
     out DX, AL                                ; ee
-    call 02f9ah                               ; e8 e9 f7
+    call 02f9ah                               ; e8 bd f7
     test al, al                               ; 84 c0
-    jne short 037bbh                          ; 75 06
-    call 02fe0h                               ; e8 28 f8
-    jmp near 0332ch                           ; e9 71 fb
+    jne short 037e9h                          ; 75 08
+    mov ax, si                                ; 89 f0
+    call 02fe0h                               ; e8 fa f7
+    jmp near 03349h                           ; e9 60 fb
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 037d5h                           ; 74 0e
+    je short 03803h                           ; 74 0e
     push 00275h                               ; 68 75 02
     push 002a8h                               ; 68 a8 02
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 08 e2
+    call 019dah                               ; e8 da e1
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 037deh                          ; eb 05
+    jmp short 0380ch                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 037f6h                          ; 7d 18
+    jnl short 03824h                          ; 7d 18
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -4800,29 +4819,29 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     movzx bx, al                              ; 0f b6 d8
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 d3 de
+    call 016c6h                               ; e8 a5 de
     inc si                                    ; 46
-    jmp short 037d9h                          ; eb e3
+    jmp short 03807h                          ; eb e3
     test byte [bp-01ah], 0c0h                 ; f6 46 e6 c0
-    je short 03812h                           ; 74 16
+    je short 03840h                           ; 74 16
     test byte [bp-019h], 002h                 ; f6 46 e7 02
-    jne near 03679h                           ; 0f 85 75 fe
+    jne near 036a3h                           ; 0f 85 71 fe
     push 00275h                               ; 68 75 02
     push 002bch                               ; 68 bc 02
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 cb e1
+    call 019dah                               ; e8 9d e1
     add sp, strict byte 00006h                ; 83 c4 06
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02f34h                               ; e8 18 f7
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
+    call 02f34h                               ; e8 ea f6
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
     xor dx, dx                                ; 31 d2
-    call 02f4ch                               ; e8 27 f7
-    jmp near 039ebh                           ; e9 c3 01
-    mov byte [bp-008h], al                    ; 88 46 f8
+    call 02f4ch                               ; e8 f9 f6
+    jmp near 03a1bh                           ; e9 c5 01
+    mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 0384ch                          ; 76 1d
+    jbe short 0387ah                          ; 76 1d
     xor ax, ax                                ; 31 c0
     mov word [bp+016h], ax                    ; 89 46 16
     mov word [bp+010h], ax                    ; 89 46 10
@@ -4832,471 +4851,472 @@ _int13_diskette_function:                    ; 0xf326b LB 0x8f7
     mov word [bp+008h], ax                    ; 89 46 08
     movzx ax, ch                              ; 0f b6 c5
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 03969h                           ; e9 1d 01
+    jmp near 03999h                           ; e9 1f 01
     mov ax, strict word 00010h                ; b8 10 00
-    call 01714h                               ; e8 c2 de
+    call 01714h                               ; e8 94 de
     mov cl, al                                ; 88 c1
     xor ch, ch                                ; 30 ed
     test AL, strict byte 0f0h                 ; a8 f0
-    je short 0385ch                           ; 74 02
+    je short 0388ah                           ; 74 02
     mov CH, strict byte 001h                  ; b5 01
     test cl, 00fh                             ; f6 c1 0f
-    je short 03863h                           ; 74 02
+    je short 03891h                           ; 74 02
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 0386eh                          ; 75 05
+    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
+    jne short 0389ch                          ; 75 05
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03871h                          ; eb 03
+    jmp short 0389fh                          ; eb 03
     and cl, 00fh                              ; 80 e1 0f
     mov byte [bp+011h], 000h                  ; c6 46 11 00
     movzx ax, cl                              ; 0f b6 c1
     mov word [bp+010h], ax                    ; 89 46 10
     mov word [bp+016h], strict word 00000h    ; c7 46 16 00 00
-    mov ax, word [bp+012h]                    ; 8b 46 12
-    xor al, al                                ; 30 c0
-    movzx dx, ch                              ; 0f b6 d5
-    or ax, dx                                 ; 09 d0
-    mov word [bp+012h], ax                    ; 89 46 12
-    xor ah, ah                                ; 30 e4
+    mov dx, word [bp+012h]                    ; 8b 56 12
+    xor dl, dl                                ; 30 d2
+    movzx ax, ch                              ; 0f b6 c5
+    or dx, ax                                 ; 09 c2
+    mov word [bp+012h], dx                    ; 89 56 12
+    mov ax, dx                                ; 89 d0
+    xor ah, dh                                ; 30 f4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+012h], ax                    ; 89 46 12
     cmp cl, 003h                              ; 80 f9 03
-    jc short 038afh                           ; 72 15
-    jbe short 038d6h                          ; 76 3a
+    jc short 038dfh                           ; 72 15
+    jbe short 03906h                          ; 76 3a
     cmp cl, 005h                              ; 80 f9 05
-    jc short 038ddh                           ; 72 3c
-    jbe short 038e4h                          ; 76 41
+    jc short 0390dh                           ; 72 3c
+    jbe short 03914h                          ; 76 41
     cmp cl, 00fh                              ; 80 f9 0f
-    je short 038f2h                           ; 74 4a
+    je short 03922h                           ; 74 4a
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 038ebh                           ; 74 3e
-    jmp short 038f9h                          ; eb 4a
+    je short 0391bh                           ; 74 3e
+    jmp short 03929h                          ; eb 4a
     cmp cl, 002h                              ; 80 f9 02
-    je short 038cfh                           ; 74 1b
+    je short 038ffh                           ; 74 1b
     cmp cl, 001h                              ; 80 f9 01
-    je short 038c8h                           ; 74 0f
+    je short 038f8h                           ; 74 0f
     test cl, cl                               ; 84 c9
-    jne short 038f9h                          ; 75 3c
+    jne short 03929h                          ; 75 3c
     mov word [bp+014h], strict word 00000h    ; c7 46 14 00 00
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 03907h                          ; eb 3f
+    jmp short 03937h                          ; eb 3f
     mov word [bp+014h], 02709h                ; c7 46 14 09 27
-    jmp short 03907h                          ; eb 38
+    jmp short 03937h                          ; eb 38
     mov word [bp+014h], 04f0fh                ; c7 46 14 0f 4f
-    jmp short 03907h                          ; eb 31
+    jmp short 03937h                          ; eb 31
     mov word [bp+014h], 04f09h                ; c7 46 14 09 4f
-    jmp short 03907h                          ; eb 2a
+    jmp short 03937h                          ; eb 2a
     mov word [bp+014h], 04f12h                ; c7 46 14 12 4f
-    jmp short 03907h                          ; eb 23
+    jmp short 03937h                          ; eb 23
     mov word [bp+014h], 04f24h                ; c7 46 14 24 4f
-    jmp short 03907h                          ; eb 1c
+    jmp short 03937h                          ; eb 1c
     mov word [bp+014h], 0fe3fh                ; c7 46 14 3f fe
-    jmp short 03907h                          ; eb 15
+    jmp short 03937h                          ; eb 15
     mov word [bp+014h], 0feffh                ; c7 46 14 ff fe
-    jmp short 03907h                          ; eb 0e
+    jmp short 03937h                          ; eb 0e
     push 00275h                               ; 68 75 02
     push 002cdh                               ; 68 cd 02
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 d6 e0
+    call 019dah                               ; e8 a6 e0
     add sp, strict byte 00006h                ; 83 c4 06
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     movzx ax, cl                              ; 0f b6 c1
-    call 03b62h                               ; e8 50 02
+    call 03b92h                               ; e8 50 02
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 039ebh                           ; e9 d3 00
-    mov byte [bp-008h], al                    ; 88 46 f8
+    jmp near 03a1bh                           ; e9 d3 00
+    mov byte [bp-00ch], al                    ; 88 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03924h                          ; 76 05
+    jbe short 03954h                          ; 76 05
     mov word [bp+016h], si                    ; 89 76 16
-    jmp short 03969h                          ; eb 45
+    jmp short 03999h                          ; eb 45
     mov ax, strict word 00010h                ; b8 10 00
-    call 01714h                               ; e8 ea dd
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 03937h                          ; 75 07
+    call 01714h                               ; e8 ba dd
+    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
+    jne short 03967h                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 0393ch                          ; eb 05
+    jmp short 0396ch                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov dx, word [bp+016h]                    ; 8b 56 16
     xor dh, dh                                ; 30 f6
     test cl, cl                               ; 84 c9
-    je short 03956h                           ; 74 0d
+    je short 03986h                           ; 74 0d
     cmp cl, 001h                              ; 80 f9 01
-    jbe short 03953h                          ; 76 05
+    jbe short 03983h                          ; 76 05
     or dh, 002h                               ; 80 ce 02
-    jmp short 03956h                          ; eb 03
+    jmp short 03986h                          ; eb 03
     or dh, 001h                               ; 80 ce 01
     mov word [bp+016h], dx                    ; 89 56 16
-    jmp near 0335eh                           ; e9 02 fa
+    jmp near 0337bh                           ; e9 ef f9
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 0396fh                          ; 76 0f
+    jbe short 0399fh                          ; 76 0f
     mov word [bp+016h], si                    ; 89 76 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02f34h                               ; e8 cb f5
+    call 02f34h                               ; e8 9b f5
     mov word [bp+01ch], dx                    ; 89 56 1c
-    jmp near 0335eh                           ; e9 ef f9
+    jmp near 0337bh                           ; e9 dc f9
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 006h                               ; 80 cc 06
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 0330ah                           ; e9 8a f9
-    mov byte [bp-008h], al                    ; 88 46 f8
+    jmp near 03327h                           ; e9 77 f9
+    mov byte [bp-00ch], al                    ; 88 46 f4
     mov bl, cl                                ; 88 cb
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 03960h                         ; 77 d7
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 03247h                               ; e8 b7 f8
+    jnbe short 03990h                         ; 77 d7
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    call 03264h                               ; e8 a4 f8
     test ax, ax                               ; 85 c0
-    je near 0332ch                            ; 0f 84 96 f9
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
+    je near 03349h                            ; 0f 84 83 f9
+    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     movzx dx, al                              ; 0f b6 d0
     add dx, 00090h                            ; 81 c2 90 00
-    mov word [bp-012h], dx                    ; 89 56 ee
+    mov word [bp-010h], dx                    ; 89 56 f0
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 0b dd
+    call 016b8h                               ; e8 db dc
     and AL, strict byte 00fh                  ; 24 0f
     cmp bl, 002h                              ; 80 fb 02
-    jc short 039c3h                           ; 72 0f
-    jbe short 039cfh                          ; 76 19
+    jc short 039f3h                           ; 72 0f
+    jbe short 039ffh                          ; 76 19
     cmp bl, 004h                              ; 80 fb 04
-    je short 039cbh                           ; 74 10
+    je short 039fbh                           ; 74 10
     cmp bl, 003h                              ; 80 fb 03
-    je short 039d3h                           ; 74 13
-    jmp near 032fch                           ; e9 39 f9
+    je short 03a03h                           ; 74 13
+    jmp near 03319h                           ; e9 26 f9
     cmp bl, 001h                              ; 80 fb 01
-    je short 039cbh                           ; 74 03
-    jmp near 032fch                           ; e9 31 f9
+    je short 039fbh                           ; 74 03
+    jmp near 03319h                           ; e9 1e f9
     or AL, strict byte 090h                   ; 0c 90
-    jmp short 039d5h                          ; eb 06
+    jmp short 03a05h                          ; eb 06
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 039d5h                          ; eb 02
+    jmp short 03a05h                          ; eb 02
     or AL, strict byte 010h                   ; 0c 10
     movzx bx, al                              ; 0f b6 d8
-    mov dx, word [bp-012h]                    ; 8b 56 ee
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 e5 dc
+    call 016c6h                               ; e8 b5 dc
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02f34h                               ; e8 49 f5
+    call 02f34h                               ; e8 19 f5
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp near 0335eh                           ; e9 6c f9
-    mov byte [bp-008h], al                    ; 88 46 f8
+    jmp near 0337bh                           ; e9 59 f9
+    mov byte [bp-00ch], al                    ; 88 46 f4
     mov ch, ah                                ; 88 e5
     and ch, 03fh                              ; 80 e5 3f
     movzx bx, ah                              ; 0f b6 dc
     sar bx, 006h                              ; c1 fb 06
     sal bx, 008h                              ; c1 e3 08
-    add bx, word [bp-010h]                    ; 03 5e f0
-    mov byte [bp-00ch], bl                    ; 88 5e f4
+    add bx, word [bp-012h]                    ; 03 5e ee
+    mov byte [bp-00ah], bl                    ; 88 5e f6
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe near 03960h                          ; 0f 87 51 ff
-    movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 03247h                               ; e8 31 f8
+    jnbe near 03990h                          ; 0f 87 51 ff
+    movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
+    call 03264h                               ; e8 1e f8
     test ax, ax                               ; 85 c0
-    je near 0332ch                            ; 0f 84 10 f9
-    movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
+    je near 03349h                            ; 0f 84 fd f8
+    movzx dx, byte [bp-00ch]                  ; 0f b6 56 f4
     mov ax, dx                                ; 89 d0
-    call 0308ch                               ; e8 67 f6
+    call 030a9h                               ; e8 54 f6
     test ax, ax                               ; 85 c0
-    jne short 03a43h                          ; 75 1a
+    jne short 03a73h                          ; 75 1a
     mov ax, dx                                ; 89 d0
-    call 03157h                               ; e8 29 f7
+    call 03174h                               ; e8 16 f7
     test ax, ax                               ; 85 c0
-    jne short 03a43h                          ; 75 11
+    jne short 03a73h                          ; 75 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 0330ah                           ; e9 c7 f8
+    jmp near 03327h                           ; e9 b4 f8
     mov ax, strict word 00010h                ; b8 10 00
-    call 01714h                               ; e8 cb dc
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 03a56h                          ; 75 07
+    call 01714h                               ; e8 9b dc
+    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
+    jne short 03a86h                          ; 75 07
     mov cl, al                                ; 88 c1
     shr cl, 004h                              ; c0 e9 04
-    jmp short 03a5bh                          ; eb 05
+    jmp short 03a8bh                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
-    cmp byte [bp-008h], 000h                  ; 80 7e f8 00
+    cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
     movzx dx, al                              ; 0f b6 d0
     add dx, 00090h                            ; 81 c2 90 00
-    mov word [bp-012h], dx                    ; 89 56 ee
+    mov word [bp-010h], dx                    ; 89 56 f0
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 46 dc
+    call 016b8h                               ; e8 16 dc
     and AL, strict byte 00fh                  ; 24 0f
     cmp cl, 003h                              ; 80 f9 03
-    jc short 03a97h                           ; 72 1e
+    jc short 03ac7h                           ; 72 1e
     mov dl, al                                ; 88 c2
     or dl, 090h                               ; 80 ca 90
     cmp cl, 003h                              ; 80 f9 03
-    jbe short 03ad5h                          ; 76 52
+    jbe short 03b05h                          ; 76 52
     mov ah, al                                ; 88 c4
     or ah, 010h                               ; 80 cc 10
     cmp cl, 005h                              ; 80 f9 05
-    je near 03afah                            ; 0f 84 6b 00
+    je near 03b2ah                            ; 0f 84 6b 00
     cmp cl, 004h                              ; 80 f9 04
-    je short 03ae4h                           ; 74 50
-    jmp near 03b15h                           ; e9 7e 00
+    je short 03b14h                           ; 74 50
+    jmp near 03b45h                           ; e9 7e 00
     cmp cl, 002h                              ; 80 f9 02
-    je short 03ab7h                           ; 74 1b
+    je short 03ae7h                           ; 74 1b
     cmp cl, 001h                              ; 80 f9 01
-    jne near 03b15h                           ; 0f 85 72 00
-    cmp byte [bp-00ch], 027h                  ; 80 7e f4 27
-    jne near 03b15h                           ; 0f 85 6a 00
+    jne near 03b45h                           ; 0f 85 72 00
+    cmp byte [bp-00ah], 027h                  ; 80 7e f6 27
+    jne near 03b45h                           ; 0f 85 6a 00
     cmp ch, 009h                              ; 80 fd 09
-    jne near 03b15h                           ; 0f 85 63 00
+    jne near 03b45h                           ; 0f 85 63 00
     or AL, strict byte 090h                   ; 0c 90
-    jmp near 03b15h                           ; e9 5e 00
-    cmp byte [bp-00ch], 027h                  ; 80 7e f4 27
-    jne short 03ac6h                          ; 75 09
+    jmp near 03b45h                           ; e9 5e 00
+    cmp byte [bp-00ah], 027h                  ; 80 7e f6 27
+    jne short 03af6h                          ; 75 09
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03ac6h                          ; 75 04
+    jne short 03af6h                          ; 75 04
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 03b15h                          ; eb 4f
-    cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 03b15h                          ; 75 49
+    jmp short 03b45h                          ; eb 4f
+    cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
+    jne short 03b45h                          ; 75 49
     cmp ch, 00fh                              ; 80 fd 0f
-    jne short 03b15h                          ; 75 44
+    jne short 03b45h                          ; 75 44
     or AL, strict byte 010h                   ; 0c 10
-    jmp short 03b15h                          ; eb 40
-    cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 03b15h                          ; 75 3a
+    jmp short 03b45h                          ; eb 40
+    cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
+    jne short 03b45h                          ; 75 3a
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03b15h                          ; 75 35
+    jne short 03b45h                          ; 75 35
     mov al, dl                                ; 88 d0
-    jmp short 03b15h                          ; eb 31
-    cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 03b15h                          ; 75 2b
+    jmp short 03b45h                          ; eb 31
+    cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
+    jne short 03b45h                          ; 75 2b
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03af1h                          ; 75 02
-    jmp short 03ae0h                          ; eb ef
+    jne short 03b21h                          ; 75 02
+    jmp short 03b10h                          ; eb ef
     cmp ch, 012h                              ; 80 fd 12
-    jne short 03b15h                          ; 75 1f
+    jne short 03b45h                          ; 75 1f
     mov al, ah                                ; 88 e0
-    jmp short 03b15h                          ; eb 1b
-    cmp byte [bp-00ch], 04fh                  ; 80 7e f4 4f
-    jne short 03b15h                          ; 75 15
+    jmp short 03b45h                          ; eb 1b
+    cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
+    jne short 03b45h                          ; 75 15
     cmp ch, 009h                              ; 80 fd 09
-    jne short 03b07h                          ; 75 02
-    jmp short 03ae0h                          ; eb d9
+    jne short 03b37h                          ; 75 02
+    jmp short 03b10h                          ; eb d9
     cmp ch, 012h                              ; 80 fd 12
-    jne short 03b0eh                          ; 75 02
-    jmp short 03af6h                          ; eb e8
+    jne short 03b3eh                          ; 75 02
+    jmp short 03b26h                          ; eb e8
     cmp ch, 024h                              ; 80 fd 24
-    jne short 03b15h                          ; 75 02
+    jne short 03b45h                          ; 75 02
     or AL, strict byte 0d0h                   ; 0c d0
     movzx dx, al                              ; 0f b6 d0
     sar dx, 004h                              ; c1 fa 04
     test dl, 001h                             ; f6 c2 01
-    je near 03a32h                            ; 0f 84 10 ff
+    je near 03a62h                            ; 0f 84 10 ff
     movzx bx, al                              ; 0f b6 d8
-    mov dx, word [bp-012h]                    ; 8b 56 ee
+    mov dx, word [bp-010h]                    ; 8b 56 f0
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 98 db
+    call 016c6h                               ; e8 68 db
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     movzx ax, cl                              ; 0f b6 c1
-    call 03b62h                               ; e8 29 00
+    call 03b92h                               ; e8 29 00
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 039e1h                           ; e9 a2 fe
+    jmp near 03a11h                           ; e9 a2 fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 4f de
+    call 01999h                               ; e8 1f de
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 00275h                               ; 68 75 02
     push 002e2h                               ; 68 e2 02
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 7e de
+    call 019dah                               ; e8 4e de
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 032fch                           ; e9 9a f7
-get_floppy_dpt_:                             ; 0xf3b62 LB 0x2f
+    jmp near 03319h                           ; e9 87 f7
+get_floppy_dpt_:                             ; 0xf3b92 LB 0x2f
     push bx                                   ; 53
     push dx                                   ; 52
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dl, al                                ; 88 c2
     xor ax, ax                                ; 31 c0
-    jmp short 03b73h                          ; eb 06
+    jmp short 03ba3h                          ; eb 06
     inc ax                                    ; 40
     cmp ax, strict word 00007h                ; 3d 07 00
-    jnc short 03b8ah                          ; 73 17
+    jnc short 03bbah                          ; 73 17
     mov bx, ax                                ; 89 c3
     add bx, ax                                ; 01 c3
     cmp dl, byte [word bx+0005bh]             ; 3a 97 5b 00
-    jne short 03b6dh                          ; 75 f0
+    jne short 03b9dh                          ; 75 f0
     movzx ax, byte [word bx+0005ch]           ; 0f b6 87 5c 00
     imul ax, ax, strict byte 0000dh           ; 6b c0 0d
     add ax, strict word 00000h                ; 05 00 00
-    jmp short 03b8dh                          ; eb 03
+    jmp short 03bbdh                          ; eb 03
     mov ax, strict word 00041h                ; b8 41 00
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     retn                                      ; c3
-dummy_soft_reset_:                           ; 0xf3b91 LB 0x7
+dummy_soft_reset_:                           ; 0xf3bc1 LB 0x7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_init:                                 ; 0xf3b98 LB 0x18
+_cdemu_init:                                 ; 0xf3bc8 LB 0x18
     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 30 db
+    call 016d4h                               ; e8 00 db
     xor bx, bx                                ; 31 db
     mov dx, 00366h                            ; ba 66 03
-    call 016c6h                               ; e8 1a db
+    call 016c6h                               ; e8 ea da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_isactive:                             ; 0xf3bb0 LB 0x16
+_cdemu_isactive:                             ; 0xf3be0 LB 0x16
     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 18 db
+    call 016d4h                               ; e8 e8 da
     mov dx, 00366h                            ; ba 66 03
-    call 016b8h                               ; e8 f6 da
+    call 016b8h                               ; e8 c6 da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_emulated_drive:                       ; 0xf3bc6 LB 0x16
+_cdemu_emulated_drive:                       ; 0xf3bf6 LB 0x16
     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 02 db
+    call 016d4h                               ; e8 d2 da
     mov dx, 00368h                            ; ba 68 03
-    call 016b8h                               ; e8 e0 da
+    call 016b8h                               ; e8 b0 da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_eltorito:                             ; 0xf3bdc LB 0x189
+_int13_eltorito:                             ; 0xf3c0c LB 0x189
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 ea da
+    call 016d4h                               ; e8 ba da
     mov si, 00366h                            ; be 66 03
     mov di, ax                                ; 89 c7
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     cmp ax, strict word 0004bh                ; 3d 4b 00
-    jc short 03c04h                           ; 72 0a
-    jbe short 03c2ah                          ; 76 2e
+    jc short 03c34h                           ; 72 0a
+    jbe short 03c5ah                          ; 76 2e
     cmp ax, strict word 0004dh                ; 3d 4d 00
-    jbe short 03c0bh                          ; 76 0a
-    jmp near 03d29h                           ; e9 25 01
+    jbe short 03c3bh                          ; 76 0a
+    jmp near 03d59h                           ; e9 25 01
     cmp ax, strict word 0004ah                ; 3d 4a 00
-    jne near 03d29h                           ; 0f 85 1e 01
+    jne near 03d59h                           ; 0f 85 1e 01
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 83 dd
+    call 01999h                               ; e8 53 dd
     push word [bp+016h]                       ; ff 76 16
     push 002fch                               ; 68 fc 02
     push 0030bh                               ; 68 0b 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 b6 dd
+    call 019dah                               ; e8 86 dd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 03d44h                           ; e9 1a 01
+    jmp near 03d74h                           ; e9 1a 01
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
     mov bx, strict word 00013h                ; bb 13 00
-    call 016c6h                               ; e8 90 da
+    call 016c6h                               ; e8 60 da
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+001h]               ; 26 0f b6 5c 01
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016c6h                               ; e8 7f da
+    call 016c6h                               ; e8 4f da
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+002h]               ; 26 0f b6 5c 02
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     inc dx                                    ; 42
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016c6h                               ; e8 6d da
+    call 016c6h                               ; e8 3d da
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+003h]               ; 26 0f b6 5c 03
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00003h                ; 83 c2 03
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016c6h                               ; e8 5a da
+    call 016c6h                               ; e8 2a da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+008h]                 ; 26 8b 5c 08
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00004h                ; 83 c2 04
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01702h                               ; e8 80 da
+    call 01702h                               ; e8 50 da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+004h]                 ; 26 8b 5c 04
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016e2h                               ; e8 4e da
+    call 016e2h                               ; e8 1e da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+006h]                 ; 26 8b 5c 06
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016e2h                               ; e8 3c da
+    call 016e2h                               ; e8 0c da
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016e2h                               ; e8 2a da
+    call 016e2h                               ; e8 fa d9
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016e2h                               ; e8 18 da
+    call 016e2h                               ; e8 e8 d9
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+012h]               ; 26 0f b6 5c 12
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00010h                ; 83 c2 10
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016c6h                               ; e8 e9 d9
+    call 016c6h                               ; e8 b9 d9
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+014h]               ; 26 0f b6 5c 14
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00011h                ; 83 c2 11
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016c6h                               ; e8 d6 d9
+    call 016c6h                               ; e8 a6 d9
     mov es, di                                ; 8e c7
     movzx bx, byte [es:si+010h]               ; 26 0f b6 5c 10
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00012h                ; 83 c2 12
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 016c6h                               ; e8 c3 d9
+    call 016c6h                               ; e8 93 d9
     test byte [bp+016h], 0ffh                 ; f6 46 16 ff
-    jne short 03d0fh                          ; 75 06
+    jne short 03d3fh                          ; 75 06
     mov es, di                                ; 8e c7
     mov byte [es:si], 000h                    ; 26 c6 04 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 a8 d9
+    call 016c6h                               ; e8 78 d9
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -5306,13 +5326,13 @@ _int13_eltorito:                             ; 0xf3bdc LB 0x189
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 65 dc
+    call 01999h                               ; e8 35 dc
     mov ax, word [bp+016h]                    ; 8b 46 16
     shr ax, 008h                              ; c1 e8 08
     push ax                                   ; 50
     push 002fch                               ; 68 fc 02
     push 00333h                               ; 68 33 03
-    jmp near 03c1fh                           ; e9 db fe
+    jmp near 03c4fh                           ; e9 db fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -5322,10 +5342,10 @@ _int13_eltorito:                             ; 0xf3bdc LB 0x189
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 67 d9
+    call 016c6h                               ; e8 37 d9
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 03d22h                          ; eb bd
-device_is_cdrom_:                            ; 0xf3d65 LB 0x35
+    jmp short 03d52h                          ; eb bd
+device_is_cdrom_:                            ; 0xf3d95 LB 0x35
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5333,24 +5353,24 @@ device_is_cdrom_:                            ; 0xf3d65 LB 0x35
     mov bl, al                                ; 88 c3
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 5f d9
+    call 016d4h                               ; e8 2f d9
     cmp bl, 010h                              ; 80 fb 10
-    jc short 03d7eh                           ; 72 04
+    jc short 03daeh                           ; 72 04
     xor ax, ax                                ; 31 c0
-    jmp short 03d93h                          ; eb 15
+    jmp short 03dc3h                          ; eb 15
     xor bh, bh                                ; 30 ff
     imul bx, bx, strict byte 0001ch           ; 6b db 1c
     mov es, ax                                ; 8e c0
     add bx, 00122h                            ; 81 c3 22 01
     cmp byte [es:bx+023h], 005h               ; 26 80 7f 23 05
-    jne short 03d7ah                          ; 75 ea
+    jne short 03daah                          ; 75 ea
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf3d9a LB 0x416
+cdrom_boot_:                                 ; 0xf3dca LB 0x416
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5361,30 +5381,30 @@ cdrom_boot_:                                 ; 0xf3d9a LB 0x416
     sub sp, 0081ch                            ; 81 ec 1c 08
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 25 d9
+    call 016d4h                               ; e8 f5 d8
     mov word [bp-018h], ax                    ; 89 46 e8
     mov si, 00366h                            ; be 66 03
     mov word [bp-010h], ax                    ; 89 46 f0
     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
-    jmp short 03dcfh                          ; eb 09
+    jmp short 03dffh                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jnc short 03ddah                          ; 73 0b
+    jnc short 03e0ah                          ; 73 0b
     movzx ax, byte [bp-00ch]                  ; 0f b6 46 f4
-    call 03d65h                               ; e8 8f ff
+    call 03d95h                               ; e8 8f ff
     test ax, ax                               ; 85 c0
-    je short 03dc6h                           ; 74 ec
+    je short 03df6h                           ; 74 ec
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jc short 03de6h                           ; 72 06
+    jc short 03e16h                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 0414dh                           ; e9 67 03
+    jmp near 0417dh                           ; e9 67 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-026h]                         ; 8d 46 da
-    call 09f20h                               ; e8 2d 61
+    call 09f50h                               ; e8 2d 61
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
     mov ax, strict word 00011h                ; b8 11 00
     xor dx, dx                                ; 31 d2
@@ -5400,10 +5420,10 @@ cdrom_boot_:                                 ; 0xf3d9a LB 0x416
     db  066h, 026h, 0c7h, 047h, 00eh, 001h, 000h, 000h, 008h
     ; mov dword [es:bx+00eh], strict dword 008000001h ; 66 26 c7 47 0e 01 00 00 08
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
-    jmp short 03e2bh                          ; eb 09
+    jmp short 03e5bh                          ; eb 09
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 004h                  ; 80 7e f2 04
-    jnbe short 03e62h                         ; 77 37
+    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
@@ -5423,35 +5443,35 @@ cdrom_boot_:                                 ; 0xf3d9a 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 03e22h                          ; 75 c0
+    jne short 03e52h                          ; 75 c0
     test ax, ax                               ; 85 c0
-    je short 03e6ch                           ; 74 06
+    je short 03e9ch                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 0414dh                           ; e9 e1 02
+    jmp near 0417dh                           ; e9 e1 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
-    je short 03e79h                           ; 74 06
+    je short 03ea9h                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 0414dh                           ; e9 d4 02
+    jmp near 0417dh                           ; e9 d4 02
     xor di, di                                ; 31 ff
-    jmp short 03e83h                          ; eb 06
+    jmp short 03eb3h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00005h                ; 83 ff 05
-    jnc short 03e93h                          ; 73 10
+    jnc short 03ec3h                          ; 73 10
     mov al, byte [bp+di-00825h]               ; 8a 83 db f7
     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
-    je short 03e7dh                           ; 74 f0
+    je short 03eadh                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 0414dh                           ; e9 ba 02
+    jmp near 0417dh                           ; e9 ba 02
     xor di, di                                ; 31 ff
-    jmp short 03e9dh                          ; eb 06
+    jmp short 03ecdh                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00017h                ; 83 ff 17
-    jnc short 03eadh                          ; 73 10
+    jnc short 03eddh                          ; 73 10
     mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
-    je short 03e97h                           ; 74 f0
+    je short 03ec7h                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 0414dh                           ; e9 a0 02
+    jmp near 0417dh                           ; e9 a0 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
@@ -5482,38 +5502,38 @@ cdrom_boot_:                                 ; 0xf3d9a 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 03f0ah                           ; 74 06
+    je short 03f3ah                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 0414dh                           ; e9 43 02
+    jmp near 0417dh                           ; e9 43 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
-    je short 03f17h                           ; 74 06
+    je short 03f47h                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 0414dh                           ; e9 36 02
+    jmp near 0417dh                           ; e9 36 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
-    je short 03f24h                           ; 74 06
+    je short 03f54h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 0414dh                           ; e9 29 02
+    jmp near 0417dh                           ; e9 29 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
-    je short 03f31h                           ; 74 06
+    je short 03f61h                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 0414dh                           ; e9 1c 02
+    jmp near 0417dh                           ; e9 1c 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
-    jne short 03f2bh                          ; 75 f3
+    jne short 03f5bh                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
-    je short 03f45h                           ; 74 06
+    je short 03f75h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 0414dh                           ; e9 08 02
+    jmp near 0417dh                           ; e9 08 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 03f5eh                          ; 75 07
+    jne short 03f8eh                          ; 75 07
     mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
-    jmp short 03f71h                          ; eb 13
+    jmp short 03fa1h                          ; eb 13
     cmp byte [bp-00805h], 004h                ; 80 be fb f7 04
-    jnc short 03f6ch                          ; 73 07
+    jnc short 03f9ch                          ; 73 07
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
-    jmp short 03f71h                          ; eb 05
+    jmp short 03fa1h                          ; 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
@@ -5531,7 +5551,7 @@ cdrom_boot_:                                 ; 0xf3d9a 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 03f9fh                          ; 75 05
+    jne short 03fcfh                          ; 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
@@ -5540,11 +5560,11 @@ cdrom_boot_:                                 ; 0xf3d9a 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 03fc1h                           ; 74 06
+    je short 03ff1h                           ; 74 06
     cmp di, 00400h                            ; 81 ff 00 04
-    jbe short 03fc7h                          ; 76 06
+    jbe short 03ff7h                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 0414dh                           ; e9 86 01
+    jmp near 0417dh                           ; e9 86 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
@@ -5584,7 +5604,7 @@ cdrom_boot_:                                 ; 0xf3d9a LB 0x416
     mov cx, strict word 00009h                ; b9 09 00
     sal ax, 1                                 ; d1 e0
     rcl di, 1                                 ; d1 d7
-    loop 04035h                               ; e2 fa
+    loop 04065h                               ; e2 fa
     push di                                   ; 57
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
@@ -5597,47 +5617,47 @@ cdrom_boot_:                                 ; 0xf3d9a 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 04065h                           ; 74 06
+    je short 04095h                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 0414dh                           ; e9 e8 00
+    jmp near 0417dh                           ; e9 e8 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 0407dh                           ; 72 0d
-    jbe short 04095h                          ; 76 23
+    jc short 040adh                           ; 72 0d
+    jbe short 040c5h                          ; 76 23
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 040abh                           ; 74 35
+    je short 040dbh                           ; 74 35
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 040a0h                           ; 74 26
-    jmp near 040f6h                           ; e9 79 00
+    je short 040d0h                           ; 74 26
+    jmp near 04126h                           ; e9 79 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 040f6h                          ; 75 75
+    jne short 04126h                          ; 75 75
     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 040f6h                          ; eb 61
+    jmp short 04126h                          ; eb 61
     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 0408dh                          ; eb ed
+    jmp short 040bdh                          ; 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 0408dh                          ; eb e2
+    jmp short 040bdh                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 016b8h                               ; e8 04 d6
+    call 016b8h                               ; e8 d4 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 f0 d5
+    call 016b8h                               ; e8 c0 d5
     movzx bx, al                              ; 0f b6 d8
     sal bx, 002h                              ; c1 e3 02
     mov dx, 001c5h                            ; ba c5 01
     mov ax, word [bp-016h]                    ; 8b 46 ea
-    call 016b8h                               ; e8 e1 d5
+    call 016b8h                               ; e8 b1 d5
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
     inc ax                                    ; 40
@@ -5645,36 +5665,36 @@ cdrom_boot_:                                 ; 0xf3d9a 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 cc d5
+    call 016b8h                               ; e8 9c 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 04134h                           ; 74 34
+    je short 04164h                           ; 74 34
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 0411dh                          ; 75 16
+    jne short 0414dh                          ; 75 16
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 a8 d5
+    call 016b8h                               ; e8 78 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 04131h                          ; eb 14
+    jmp short 04161h                          ; eb 14
     mov dx, 00304h                            ; ba 04 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
-    call 016b8h                               ; e8 92 d5
+    call 016b8h                               ; e8 62 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 92 d5
+    call 016c6h                               ; e8 62 d5
     mov es, [bp-010h]                         ; 8e 46 f0
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 04142h                           ; 74 04
+    je short 04172h                           ; 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
@@ -5688,12 +5708,12 @@ cdrom_boot_:                                 ; 0xf3d9a 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, 048h, 045h, 056h
-    db  042h, 0a0h, 042h, 0c8h, 042h, 095h, 042h, 0c8h, 042h, 095h, 042h, 09eh, 044h, 07bh, 042h, 048h
-    db  045h, 048h, 045h, 07bh, 042h, 07bh, 042h, 07bh, 042h, 07bh, 042h, 07bh, 042h, 03fh, 045h, 07bh
-    db  042h, 048h, 045h, 048h, 045h, 048h, 045h, 048h, 045h, 048h, 045h, 048h, 045h, 048h, 045h, 048h
-    db  045h, 048h, 045h, 048h, 045h, 048h, 045h, 048h, 045h
-_int13_cdemu:                                ; 0xf41b0 LB 0x434
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -5701,7 +5721,7 @@ _int13_cdemu:                                ; 0xf41b0 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 13 d5
+    call 016d4h                               ; e8 e3 d4
     mov di, 00366h                            ; bf 66 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
@@ -5717,19 +5737,19 @@ _int13_cdemu:                                ; 0xf41b0 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 d6 d4
+    call 016c6h                               ; e8 a6 d4
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 04206h                           ; 74 0e
+    je short 04236h                           ; 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 0422fh                           ; 74 29
+    je short 0425fh                           ; 74 29
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 88 d7
+    call 01999h                               ; e8 58 d7
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -5739,21 +5759,21 @@ _int13_cdemu:                                ; 0xf41b0 LB 0x434
     push 0034ch                               ; 68 4c 03
     push 00358h                               ; 68 58 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 b1 d7
+    call 019dah                               ; e8 81 d7
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04568h                           ; e9 39 03
+    jmp near 04598h                           ; 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 04548h                          ; 0f 87 0c 03
+    jnbe near 04578h                          ; 0f 87 0c 03
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 04157h                            ; bf 57 41
+    mov di, 04187h                            ; bf 87 41
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+04174h]               ; 2e 8b 85 74 41
+    mov ax, word [cs:di+041a4h]               ; 2e 8b 85 a4 41
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
@@ -5764,14 +5784,14 @@ _int13_cdemu:                                ; 0xf41b0 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 0427bh                            ; 0f 84 08 00
+    je near 042abh                            ; 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 3c d4
+    call 016c6h                               ; e8 0c d4
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -5781,10 +5801,10 @@ _int13_cdemu:                                ; 0xf41b0 LB 0x434
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 04570h                           ; e9 d0 02
+    jmp near 045a0h                           ; e9 d0 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 0f d4
+    call 016b8h                               ; e8 df d3
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
     sal ax, 008h                              ; c1 e0 08
@@ -5793,10 +5813,10 @@ _int13_cdemu:                                ; 0xf41b0 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 05 d4
+    call 016c6h                               ; e8 d5 d3
     test cl, cl                               ; 84 c9
-    je short 0427fh                           ; 74 ba
-    jmp near 04584h                           ; e9 bc 02
+    je short 042afh                           ; 74 ba
+    jmp near 045b4h                           ; 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
@@ -5820,19 +5840,19 @@ _int13_cdemu:                                ; 0xf41b0 LB 0x434
     xor ch, ch                                ; 30 ed
     mov word [bp-00ah], cx                    ; 89 4e f6
     test cx, cx                               ; 85 c9
-    jne short 04315h                          ; 75 03
-    jmp near 0427bh                           ; e9 66 ff
+    jne short 04345h                          ; 75 03
+    jmp near 042abh                           ; e9 66 ff
     cmp di, word [bp-010h]                    ; 3b 7e f0
-    jc near 04568h                            ; 0f 82 4c 02
+    jc near 04598h                            ; 0f 82 4c 02
     cmp ax, dx                                ; 39 d0
-    jnc near 04568h                           ; 0f 83 46 02
+    jnc near 04598h                           ; 0f 83 46 02
     cmp si, bx                                ; 39 de
-    jnc near 04568h                           ; 0f 83 40 02
+    jnc near 04598h                           ; 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 04336h                          ; 75 03
-    jmp near 0427bh                           ; e9 45 ff
+    jne short 04366h                          ; 75 03
+    jmp near 042abh                           ; 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
@@ -5843,13 +5863,13 @@ _int13_cdemu:                                ; 0xf41b0 LB 0x434
     mov word [bp-01ch], dx                    ; 89 56 e4
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 09e80h                               ; e8 2c 5b
+    call 09eb0h                               ; e8 2c 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 09e80h                               ; e8 1f 5b
+    call 09eb0h                               ; e8 1f 5b
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-010h]                    ; 8b 46 f0
     dec ax                                    ; 48
@@ -5884,7 +5904,7 @@ _int13_cdemu:                                ; 0xf41b0 LB 0x434
     mov cx, strict word 0000ch                ; b9 0c 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-02eh]                         ; 8d 46 d2
-    call 09f20h                               ; e8 68 5b
+    call 09f50h                               ; e8 68 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
@@ -5932,7 +5952,7 @@ _int13_cdemu:                                ; 0xf41b0 LB 0x434
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 04438h                               ; e2 fa
+    loop 04468h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
     push ax                                   ; 50
@@ -5947,11 +5967,11 @@ _int13_cdemu:                                ; 0xf41b0 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 0427bh                            ; 0f 84 13 fe
+    je near 042abh                            ; 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 26 d5
+    call 01999h                               ; e8 f6 d4
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -5960,14 +5980,14 @@ _int13_cdemu:                                ; 0xf41b0 LB 0x434
     push 0034ch                               ; 68 4c 03
     push 0038eh                               ; 68 8e 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 51 d5
+    call 019dah                               ; e8 21 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 04573h                           ; e9 d5 00
+    jmp near 045a3h                           ; 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
@@ -6006,40 +6026,40 @@ _int13_cdemu:                                ; 0xf41b0 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 04522h                           ; 74 1a
+    je short 04552h                           ; 74 1a
     cmp dl, 002h                              ; 80 fa 02
-    je short 0451eh                           ; 74 11
+    je short 0454eh                           ; 74 11
     cmp dl, 001h                              ; 80 fa 01
-    jne short 04526h                          ; 75 14
+    jne short 04556h                          ; 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 04526h                          ; eb 08
+    jmp short 04556h                          ; eb 08
     or AL, strict byte 004h                   ; 0c 04
-    jmp short 04519h                          ; eb f7
+    jmp short 04549h                          ; eb f7
     or AL, strict byte 005h                   ; 0c 05
-    jmp short 04519h                          ; eb f3
+    jmp short 04549h                          ; eb f3
     mov es, [bp-008h]                         ; 8e 46 f8
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jnc near 0427bh                           ; 0f 83 49 fd
+    jnc near 042abh                           ; 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 0427bh                           ; e9 3c fd
+    jmp near 042abh                           ; e9 3c fd
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 0427fh                           ; e9 37 fd
+    jmp near 042afh                           ; 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 46 d4
+    call 01999h                               ; e8 16 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 75 d4
+    call 019dah                               ; e8 45 d4
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -6050,16 +6070,16 @@ _int13_cdemu:                                ; 0xf41b0 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 42 d1
+    call 016c6h                               ; e8 12 d1
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 0428eh                           ; e9 03 fd
+    jmp near 042beh                           ; 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, 029h, 04bh, 0a5h
-    db  048h, 091h, 046h, 029h, 04bh, 086h, 046h, 029h, 04bh, 086h, 046h, 029h, 04bh, 0a5h, 048h, 029h
-    db  04bh, 029h, 04bh, 0a5h, 048h, 0a5h, 048h, 0a5h, 048h, 0a5h, 048h, 0a5h, 048h, 0bbh, 046h, 0a5h
-    db  048h, 029h, 04bh, 0c4h, 046h, 0d7h, 046h, 086h, 046h, 0d7h, 046h, 005h, 048h, 0bfh, 048h, 0d7h
-    db  046h, 0e6h, 048h, 0e2h, 04ah, 0eah, 04ah, 029h, 04bh
-_int13_cdrom:                                ; 0xf45e4 LB 0x562
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6067,20 +6087,20 @@ _int13_cdrom:                                ; 0xf45e4 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 df d0
+    call 016d4h                               ; e8 af 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 bd d0
+    call 016c6h                               ; e8 8d d0
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 04618h                           ; 72 05
+    jc short 04648h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 04636h                           ; 72 1e
+    jc short 04666h                           ; 72 1e
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6090,9 +6110,9 @@ _int13_cdrom:                                ; 0xf45e4 LB 0x562
     push 003dfh                               ; 68 df 03
     push 003ebh                               ; 68 eb 03
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 aa d3
+    call 019dah                               ; e8 7a d3
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04b06h                           ; e9 d0 04
+    jmp near 04b36h                           ; e9 d0 04
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     mov es, [bp-00ch]                         ; 8e 46 f4
@@ -6101,36 +6121,36 @@ _int13_cdrom:                                ; 0xf45e4 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 0465fh                           ; 72 10
+    jc short 0468fh                           ; 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 0462bh                          ; eb cc
+    jmp short 0465bh                          ; 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 04b29h                          ; 0f 87 bd 04
+    jnbe near 04b59h                          ; 0f 87 bd 04
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 0458bh                            ; bf 8b 45
+    mov di, 045bbh                            ; bf bb 45
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+045a8h]               ; 2e 8b 85 a8 45
+    mov ax, word [cs:di+045d8h]               ; 2e 8b 85 d8 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 04b0eh                           ; e9 7d 04
+    jmp near 04b3eh                           ; e9 7d 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 1e d0
+    call 016b8h                               ; e8 ee cf
     mov cl, al                                ; 88 c1
     movzx ax, cl                              ; 0f b6 c1
     sal ax, 008h                              ; c1 e0 08
@@ -6139,18 +6159,18 @@ _int13_cdrom:                                ; 0xf45e4 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 14 d0
+    call 016c6h                               ; e8 e4 cf
     test cl, cl                               ; 84 c9
-    je near 048a9h                            ; 0f 84 f1 01
-    jmp near 04b22h                           ; e9 67 04
+    je near 048d9h                            ; 0f 84 f1 01
+    jmp near 04b52h                           ; e9 67 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 04b11h                           ; e9 4d 04
+    jmp near 04b41h                           ; 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 048a9h                           ; e9 d2 01
+    jmp near 048d9h                           ; 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
@@ -6165,16 +6185,16 @@ _int13_cdrom:                                ; 0xf45e4 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 0471fh                           ; 74 18
+    je short 0474fh                           ; 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 c1 d2
+    call 019dah                               ; e8 91 d2
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 04b06h                           ; e9 e7 03
+    jmp near 04b36h                           ; 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
@@ -6184,14 +6204,14 @@ _int13_cdrom:                                ; 0xf45e4 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 048a5h                            ; 0f 84 66 01
+    je near 048d5h                            ; 0f 84 66 01
     cmp ax, strict word 00047h                ; 3d 47 00
-    je near 048a5h                            ; 0f 84 5f 01
+    je near 048d5h                            ; 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 09f20h                               ; e8 cd 57
+    call 09f50h                               ; e8 cd 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
@@ -6219,7 +6239,7 @@ _int13_cdrom:                                ; 0xf45e4 LB 0x562
     mov cx, strict word 0000bh                ; b9 0b 00
     sal ax, 1                                 ; d1 e0
     rcl bx, 1                                 ; d1 d3
-    loop 0479dh                               ; e2 fa
+    loop 047cdh                               ; e2 fa
     push bx                                   ; 53
     push ax                                   ; 50
     push strict byte 00000h                   ; 6a 00
@@ -6235,29 +6255,29 @@ _int13_cdrom:                                ; 0xf45e4 LB 0x562
     mov cx, strict word 0000bh                ; b9 0b 00
     shr di, 1                                 ; d1 ef
     rcr ax, 1                                 ; d1 d8
-    loop 047c7h                               ; e2 fa
+    loop 047f7h                               ; 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 048a5h                            ; 0f 84 cb 00
+    je near 048d5h                            ; 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 b4 d1
+    call 01999h                               ; e8 84 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 e3 d1
+    call 019dah                               ; e8 b3 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 04b0eh                           ; e9 09 03
+    jmp near 04b3eh                           ; e9 09 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe near 04b06h                          ; 0f 87 fa 02
+    jnbe near 04b36h                          ; 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
@@ -6265,20 +6285,20 @@ _int13_cdrom:                                ; 0xf45e4 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 04896h                           ; 74 73
+    je short 048c6h                           ; 74 73
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 04863h                           ; 74 3b
+    je short 04893h                           ; 74 3b
     test bx, bx                               ; 85 db
-    jne near 048a5h                           ; 0f 85 77 00
+    jne near 048d5h                           ; 0f 85 77 00
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 04844h                          ; 75 12
+    jne short 04874h                          ; 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 04b0eh                           ; e9 ca 02
+    jmp near 04b3eh                           ; e9 ca 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     db  0feh, 0c0h
@@ -6290,13 +6310,13 @@ _int13_cdrom:                                ; 0xf45e4 LB 0x562
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp near 048a5h                           ; e9 42 00
+    jmp near 048d5h                           ; e9 42 00
     test al, al                               ; 84 c0
-    jne short 04873h                          ; 75 0c
+    jne short 048a3h                          ; 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 04b11h                           ; e9 9e 02
+    jmp near 04b41h                           ; e9 9e 02
     movzx dx, byte [bp-008h]                  ; 0f b6 56 f8
     imul dx, dx, strict byte 0001ch           ; 6b d2 1c
     db  0feh, 0c8h
@@ -6311,7 +6331,7 @@ _int13_cdrom:                                ; 0xf45e4 LB 0x562
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor al, al                                ; 30 c0
     or ax, dx                                 ; 09 d0
-    jmp short 0485dh                          ; eb c7
+    jmp short 0488dh                          ; eb c7
     test al, al                               ; 84 c0
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
@@ -6323,7 +6343,7 @@ _int13_cdrom:                                ; 0xf45e4 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 12 ce
+    call 016c6h                               ; e8 e2 cd
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6336,14 +6356,14 @@ _int13_cdrom:                                ; 0xf45e4 LB 0x562
     add si, ax                                ; 01 c6
     mov al, byte [es:si+025h]                 ; 26 8a 44 25
     test al, al                               ; 84 c0
-    je short 048d9h                           ; 74 06
+    je short 04909h                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 046beh                           ; e9 e5 fd
-    je short 048a5h                           ; 74 ca
+    jmp near 046eeh                           ; e9 e5 fd
+    je short 048d5h                           ; 74 ca
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 04b0eh                           ; e9 28 02
+    jmp near 04b3eh                           ; e9 28 02
     mov dx, word [bp+00ch]                    ; 8b 56 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
     mov bx, dx                                ; 89 d3
@@ -6353,8 +6373,8 @@ _int13_cdrom:                                ; 0xf45e4 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 04b06h                            ; 0f 82 04 02
-    jc short 04953h                           ; 72 4f
+    jc near 04b36h                            ; 0f 82 04 02
+    jc short 04983h                           ; 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
@@ -6377,7 +6397,7 @@ _int13_cdrom:                                ; 0xf45e4 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 04a2ah                            ; 0f 82 cf 00
+    jc near 04a5ah                            ; 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
@@ -6429,22 +6449,22 @@ _int13_cdrom:                                ; 0xf45e4 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 04a0dh                          ; eb 05
+    jmp short 04a3dh                          ; eb 05
     cmp ch, 00fh                              ; 80 fd 0f
-    jnc short 04a20h                          ; 73 13
+    jnc short 04a50h                          ; 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 9e cc
+    call 016b8h                               ; e8 6e cc
     add cl, al                                ; 00 c1
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
-    jmp short 04a08h                          ; eb e8
+    jmp short 04a38h                          ; 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 048a5h                            ; 0f 82 73 fe
+    jc near 048d5h                            ; 0f 82 73 fe
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -6462,7 +6482,7 @@ _int13_cdrom:                                ; 0xf45e4 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 04a73h                          ; 75 09
+    jne short 04aa3h                          ; 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
@@ -6471,7 +6491,7 @@ _int13_cdrom:                                ; 0xf45e4 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 04a9fh                          ; 75 13
+    jne short 04acfh                          ; 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
@@ -6486,32 +6506,32 @@ _int13_cdrom:                                ; 0xf45e4 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 04ac7h                          ; eb 05
+    jmp short 04af7h                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04ad6h                          ; 73 0f
+    jnc short 04b06h                          ; 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 04ac2h                          ; eb ec
+    jmp short 04af2h                          ; 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 048a5h                           ; e9 c3 fd
+    jmp near 048d5h                           ; e9 c3 fd
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 04b22h                          ; eb 38
+    jmp short 04b52h                          ; eb 38
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je near 048a5h                            ; 0f 84 b4 fd
+    je near 048d5h                            ; 0f 84 b4 fd
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 04b06h                           ; 72 10
-    jbe near 048a5h                           ; 0f 86 ab fd
+    jc short 04b36h                           ; 72 10
+    jbe near 048d5h                           ; 0f 86 ab fd
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 04b06h                           ; 72 07
+    jc short 04b36h                           ; 72 07
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe near 048a5h                           ; 0f 86 9f fd
+    jbe near 048d5h                           ; 0f 86 9f fd
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -6521,55 +6541,55 @@ _int13_cdrom:                                ; 0xf45e4 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 a4 cb
+    call 016c6h                               ; e8 74 cb
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp near 048b8h                           ; e9 8f fd
+    jmp near 048e8h                           ; 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 65 ce
+    call 01999h                               ; e8 35 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 04716h                           ; e9 d0 fb
-print_boot_device_:                          ; 0xf4b46 LB 0x4b
+    jmp near 04746h                           ; e9 d0 fb
+print_boot_device_:                          ; 0xf4b76 LB 0x4b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 04b53h                           ; 74 05
+    je short 04b83h                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 04b6dh                          ; eb 1a
+    jmp short 04b9dh                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 04b5ch                           ; 74 05
+    je short 04b8ch                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 04b6dh                          ; eb 11
+    jmp short 04b9dh                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04b65h                          ; 75 04
+    jne short 04b95h                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 04b6dh                          ; eb 08
+    jmp short 04b9dh                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 04b8bh                           ; 74 21
+    je short 04bbbh                           ; 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 21 ce
+    call 01999h                               ; e8 f1 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 52 ce
+    call 019dah                               ; e8 22 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_:                         ; 0xf4b91 LB 0x93
+print_boot_failure_:                         ; 0xf4bc1 LB 0x93
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6578,59 +6598,59 @@ print_boot_failure_:                         ; 0xf4b91 LB 0x93
     and ah, 07fh                              ; 80 e4 7f
     movzx si, ah                              ; 0f b6 f4
     test al, al                               ; 84 c0
-    je short 04bbeh                           ; 74 1b
+    je short 04beeh                           ; 74 1b
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 eb cd
+    call 01999h                               ; e8 bb cd
     push 00ddah                               ; 68 da 0d
     push 004a8h                               ; 68 a8 04
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 21 ce
+    call 019dah                               ; e8 f1 cd
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 04c02h                          ; eb 44
+    jmp short 04c32h                          ; eb 44
     test dl, dl                               ; 84 d2
-    je short 04bd2h                           ; 74 10
+    je short 04c02h                           ; 74 10
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 cc cd
+    call 01999h                               ; e8 9c cd
     push 00de4h                               ; 68 e4 0d
-    jmp short 04bb1h                          ; eb df
+    jmp short 04be1h                          ; eb df
     test bl, 080h                             ; f6 c3 80
-    je short 04be8h                           ; 74 11
+    je short 04c18h                           ; 74 11
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 b7 cd
+    call 01999h                               ; e8 87 cd
     push si                                   ; 56
     push 00dd0h                               ; 68 d0 0d
-    jmp short 04bf7h                          ; eb 0f
+    jmp short 04c27h                          ; eb 0f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 a6 cd
+    call 01999h                               ; e8 76 cd
     push si                                   ; 56
     push 00dc6h                               ; 68 c6 0d
     push 004bdh                               ; 68 bd 04
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 db cd
+    call 019dah                               ; e8 ab cd
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04c1ch                          ; 75 14
+    jne short 04c4ch                          ; 75 14
     test dh, dh                               ; 84 f6
-    jne short 04c11h                          ; 75 05
+    jne short 04c41h                          ; 75 05
     push 004d5h                               ; 68 d5 04
-    jmp short 04c14h                          ; eb 03
+    jmp short 04c44h                          ; eb 03
     push 004ffh                               ; 68 ff 04
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 c1 cd
+    call 019dah                               ; e8 91 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_:                    ; 0xf4c24 LB 0x27
+print_cdromboot_failure_:                    ; 0xf4c54 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -6640,11 +6660,11 @@ print_cdromboot_failure_:                    ; 0xf4c24 LB 0x27
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 62 cd
+    call 01999h                               ; e8 32 cd
     push dx                                   ; 52
     push 00534h                               ; 68 34 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 9a cd
+    call 019dah                               ; e8 6a cd
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -6652,7 +6672,7 @@ print_cdromboot_failure_:                    ; 0xf4c24 LB 0x27
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf4c4b LB 0x256
+_int19_function:                             ; 0xf4c7b LB 0x256
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6660,53 +6680,53 @@ _int19_function:                             ; 0xf4c4b 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 78 ca
+    call 016d4h                               ; e8 48 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 a9 ca
+    call 01714h                               ; e8 79 ca
     movzx si, al                              ; 0f b6 f0
     mov ax, strict word 00038h                ; b8 38 00
-    call 01714h                               ; e8 a0 ca
+    call 01714h                               ; e8 70 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 91 ca
+    call 01714h                               ; e8 61 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 24 ca
+    call 016b8h                               ; e8 f4 c9
     test al, al                               ; 84 c0
-    je short 04ca3h                           ; 74 0b
+    je short 04cd3h                           ; 74 0b
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 016b8h                               ; e8 18 ca
+    call 016b8h                               ; e8 e8 c9
     movzx si, al                              ; 0f b6 f0
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04cb9h                          ; 75 10
+    jne short 04ce9h                          ; 75 10
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 01714h                               ; e8 65 ca
+    call 01714h                               ; e8 35 ca
     and AL, strict byte 0f0h                  ; 24 f0
     xor ah, ah                                ; 30 e4
     sar ax, 004h                              ; c1 f8 04
-    call 07d18h                               ; e8 5f 30
+    call 07d48h                               ; e8 5f 30
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04cc2h                          ; 75 03
+    jne short 04cf2h                          ; 75 03
     shr si, 004h                              ; c1 ee 04
     cmp byte [bp+004h], 003h                  ; 80 7e 04 03
-    jne short 04ccbh                          ; 75 03
+    jne short 04cfbh                          ; 75 03
     shr si, 008h                              ; c1 ee 08
     cmp byte [bp+004h], 004h                  ; 80 7e 04 04
-    jne short 04cd4h                          ; 75 03
+    jne short 04d04h                          ; 75 03
     shr si, 00ch                              ; c1 ee 0c
     cmp si, strict byte 00010h                ; 83 fe 10
-    jnc short 04cddh                          ; 73 04
+    jnc short 04d0dh                          ; 73 04
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -6715,105 +6735,105 @@ _int19_function:                             ; 0xf4c4b LB 0x256
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 a6 cc
+    call 01999h                               ; e8 76 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 d9 cc
+    call 019dah                               ; e8 a9 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 04d1ah                           ; 72 0e
-    jbe short 04d29h                          ; 76 1b
+    jc short 04d4ah                           ; 72 0e
+    jbe short 04d59h                          ; 76 1b
     cmp si, strict byte 00004h                ; 83 fe 04
-    je short 04d47h                           ; 74 34
+    je short 04d77h                           ; 74 34
     cmp si, strict byte 00003h                ; 83 fe 03
-    je short 04d3dh                           ; 74 25
-    jmp short 04d74h                          ; eb 5a
+    je short 04d6dh                           ; 74 25
+    jmp short 04da4h                          ; eb 5a
     cmp si, strict byte 00001h                ; 83 fe 01
-    jne short 04d74h                          ; 75 55
+    jne short 04da4h                          ; 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 04d8ch                          ; eb 63
+    jmp short 04dbch                          ; eb 63
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 016b8h                               ; e8 86 c9
+    call 016b8h                               ; e8 56 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 04d8ch                          ; eb 4f
+    jmp short 04dbch                          ; eb 4f
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
-    jmp short 04d51h                          ; eb 0a
+    jmp short 04d81h                          ; eb 0a
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 04d8ch                           ; 74 3b
-    call 03d9ah                               ; e8 46 f0
+    je short 04dbch                           ; 74 3b
+    call 03dcah                               ; e8 46 f0
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 04d7bh                           ; 74 21
-    call 04c24h                               ; e8 c7 fe
+    je short 04dabh                           ; 74 21
+    call 04c54h                               ; 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 04b91h                               ; e8 1d fe
+    call 04bc1h                               ; e8 1d fe
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 04e9ah                           ; e9 1f 01
+    jmp near 04ecah                           ; e9 1f 01
     mov dx, 00372h                            ; ba 72 03
     mov ax, word [bp-00eh]                    ; 8b 46 f2
-    call 016d4h                               ; e8 50 c9
+    call 016d4h                               ; e8 20 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 04e08h                           ; 0f 85 74 00
+    jne near 04e38h                           ; 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 04d5dh                          ; 75 bb
+    jne short 04d8dh                          ; 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 04d5dh                          ; 75 ad
+    jne short 04d8dh                          ; 75 ad
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04d5dh                          ; 75 a6
+    jne short 04d8dh                          ; 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 04de6h                          ; 75 1f
+    jne short 04e16h                          ; 75 1f
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04de6h                          ; 75 19
+    jne short 04e16h                          ; 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 04b46h                               ; e8 6a fd
+    call 04b76h                               ; 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 04e02h                          ; eb 1c
+    jmp short 04e32h                          ; 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 04b46h                               ; e8 51 fd
+    call 04b76h                               ; 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 04d5dh                           ; e9 55 ff
+    jmp near 04d8dh                           ; e9 55 ff
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04e34h                          ; 75 26
+    jne short 04e64h                          ; 75 26
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 04e34h                          ; 75 20
+    jne short 04e64h                          ; 75 20
     mov di, 007c0h                            ; bf c0 07
     mov es, di                                ; 8e c7
     mov dl, byte [bp-006h]                    ; 8a 56 fa
@@ -6826,40 +6846,40 @@ _int19_function:                             ; 0xf4c4b 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 04d5dh                           ; 0f 85 29 ff
+    jne near 04d8dh                           ; 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 04e43h                           ; 74 02
+    je short 04e73h                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     xor dx, dx                                ; 31 d2
     mov ax, di                                ; 89 f8
-    call 016d4h                               ; e8 8a c8
+    call 016d4h                               ; e8 5a c8
     mov bx, ax                                ; 89 c3
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, di                                ; 89 f8
-    call 016d4h                               ; e8 80 c8
+    call 016d4h                               ; e8 50 c8
     cmp bx, ax                                ; 39 c3
-    je short 04e69h                           ; 74 11
+    je short 04e99h                           ; 74 11
     test cl, cl                               ; 84 c9
-    jne short 04e7fh                          ; 75 23
+    jne short 04eafh                          ; 75 23
     mov dx, 001feh                            ; ba fe 01
     mov ax, di                                ; 89 f8
-    call 016d4h                               ; e8 70 c8
+    call 016d4h                               ; e8 40 c8
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04e7fh                           ; 74 16
+    je short 04eafh                           ; 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 04d71h                           ; e9 f2 fe
+    jmp near 04da1h                           ; 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 04b46h                               ; e8 b8 fc
+    call 04b76h                               ; e8 b8 fc
     movzx bx, byte [bp-006h]                  ; 0f b6 5e fa
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
@@ -6870,18 +6890,18 @@ _int19_function:                             ; 0xf4c4b LB 0x256
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4ea1 LB 0x13
+keyboard_panic_:                             ; 0xf4ed1 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 2d cb
+    call 019dah                               ; e8 fd ca
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4eb4 LB 0x26a
+_keyboard_init:                              ; 0xf4ee4 LB 0x26a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov AL, strict byte 0aah                  ; b0 aa
@@ -6893,44 +6913,44 @@ _keyboard_init:                              ; 0xf4eb4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04ed7h                           ; 74 0d
+    je short 04f07h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ed7h                          ; 76 08
+    jbe short 04f07h                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ec0h                          ; eb e9
+    jmp short 04ef0h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ee0h                          ; 75 05
+    jne short 04f10h                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04ea1h                               ; e8 c1 ff
+    call 04ed1h                               ; 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 04efah                          ; 75 0d
+    jne short 04f2ah                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04efah                          ; 76 08
+    jbe short 04f2ah                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04ee3h                          ; eb e9
+    jmp short 04f13h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f04h                          ; 75 06
+    jne short 04f34h                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04ea1h                               ; e8 9d ff
+    call 04ed1h                               ; 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 04f15h                           ; 74 06
+    je short 04f45h                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04ea1h                               ; e8 8c ff
+    call 04ed1h                               ; e8 8c ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -6940,44 +6960,44 @@ _keyboard_init:                              ; 0xf4eb4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04f35h                           ; 74 0d
+    je short 04f65h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f35h                          ; 76 08
+    jbe short 04f65h                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f1eh                          ; eb e9
+    jmp short 04f4eh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f3fh                          ; 75 06
+    jne short 04f6fh                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04ea1h                               ; e8 62 ff
+    call 04ed1h                               ; 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 04f59h                          ; 75 0d
+    jne short 04f89h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f59h                          ; 76 08
+    jbe short 04f89h                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f42h                          ; eb e9
+    jmp short 04f72h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f63h                          ; 75 06
+    jne short 04f93h                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04ea1h                               ; e8 3e ff
+    call 04ed1h                               ; 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 04f73h                           ; 74 06
+    je short 04fa3h                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04ea1h                               ; e8 2e ff
+    call 04ed1h                               ; e8 2e ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -6987,67 +7007,67 @@ _keyboard_init:                              ; 0xf4eb4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04f93h                           ; 74 0d
+    je short 04fc3h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04f93h                          ; 76 08
+    jbe short 04fc3h                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04f7ch                          ; eb e9
+    jmp short 04fach                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04f9dh                          ; 75 06
+    jne short 04fcdh                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04ea1h                               ; e8 04 ff
+    call 04ed1h                               ; 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 04fb7h                          ; 75 0d
+    jne short 04fe7h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04fb7h                          ; 76 08
+    jbe short 04fe7h                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fa0h                          ; eb e9
+    jmp short 04fd0h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04fc1h                          ; 75 06
+    jne short 04ff1h                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04ea1h                               ; e8 e0 fe
+    call 04ed1h                               ; 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 04fd2h                           ; 74 06
+    je short 05002h                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04ea1h                               ; e8 cf fe
+    call 04ed1h                               ; 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 04fe4h                          ; 75 08
+    jne short 05014h                          ; 75 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fd2h                          ; eb ee
+    jmp short 05002h                          ; 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 04ffdh                           ; 74 0e
+    je short 0502dh                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 04ffdh                           ; 74 06
+    je short 0502dh                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04ea1h                               ; e8 a4 fe
+    call 04ed1h                               ; e8 a4 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7057,44 +7077,44 @@ _keyboard_init:                              ; 0xf4eb4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0501dh                           ; 74 0d
+    je short 0504dh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0501dh                          ; 76 08
+    jbe short 0504dh                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05006h                          ; eb e9
+    jmp short 05036h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05027h                          ; 75 06
+    jne short 05057h                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04ea1h                               ; e8 7a fe
+    call 04ed1h                               ; 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 05041h                          ; 75 0d
+    jne short 05071h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05041h                          ; 76 08
+    jbe short 05071h                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0502ah                          ; eb e9
+    jmp short 0505ah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0504bh                          ; 75 06
+    jne short 0507bh                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04ea1h                               ; e8 56 fe
+    call 04ed1h                               ; 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 0505ch                           ; 74 06
+    je short 0508ch                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04ea1h                               ; e8 45 fe
+    call 04ed1h                               ; e8 45 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7104,18 +7124,18 @@ _keyboard_init:                              ; 0xf4eb4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0507ch                           ; 74 0d
+    je short 050ach                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0507ch                          ; 76 08
+    jbe short 050ach                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05065h                          ; eb e9
+    jmp short 05095h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05086h                          ; 75 06
+    jne short 050b6h                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04ea1h                               ; e8 1b fe
+    call 04ed1h                               ; e8 1b fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7125,18 +7145,18 @@ _keyboard_init:                              ; 0xf4eb4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 050a6h                           ; 74 0d
+    je short 050d6h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050a6h                          ; 76 08
+    jbe short 050d6h                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0508fh                          ; eb e9
+    jmp short 050bfh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050b0h                          ; 75 06
+    jne short 050e0h                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04ea1h                               ; e8 f1 fd
+    call 04ed1h                               ; e8 f1 fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7146,53 +7166,53 @@ _keyboard_init:                              ; 0xf4eb4 LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 050d0h                           ; 74 0d
+    je short 05100h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050d0h                          ; 76 08
+    jbe short 05100h                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050b9h                          ; eb e9
+    jmp short 050e9h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050dah                          ; 75 06
+    jne short 0510ah                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04ea1h                               ; e8 c7 fd
+    call 04ed1h                               ; 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 050f4h                          ; 75 0d
+    jne short 05124h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050f4h                          ; 76 08
+    jbe short 05124h                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050ddh                          ; eb e9
+    jmp short 0510dh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050feh                          ; 75 06
+    jne short 0512eh                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04ea1h                               ; e8 a3 fd
+    call 04ed1h                               ; 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 0510fh                           ; 74 06
+    je short 0513fh                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04ea1h                               ; e8 92 fd
+    call 04ed1h                               ; 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 06566h                               ; e8 4c 14
+    call 06596h                               ; e8 4c 14
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf511e LB 0x99
+enqueue_key_:                                ; 0xf514e LB 0x99
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -7204,32 +7224,32 @@ enqueue_key_:                                ; 0xf511e 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 a0 c5
+    call 016d4h                               ; e8 70 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 95 c5
+    call 016d4h                               ; e8 65 c5
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 0514ch                           ; 72 03
+    jc short 0517ch                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 05154h                          ; 75 04
+    jne short 05184h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 05179h                          ; eb 25
+    jmp short 051a9h                          ; eb 25
     xor bh, bh                                ; 30 ff
     mov dx, si                                ; 89 f2
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 68 c5
+    call 016c6h                               ; e8 38 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 5b c5
+    call 016c6h                               ; e8 2b 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 6c c5
+    call 016e2h                               ; e8 3c c5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop di                                    ; 5f
@@ -7238,42 +7258,11 @@ enqueue_key_:                                ; 0xf511e LB 0x99
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    aam 0c6h                                  ; d4 c6
-    lds di, [bp+si-04948h]                    ; c5 ba b8 b6
-    stosb                                     ; aa
-    popfw                                     ; 9d
-    push sp                                   ; 54
-    push bx                                   ; 53
-    inc si                                    ; 46
-    inc bp                                    ; 45
-    cmp bh, byte [bx+si]                      ; 3a 38
-    sub bl, byte [ss:di]                      ; 36 2a 1d
-    fist word [si-058h]                       ; df 54 a8
-    push dx                                   ; 52
-    push ax                                   ; 50
-    push dx                                   ; 52
-    push ax                                   ; 50
-    push dx                                   ; 52
-    xor word [bp+di+026h], dx                 ; 31 53 26
-    push dx                                   ; 52
-    scasw                                     ; af
-    push bx                                   ; 53
-    sbb ax, 0c554h                            ; 1d 54 c5
-    push sp                                   ; 54
-    mov ax, word [0ec54h]                     ; a1 54 ec
-    push dx                                   ; 52
-    push ax                                   ; 50
-    push dx                                   ; 52
-    push ax                                   ; 50
-    push dx                                   ; 52
-    jo short 05202h                           ; 70 53
-    inc dx                                    ; 42
-    push dx                                   ; 52
-    db  0feh
-    push bx                                   ; 53
-    db  082h, 054h, 0beh, 054h
-    ; adc byte [si-042h], 054h                  ; 82 54 be 54
-_int09_function:                             ; 0xf51b7 LB 0x474
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
@@ -7281,56 +7270,56 @@ _int09_function:                             ; 0xf51b7 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 051e1h                          ; 75 19
+    jne short 05211h                          ; 75 19
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 c6 c7
+    call 01999h                               ; e8 96 c7
     push 00587h                               ; 68 87 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 ff c7
+    call 019dah                               ; e8 cf c7
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 052a2h                           ; e9 c1 00
+    jmp near 052d2h                           ; e9 c1 00
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 ce c4
+    call 016b8h                               ; e8 9e 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 bf c4
+    call 016b8h                               ; e8 8f 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 b0 c4
+    call 016b8h                               ; e8 80 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, 05182h                            ; bf 82 51
+    mov di, 051b2h                            ; bf b2 51
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+05193h]               ; 2e 8b 85 93 51
+    mov ax, word [cs:di+051c3h]               ; 2e 8b 85 c3 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 8f c4
+    call 016c6h                               ; e8 5f c4
     or byte [bp-00ah], 040h                   ; 80 4e f6 40
     movzx bx, byte [bp-00ah]                  ; 0f b6 5e f6
-    jmp near 054b2h                           ; e9 70 02
+    jmp near 054e2h                           ; 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 054b2h                           ; e9 62 02
+    jmp near 054e2h                           ; e9 62 02
     test byte [bp-004h], 002h                 ; f6 46 fc 02
-    jne near 05284h                           ; 0f 85 2c 00
+    jne near 052b4h                           ; 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
@@ -7340,177 +7329,177 @@ _int09_function:                             ; 0xf51b7 LB 0x474
     inc ax                                    ; 40
     mov dl, al                                ; 88 c2
     test byte [bp-00ch], 080h                 ; f6 46 f4 80
-    je short 05274h                           ; 74 07
+    je short 052a4h                           ; 74 07
     not al                                    ; f6 d0
     and byte [bp-008h], al                    ; 20 46 f8
-    jmp short 05277h                          ; eb 03
+    jmp short 052a7h                          ; 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 42 c4
+    call 016c6h                               ; e8 12 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 05291h                           ; 74 04
+    je short 052c1h                           ; 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 24 c4
+    call 016c6h                               ; e8 f4 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 05284h                          ; 75 d6
+    jne short 052b4h                          ; 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 04 c4
+    call 016c6h                               ; e8 d4 c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 052d6h                           ; 74 0d
+    je short 05306h                           ; 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 052e4h                          ; eb 0e
+    jmp short 05314h                          ; 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 dc c3
-    jmp short 05284h                          ; eb 98
+    call 016c6h                               ; e8 ac c3
+    jmp short 052b4h                          ; eb 98
     test byte [bp-00eh], 001h                 ; f6 46 f2 01
-    jne short 05284h                          ; 75 92
+    jne short 052b4h                          ; 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 c0 c3
+    call 016c6h                               ; e8 90 c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 0531ah                           ; 74 0d
+    je short 0534ah                           ; 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 05328h                          ; eb 0e
+    jmp short 05358h                          ; 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 98 c3
-    jmp near 05284h                           ; e9 53 ff
+    call 016c6h                               ; e8 68 c3
+    jmp near 052b4h                           ; 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 81 c3
+    call 016c6h                               ; e8 51 c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 05359h                           ; 74 0d
+    je short 05389h                           ; 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 05367h                          ; eb 0e
+    jmp short 05397h                          ; 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 59 c3
-    jmp near 05284h                           ; e9 14 ff
+    call 016c6h                               ; e8 29 c3
+    jmp near 052b4h                           ; 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 42 c3
+    call 016c6h                               ; e8 12 c3
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 002h                 ; a8 02
-    je short 05398h                           ; 74 0d
+    je short 053c8h                           ; 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 053a6h                          ; eb 0e
+    jmp short 053d6h                          ; 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 1a c3
-    jmp near 05284h                           ; e9 d5 fe
+    call 016c6h                               ; e8 ea c2
+    jmp near 052b4h                           ; e9 d5 fe
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    jne short 053d1h                          ; 75 1c
+    jne short 05401h                          ; 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 fd c2
+    call 016c6h                               ; e8 cd c2
     mov al, byte [bp-010h]                    ; 8a 46 f0
     xor AL, strict byte 020h                  ; 34 20
-    jmp near 05470h                           ; e9 9f 00
+    jmp near 054a0h                           ; 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 e1 c2
+    call 016c6h                               ; e8 b1 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
-    call 0e034h                               ; e8 46 8c
+    call 0e034h                               ; e8 16 8c
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 c1 c2
+    call 016b8h                               ; e8 91 c2
     test AL, strict byte 008h                 ; a8 08
-    jne short 053eeh                          ; 75 f3
-    jmp near 05284h                           ; e9 86 fe
+    jne short 0541eh                          ; 75 f3
+    jmp near 052b4h                           ; e9 86 fe
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    jne near 05284h                           ; 0f 85 7e fe
+    jne near 052b4h                           ; 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 ac c2
-    jmp near 05284h                           ; e9 67 fe
+    call 016c6h                               ; e8 7c c2
+    jmp near 052b4h                           ; e9 67 fe
     test byte [bp-00eh], 002h                 ; f6 46 f2 02
-    je short 05457h                           ; 74 34
+    je short 05487h                           ; 74 34
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 a8 c2
+    call 016d4h                               ; e8 78 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 ab c2
+    call 016e2h                               ; e8 7b 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 83 c2
+    call 016c6h                               ; e8 53 c2
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7519,170 +7508,170 @@ _int09_function:                             ; 0xf51b7 LB 0x474
     pop bp                                    ; 5d
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
-    call 0511eh                               ; e8 ca fc
-    jmp near 05284h                           ; e9 2d fe
+    call 0514eh                               ; e8 ca fc
+    jmp near 052b4h                           ; 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 5b c2
+    call 016c6h                               ; e8 2b 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 47 c2
-    jmp near 05284h                           ; e9 02 fe
+    call 016c6h                               ; e8 17 c2
+    jmp near 052b4h                           ; e9 02 fe
     test byte [bp-00eh], 002h                 ; f6 46 f2 02
-    jne near 05284h                           ; 0f 85 fa fd
+    jne near 052b4h                           ; 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 28 c2
-    jmp near 05284h                           ; e9 e3 fd
+    call 016c6h                               ; e8 f8 c1
+    jmp near 052b4h                           ; e9 e3 fd
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 004h                 ; a8 04
-    jne near 05284h                           ; 0f 85 da fd
+    jne near 052b4h                           ; 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 0b c2
-    jmp near 05284h                           ; e9 c6 fd
+    call 016c6h                               ; e8 db c1
+    jmp near 052b4h                           ; e9 c6 fd
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0fbh                  ; 24 fb
-    jmp short 054ach                          ; eb e7
+    jmp short 054dch                          ; 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 054dfh                          ; 75 11
+    jne short 0550fh                          ; 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 08 c2
+    call 016e2h                               ; e8 d8 c1
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-00ah], 008h                 ; f6 46 f6 08
-    je short 054f3h                           ; 74 0e
+    je short 05523h                           ; 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 0529ch                           ; e9 a9 fd
+    jmp near 052cch                           ; e9 a9 fd
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     test AL, strict byte 080h                 ; a8 80
-    je short 05531h                           ; 74 37
+    je short 05561h                           ; 74 37
     cmp AL, strict byte 0fah                  ; 3c fa
-    jne short 0550eh                          ; 75 10
+    jne short 0553eh                          ; 75 10
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 b1 c1
+    call 016b8h                               ; e8 81 c1
     mov dl, al                                ; 88 c2
     or dl, 010h                               ; 80 ca 10
-    jmp short 05522h                          ; eb 14
+    jmp short 05552h                          ; eb 14
     cmp AL, strict byte 0feh                  ; 3c fe
-    jne near 05284h                           ; 0f 85 70 fd
+    jne near 052b4h                           ; 0f 85 70 fd
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 9b c1
+    call 016b8h                               ; e8 6b 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 98 c1
-    jmp near 05284h                           ; e9 53 fd
+    call 016c6h                               ; e8 68 c1
+    jmp near 052b4h                           ; e9 53 fd
     cmp byte [bp-00ch], 058h                  ; 80 7e f4 58
-    jbe short 05555h                          ; 76 1e
+    jbe short 05585h                          ; 76 1e
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 57 c4
+    call 01999h                               ; e8 27 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 8b c4
+    call 019dah                               ; e8 5b c4
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 052a2h                           ; e9 4d fd
+    jmp near 052d2h                           ; e9 4d fd
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test AL, strict byte 008h                 ; a8 08
-    je short 0556eh                           ; 74 12
+    je short 0559eh                           ; 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 055fch                           ; e9 8e 00
+    jmp near 0562ch                           ; e9 8e 00
     test AL, strict byte 004h                 ; a8 04
-    je short 05584h                           ; 74 12
+    je short 055b4h                           ; 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 055fch                           ; e9 78 00
+    jmp near 0562ch                           ; 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 055a2h                          ; 76 15
+    jbe short 055d2h                          ; 76 15
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 055a2h                           ; 72 0e
+    jc short 055d2h                           ; 72 0e
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 055a2h                         ; 77 0a
+    jnbe short 055d2h                         ; 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 055f8h                          ; eb 56
+    jmp short 05628h                          ; eb 56
     test byte [bp-008h], 003h                 ; f6 46 f8 03
-    je short 055d6h                           ; 74 2e
+    je short 05606h                           ; 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 055c6h                           ; 74 0a
+    je short 055f6h                           ; 74 0a
     mov dl, byte [bx+00deeh]                  ; 8a 97 ee 0d
     mov ax, word [bx+00deeh]                  ; 8b 87 ee 0d
-    jmp short 055ceh                          ; eb 08
+    jmp short 055feh                          ; 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 05602h                          ; eb 2c
+    jmp short 05632h                          ; 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 055f4h                           ; 74 0a
+    je short 05624h                           ; 74 0a
     mov dl, byte [bx+00df0h]                  ; 8a 97 f0 0d
     mov ax, word [bx+00df0h]                  ; 8b 87 f0 0d
-    jmp short 055fch                          ; eb 08
+    jmp short 0562ch                          ; 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 05622h                          ; 75 1a
+    jne short 05652h                          ; 75 1a
     test dl, dl                               ; 84 d2
-    jne short 05622h                          ; 75 16
+    jne short 05652h                          ; 75 16
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 82 c3
+    call 01999h                               ; e8 52 c3
     push 005d8h                               ; 68 d8 05
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 bb c3
+    call 019dah                               ; e8 8b 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 05451h                           ; e9 26 fe
-dequeue_key_:                                ; 0xf562b LB 0x94
+    jmp near 05481h                           ; e9 26 fe
+dequeue_key_:                                ; 0xf565b LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -7695,36 +7684,36 @@ dequeue_key_:                                ; 0xf562b 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 8f c0
+    call 016d4h                               ; e8 5f 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 84 c0
+    call 016d4h                               ; e8 54 c0
     cmp bx, ax                                ; 39 c3
-    je short 05691h                           ; 74 3d
+    je short 056c1h                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 5c c0
+    call 016b8h                               ; e8 2c c0
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 51 c0
+    call 016b8h                               ; e8 21 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 0568ch                           ; 74 13
+    je short 056bch                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 05683h                           ; 72 03
+    jc short 056b3h                           ; 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 56 c0
+    call 016e2h                               ; e8 26 c0
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 05693h                          ; eb 02
+    jmp short 056c3h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -7735,35 +7724,29 @@ dequeue_key_:                                ; 0xf562b 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+059h], bl                    ; 00 5d 59
-    jnc short 05702h                          ; 73 57
-    mov dx, 00657h                            ; ba 57 06
-    pop ax                                    ; 58
-    push SS                                   ; 16
-    pop ax                                    ; 58
-    inc ax                                    ; 40
-    pop ax                                    ; 58
-    dec cx                                    ; 49
-    pop ax                                    ; 58
-    mov dx, 0eb58h                            ; ba 58 eb
+    add byte [di-05ca7h], cl                  ; 00 8d 59 a3
+    push di                                   ; 57
+    jmp far 04658h:03657h                     ; ea 57 36 58 46
     pop ax                                    ; 58
-    sbb byte [bx+di+052h], bl                 ; 18 59 52
+    jo short 0573bh                           ; 70 58
+    jns short 0573dh                          ; 79 58
+    jmp far 04859h:01b58h                     ; ea 58 1b 59 48
     pop cx                                    ; 59
-    db  0a0h
-    pop cx                                    ; 59
-_int16_function:                             ; 0xf56bf LB 0x2e7
+    db  082h, 059h, 0d0h, 059h
+    ; sbb byte [bx+di-030h], 059h               ; 82 59 d0 59
+_int16_function:                             ; 0xf56ef 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 e9 bf
+    call 016b8h                               ; e8 b9 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 dc bf
+    call 016b8h                               ; e8 ac bf
     mov bl, al                                ; 88 c3
     movzx dx, cl                              ; 0f b6 d1
     sar dx, 004h                              ; c1 fa 04
@@ -7772,7 +7755,7 @@ _int16_function:                             ; 0xf56bf LB 0x2e7
     xor ah, ah                                ; 30 e4
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 05751h                           ; 74 60
+    je short 05781h                           ; 74 60
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
     mov dx, strict word 00060h                ; ba 60 00
@@ -7782,17 +7765,17 @@ _int16_function:                             ; 0xf56bf LB 0x2e7
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0570ah                          ; 75 08
+    jne short 0573ah                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 056f8h                          ; eb ee
+    jmp short 05728h                          ; 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 05750h                          ; 75 3b
+    jne short 05780h                          ; 75 3b
     and bl, 0c8h                              ; 80 e3 c8
     movzx ax, bh                              ; 0f b6 c7
     sar ax, 004h                              ; c1 f8 04
@@ -7808,11 +7791,11 @@ _int16_function:                             ; 0xf56bf LB 0x2e7
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 0573fh                          ; 75 08
+    jne short 0576fh                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0572dh                          ; eb ee
+    jmp short 0575dh                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -7820,63 +7803,63 @@ _int16_function:                             ; 0xf56bf LB 0x2e7
     xor bh, bh                                ; 30 ff
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 76 bf
+    call 016c6h                               ; e8 46 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 0595dh                          ; 0f 87 ff 01
+    jnbe near 0598dh                          ; 0f 87 ff 01
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 0569ch                            ; bf 9c 56
+    mov di, 056cch                            ; bf cc 56
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+056a7h]               ; 2e 8b 85 a7 56
+    mov ax, word [cs:di+056d7h]               ; 2e 8b 85 d7 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 0562bh                               ; e8 a9 fe
+    call 0565bh                               ; e8 a9 fe
     test ax, ax                               ; 85 c0
-    jne short 05791h                          ; 75 0b
+    jne short 057c1h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 4c c2
+    call 019dah                               ; e8 1c c2
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 0579dh                           ; 74 06
+    je short 057cdh                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 057a3h                           ; 74 06
+    je short 057d3h                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 057a7h                          ; 75 04
+    jne short 057d7h                          ; 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 059a0h                           ; e9 e6 01
+    jmp near 059d0h                           ; 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 0562bh                               ; e8 5d fe
+    call 0565bh                               ; e8 5d fe
     test ax, ax                               ; 85 c0
-    jne short 057d9h                          ; 75 07
+    jne short 05809h                          ; 75 07
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp near 059a0h                           ; e9 c7 01
+    jmp near 059d0h                           ; e9 c7 01
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 057e5h                           ; 74 06
+    je short 05815h                           ; 74 06
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je short 057ebh                           ; 74 06
+    je short 0581bh                           ; 74 06
     cmp byte [bp-008h], 0e0h                  ; 80 7e f8 e0
-    jne short 057efh                          ; 75 04
+    jne short 0581fh                          ; 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
@@ -7884,32 +7867,32 @@ _int16_function:                             ; 0xf56bf 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 059a0h                           ; e9 9a 01
+    jmp near 059d0h                           ; e9 9a 01
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 a9 be
+    call 016b8h                               ; e8 79 be
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
-    jmp short 057b4h                          ; eb 9e
+    jmp short 057e4h                          ; 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 0511eh                               ; e8 f7 f8
+    call 0514eh                               ; e8 f7 f8
     test ax, ax                               ; 85 c0
-    jne short 05838h                          ; 75 0d
+    jne short 05868h                          ; 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 059a0h                           ; e9 68 01
+    jmp near 059d0h                           ; e9 68 01
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 059a0h                           ; e9 60 01
+    jmp near 059d0h                           ; 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 05832h                          ; eb e9
+    jmp short 05862h                          ; eb e9
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
     cli                                       ; fa
@@ -7922,40 +7905,40 @@ _int16_function:                             ; 0xf56bf LB 0x2e7
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05870h                          ; 75 0d
+    jne short 058a0h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05870h                          ; 76 08
+    jbe short 058a0h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05859h                          ; eb e9
+    jmp short 05889h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 058b4h                          ; 76 40
+    jbe short 058e4h                          ; 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 058b4h                          ; 75 35
+    jne short 058e4h                          ; 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 05899h                          ; 75 0d
+    jne short 058c9h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05899h                          ; 76 08
+    jbe short 058c9h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05882h                          ; eb e9
+    jmp short 058b2h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 058abh                          ; 76 0e
+    jbe short 058dbh                          ; 76 0e
     shr cx, 008h                              ; c1 e9 08
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -7965,80 +7948,80 @@ _int16_function:                             ; 0xf56bf 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 0587fh                         ; 77 cb
+    jnbe short 058afh                         ; 77 cb
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 059a0h                           ; e9 e6 00
+    jmp near 059d0h                           ; 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 0562bh                               ; e8 62 fd
+    call 0565bh                               ; e8 62 fd
     test ax, ax                               ; 85 c0
-    jne short 058d8h                          ; 75 0b
+    jne short 05908h                          ; 75 0b
     push 0060fh                               ; 68 0f 06
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 05 c1
+    call 019dah                               ; e8 d5 c0
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 057a7h                            ; 0f 84 c7 fe
+    je near 057d7h                            ; 0f 84 c7 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 057a3h                            ; 0f 84 bb fe
-    jmp near 057a7h                           ; e9 bc fe
+    je near 057d3h                            ; 0f 84 bb fe
+    jmp near 057d7h                           ; 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 0562bh                               ; e8 2c fd
+    call 0565bh                               ; e8 2c fd
     test ax, ax                               ; 85 c0
-    je near 057d2h                            ; 0f 84 cd fe
+    je near 05802h                            ; 0f 84 cd fe
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je near 057efh                            ; 0f 84 e2 fe
+    je near 0581fh                            ; 0f 84 e2 fe
     cmp byte [bp-008h], 0f0h                  ; 80 7e f8 f0
-    je near 057ebh                            ; 0f 84 d6 fe
-    jmp near 057efh                           ; e9 d7 fe
+    je near 0581bh                            ; 0f 84 d6 fe
+    jmp near 0581fh                           ; e9 d7 fe
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 97 bd
+    call 016b8h                               ; e8 67 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 86 bd
+    call 016b8h                               ; e8 56 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 78 bd
+    call 016b8h                               ; e8 48 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 057b2h                           ; e9 60 fe
+    jmp near 057e2h                           ; e9 60 fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 05832h                           ; e9 d5 fe
+    jmp near 05862h                           ; 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 31 c0
+    call 01999h                               ; e8 01 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 63 c0
+    call 019dah                               ; e8 33 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 14 c0
+    call 01999h                               ; e8 e4 bf
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -8049,13 +8032,13 @@ _int16_function:                             ; 0xf56bf LB 0x2e7
     push ax                                   ; 50
     push 0065bh                               ; 68 5b 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 3d c0
+    call 019dah                               ; e8 0d 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_:                               ; 0xf59a6 LB 0xe5
+set_geom_lba_:                               ; 0xf59d6 LB 0xe5
     push bx                                   ; 53
     push cx                                   ; 51
     push si                                   ; 56
@@ -8070,32 +8053,32 @@ set_geom_lba_:                               ; 0xf59a6 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 09f00h                               ; e8 2f 45
+    call 09f30h                               ; e8 2f 45
     test ax, ax                               ; 85 c0
-    jne short 059e1h                          ; 75 0c
+    jne short 05a11h                          ; 75 0c
     test bx, bx                               ; 85 db
-    jne short 059e1h                          ; 75 08
+    jne short 05a11h                          ; 75 08
     test cx, cx                               ; 85 c9
-    jne short 059e1h                          ; 75 04
+    jne short 05a11h                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 059e8h                           ; 74 07
+    je short 05a18h                           ; 74 07
     mov bx, strict word 0ffffh                ; bb ff ff
     mov si, bx                                ; 89 de
-    jmp short 059eeh                          ; eb 06
+    jmp short 05a1eh                          ; 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 059fah                          ; eb 05
+    jmp short 05a2ah                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 05a1dh                          ; 7d 23
+    jnl short 05a4dh                          ; 7d 23
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp si, ax                                ; 39 c6
-    jc short 05a0bh                           ; 72 0a
-    jne short 05a14h                          ; 75 11
+    jc short 05a3bh                           ; 72 0a
+    jne short 05a44h                          ; 75 11
     mov ax, word [bp-004h]                    ; 8b 46 fc
     cmp ax, word [bp-008h]                    ; 3b 46 f8
-    jnbe short 05a14h                         ; 77 09
+    jnbe short 05a44h                         ; 77 09
     mov ax, word [bp-002h]                    ; 8b 46 fe
     inc ax                                    ; 40
     shr ax, 1                                 ; d1 e8
@@ -8103,20 +8086,20 @@ set_geom_lba_:                               ; 0xf59a6 LB 0xe5
     shr word [bp-006h], 1                     ; d1 6e fa
     rcr word [bp-008h], 1                     ; d1 5e f8
     inc bx                                    ; 43
-    jmp short 059f5h                          ; eb d8
+    jmp short 05a25h                          ; 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 09e80h                               ; e8 56 44
+    call 09eb0h                               ; e8 56 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 09ec0h                               ; e8 8a 44
+    call 09ef0h                               ; e8 8a 44
     mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 05a45h                          ; 76 06
+    jbe short 05a75h                          ; 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
@@ -8127,53 +8110,63 @@ set_geom_lba_:                               ; 0xf59a6 LB 0xe5
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn 00008h                               ; c2 08 00
-    adc ax, 03b5bh                            ; 15 5b 3b
+    inc bp                                    ; 45
     pop bx                                    ; 5b
-    push 0685bh                               ; 68 5b 68
+    imul bx, word [bp+di-068h], strict byte 0005bh ; 6b 5b 98 5b
+    cbw                                       ; 98
     pop bx                                    ; 5b
-    push 0495bh                               ; 68 5b 49
+    cbw                                       ; 98
+    pop bx                                    ; 5b
+    jns short 05af2h                          ; 79 5d
+    cmpsw                                     ; a7
+    pop si                                    ; 5e
+    cmpsw                                     ; a7
+    pop si                                    ; 5e
+    xchg dx, ax                               ; 92
     pop bp                                    ; 5d
-    jnbe short 05ac5h                         ; 77 5e
-    jnbe short 05ac7h                         ; 77 5e
-    bound bx, [di+054h]                       ; 62 5d 54
+    test byte [bp-059h], bl                   ; 84 5e a7
+    pop si                                    ; 5e
+    cmpsw                                     ; a7
+    pop si                                    ; 5e
+    test byte [bp-07ch], bl                   ; 84 5e 84
     pop si                                    ; 5e
-    jnbe short 05acdh                         ; 77 5e
-    jnbe short 05acfh                         ; 77 5e
-    push sp                                   ; 54
+    cmpsw                                     ; a7
     pop si                                    ; 5e
-    push sp                                   ; 54
+    cmpsw                                     ; a7
     pop si                                    ; 5e
-    jnbe short 05ad5h                         ; 77 5e
-    jnbe short 05ad7h                         ; 77 5e
-    fcomp dword [di+054h]                     ; d8 5d 54
+    or byte [bp-07ch], bl                     ; 08 5e 84
     pop si                                    ; 5e
-    jnbe short 05addh                         ; 77 5e
-    jnbe short 05adfh                         ; 77 5e
-    push sp                                   ; 54
+    cmpsw                                     ; a7
     pop si                                    ; 5e
-    or byte [bp+077h], bl                     ; 08 5e 77
+    cmpsw                                     ; a7
     pop si                                    ; 5e
-    jnbe short 05ae7h                         ; 77 5e
-    jnbe short 05ae9h                         ; 77 5e
-_int13_harddisk:                             ; 0xf5a8b LB 0x44a
+    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
     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 3a bc
+    call 016d4h                               ; e8 0a 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 1b bc
+    call 016c6h                               ; e8 eb bb
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05abah                           ; 72 05
+    jc short 05aeah                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05ad8h                           ; 72 1e
+    jc short 05b08h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8183,9 +8176,9 @@ _int13_harddisk:                             ; 0xf5a8b LB 0x44a
     push 0067eh                               ; 68 7e 06
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 08 bf
+    call 019dah                               ; e8 d8 be
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05e92h                           ; e9 ba 03
+    jmp near 05ec2h                           ; e9 ba 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8194,36 +8187,36 @@ _int13_harddisk:                             ; 0xf5a8b 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 05b01h                           ; 72 10
+    jc short 05b31h                           ; 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 05acdh                          ; eb cc
+    jmp short 05afdh                          ; 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 05e77h                          ; 0f 87 69 03
+    jnbe near 05ea7h                          ; 0f 87 69 03
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+05a59h]                   ; 2e ff a7 59 5a
+    jmp word [cs:bx+05a89h]                   ; 2e ff a7 89 5a
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc near 05b24h                           ; 0f 83 07 00
+    jnc near 05b54h                           ; 0f 83 07 00
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
-    call 01de4h                               ; e8 c0 c2
+    call 01de4h                               ; e8 90 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 93 bb
+    call 016c6h                               ; e8 63 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 74 bb
+    call 016b8h                               ; e8 44 bb
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
     xor dh, dh                                ; 30 f6
@@ -8234,10 +8227,10 @@ _int13_harddisk:                             ; 0xf5a8b 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 65 bb
+    call 016c6h                               ; e8 35 bb
     test cl, cl                               ; 84 c9
-    je short 05b28h                           ; 74 c3
-    jmp near 05eaeh                           ; e9 46 03
+    je short 05b58h                           ; 74 c3
+    jmp near 05edeh                           ; e9 46 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     mov word [bp-00ch], ax                    ; 89 46 f4
@@ -8257,22 +8250,22 @@ _int13_harddisk:                             ; 0xf5a8b 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 05ba3h                         ; 77 04
+    jnbe short 05bd3h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 05bc6h                          ; 75 23
+    jne short 05bf6h                          ; 75 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 eb bd
+    call 01999h                               ; e8 bb 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 1a be
+    call 019dah                               ; e8 ea bd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05e92h                           ; e9 cc 02
+    jmp near 05ec2h                           ; 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
@@ -8283,16 +8276,16 @@ _int13_harddisk:                             ; 0xf5a8b 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 05bf3h                          ; 73 0c
+    jnc short 05c23h                          ; 73 0c
     cmp cx, word [bp-008h]                    ; 3b 4e f8
-    jbe short 05bf3h                          ; 76 07
+    jbe short 05c23h                          ; 76 07
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp ax, dx                                ; 39 d0
-    jbe short 05c21h                          ; 76 2e
+    jbe short 05c51h                          ; 76 2e
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 9b bd
+    call 01999h                               ; e8 6b bd
     push dword [bp-008h]                      ; 66 ff 76 f8
     push di                                   ; 57
     mov ax, word [bp+012h]                    ; 8b 46 12
@@ -8304,36 +8297,36 @@ _int13_harddisk:                             ; 0xf5a8b LB 0x44a
     push 0067eh                               ; 68 7e 06
     push 00712h                               ; 68 12 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 bf bd
+    call 019dah                               ; e8 8f bd
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 05e92h                           ; e9 71 02
+    jmp near 05ec2h                           ; 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 05c2fh                          ; 75 03
-    jmp near 05b24h                           ; e9 f5 fe
+    jne short 05c5fh                          ; 75 03
+    jmp near 05b54h                           ; 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 05c50h                          ; 75 0f
+    jne short 05c80h                          ; 75 0f
     mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     cmp ax, word [bp-00ah]                    ; 3b 46 f6
-    jne short 05c50h                          ; 75 06
+    jne short 05c80h                          ; 75 06
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 05c80h                           ; 72 30
+    jc short 05cb0h                           ; 72 30
     mov ax, di                                ; 89 f8
     xor dx, dx                                ; 31 d2
     mov bx, cx                                ; 89 cb
     xor cx, cx                                ; 31 c9
-    call 09e80h                               ; e8 25 42
+    call 09eb0h                               ; e8 25 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 09e80h                               ; e8 16 42
+    call 09eb0h                               ; e8 16 42
     xor bx, bx                                ; 31 db
     add ax, word [bp-006h]                    ; 03 46 fa
     adc dx, bx                                ; 11 da
@@ -8388,11 +8381,11 @@ _int13_harddisk:                             ; 0xf5a8b LB 0x44a
     or bx, ax                                 ; 09 c3
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je near 05b24h                            ; 0f 84 0a fe
+    je near 05b54h                            ; 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 74 bc
+    call 01999h                               ; e8 44 bc
     movzx ax, dl                              ; 0f b6 c2
     push ax                                   ; 50
     mov ax, word [bp+016h]                    ; 8b 46 16
@@ -8401,21 +8394,21 @@ _int13_harddisk:                             ; 0xf5a8b LB 0x44a
     push 0067eh                               ; 68 7e 06
     push 00759h                               ; 68 59 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 9f bc
+    call 019dah                               ; e8 6f 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 05e9ah                           ; e9 51 01
+    jmp near 05ecah                           ; 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 45 bc
+    call 01999h                               ; e8 15 bc
     push 0077ah                               ; 68 7a 07
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 7e bc
+    call 019dah                               ; e8 4e bc
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 05b24h                           ; e9 c2 fd
+    jmp near 05b54h                           ; 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
@@ -8458,7 +8451,7 @@ _int13_harddisk:                             ; 0xf5a8b 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 05b24h                           ; e9 4c fd
+    jmp near 05b54h                           ; e9 4c fd
     movzx ax, byte [bp-002h]                  ; 0f b6 46 fe
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -8474,12 +8467,12 @@ _int13_harddisk:                             ; 0xf5a8b LB 0x44a
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 05dfdh                          ; 75 03
-    jmp near 05b24h                           ; e9 27 fd
+    jne short 05e2dh                          ; 75 03
+    jmp near 05b54h                           ; e9 27 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 05e9ah                           ; e9 92 00
+    jmp near 05ecah                           ; 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
@@ -8493,10 +8486,10 @@ _int13_harddisk:                             ; 0xf5a8b LB 0x44a
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-008h]                    ; 8b 5e f8
     xor cx, cx                                ; 31 c9
-    call 09e80h                               ; e8 4e 40
+    call 09eb0h                               ; e8 4e 40
     mov bx, word [bp-006h]                    ; 8b 5e fa
     xor cx, cx                                ; 31 c9
-    call 09e80h                               ; e8 46 40
+    call 09eb0h                               ; e8 46 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
@@ -8505,30 +8498,30 @@ _int13_harddisk:                             ; 0xf5a8b LB 0x44a
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05b28h                           ; e9 d4 fc
+    jmp near 05b58h                           ; 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 3a bb
+    call 01999h                               ; e8 0a 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 69 bb
+    call 019dah                               ; e8 39 bb
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05b24h                           ; e9 ad fc
+    jmp near 05b54h                           ; 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 17 bb
+    call 01999h                               ; e8 e7 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 05bbbh                           ; e9 29 fd
+    jmp near 05bebh                           ; e9 29 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8538,48 +8531,49 @@ _int13_harddisk:                             ; 0xf5a8b 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 18 b8
+    call 016c6h                               ; e8 e8 b7
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05b37h                           ; e9 82 fc
-    jnc short 05f16h                          ; 73 5f
-    mov bx, word [bx-075h]                    ; 8b 5f 8b
+    jmp near 05b67h                           ; e9 82 fc
+    mov word [0bb5fh], ax                     ; a3 5f bb
     pop di                                    ; 5f
-    mov bx, word [bx+05fh]                    ; 8b 5f 5f
-    arpl ax, sp                               ; 63 e0
-    pushaw                                    ; 60
-    mov bx, word [bx-01ah]                    ; 8b 5f e6
-    pushaw                                    ; 60
+    mov bx, 0bb5fh                            ; bb 5f bb
     pop di                                    ; 5f
-    arpl [bp-0519dh], bp                      ; 63 ae 63 ae
-    arpl [bp-0519dh], bp                      ; 63 ae 63 ae
-    arpl [bp+063h], si                        ; 63 76 63
-    scasb                                     ; ae
-    db  063h
-    scasb                                     ; ae
+    db  08fh, 063h, 010h
+    ; pop word [bp+di+010h]                     ; 8f 63 10
+    popaw                                     ; 61
+    mov bx, 0165fh                            ; bb 5f 16
+    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
     db  063h
-_int13_harddisk_ext:                         ; 0xf5ed5 LB 0x4f4
+_int13_harddisk_ext:                         ; 0xf5f05 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 f0 b7
+    call 016d4h                               ; e8 c0 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 e4 b7
+    call 016d4h                               ; e8 b4 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 c3 b7
+    call 016c6h                               ; e8 93 b7
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05f12h                           ; 72 05
+    jc short 05f42h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05f30h                           ; 72 1e
+    jc short 05f60h                           ; 72 1e
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8589,9 +8583,9 @@ _int13_harddisk_ext:                         ; 0xf5ed5 LB 0x4f4
     push 007f5h                               ; 68 f5 07
     push 0068dh                               ; 68 8d 06
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 b0 ba
+    call 019dah                               ; e8 80 ba
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 0638ch                           ; e9 5c 04
+    jmp near 063bch                           ; e9 5c 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     les bx, [bp-008h]                         ; c4 5e f8
@@ -8599,30 +8593,30 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 05f57h                           ; 72 10
+    jc short 05f87h                           ; 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 05f25h                          ; eb ce
+    jmp short 05f55h                          ; 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 063aeh                          ; 0f 87 47 04
+    jnbe near 063deh                          ; 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+05eb5h]                   ; 2e ff a7 b5 5e
+    jmp word [cs:bx+05ee5h]                   ; 2e ff a7 e5 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 06363h                           ; e9 d8 03
+    jmp near 06393h                           ; 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
@@ -8638,7 +8632,7 @@ _int13_harddisk_ext:                         ; 0xf5ed5 LB 0x4f4
     xor ax, ax                                ; 31 c0
     xor bx, bx                                ; 31 db
     mov si, strict word 00020h                ; be 20 00
-    call 09f10h                               ; e8 52 3f
+    call 09f40h                               ; e8 52 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
@@ -8650,38 +8644,38 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 06005h                         ; 77 22
-    jne short 06028h                          ; 75 43
+    jnbe short 06035h                         ; 77 22
+    jne short 06058h                          ; 75 43
     mov si, word [bp-00eh]                    ; 8b 76 f2
     cmp si, word [es:di+03ah]                 ; 26 3b 75 3a
-    jnbe short 06005h                         ; 77 17
+    jnbe short 06035h                         ; 77 17
     mov si, word [bp-00eh]                    ; 8b 76 f2
     cmp si, word [es:di+03ah]                 ; 26 3b 75 3a
-    jne short 06028h                          ; 75 31
+    jne short 06058h                          ; 75 31
     cmp cx, word [es:di+038h]                 ; 26 3b 4d 38
-    jnbe short 06005h                         ; 77 08
-    jne short 06028h                          ; 75 29
+    jnbe short 06035h                         ; 77 08
+    jne short 06058h                          ; 75 29
     cmp dx, word [es:di+036h]                 ; 26 3b 55 36
-    jc short 06028h                           ; 72 23
+    jc short 06058h                           ; 72 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 89 b9
+    call 01999h                               ; e8 59 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 b8 b9
+    call 019dah                               ; e8 88 b9
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 0638ch                           ; e9 64 03
+    jmp near 063bch                           ; 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 0635fh                            ; 0f 84 2a 03
+    je near 0638fh                            ; 0f 84 2a 03
     cmp di, strict byte 00047h                ; 83 ff 47
-    je near 0635fh                            ; 0f 84 23 03
+    je near 0638fh                            ; 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
@@ -8718,25 +8712,25 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 0635fh                            ; 0f 84 a8 02
+    je near 0638fh                            ; 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 d7 b8
+    call 01999h                               ; e8 a7 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 08 b9
+    call 019dah                               ; e8 d8 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 06394h                           ; e9 b4 02
+    jmp near 063c4h                           ; e9 b4 02
     or ah, 0b2h                               ; 80 cc b2
-    jmp near 06394h                           ; e9 ae 02
+    jmp near 063c4h                           ; 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
@@ -8746,8 +8740,8 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 0638ch                            ; 0f 82 89 02
-    jc near 061a2h                            ; 0f 82 9b 00
+    jc near 063bch                            ; 0f 82 89 02
+    jc near 061d2h                            ; 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
@@ -8789,12 +8783,12 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 09f00h                               ; e8 68 3d
+    call 09f30h                               ; e8 68 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 062a7h                            ; 0f 82 fd 00
+    jc near 062d7h                            ; 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
@@ -8820,9 +8814,9 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 06201h                          ; 75 04
+    jne short 06231h                          ; 75 04
     xor bx, bx                                ; 31 db
-    jmp short 06204h                          ; eb 03
+    jmp short 06234h                          ; eb 03
     mov bx, strict word 00008h                ; bb 08 00
     or bl, 010h                               ; 80 cb 10
     cmp ah, 001h                              ; 80 fc 01
@@ -8836,9 +8830,9 @@ _int13_harddisk_ext:                         ; 0xf5ed5 LB 0x4f4
     movzx cx, ah                              ; 0f b6 cc
     or bx, cx                                 ; 09 cb
     cmp AL, strict byte 003h                  ; 3c 03
-    jne short 06225h                          ; 75 05
+    jne short 06255h                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 06227h                          ; eb 02
+    jmp short 06257h                          ; eb 02
     xor ax, ax                                ; 31 c0
     or bx, ax                                 ; 09 c3
     mov ax, word [bp-01eh]                    ; 8b 46 e2
@@ -8864,22 +8858,22 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 0628ah                          ; eb 05
+    jmp short 062bah                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 0629dh                          ; 73 13
+    jnc short 062cdh                          ; 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 21 b4
+    call 016b8h                               ; e8 f1 b3
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 06285h                          ; eb e8
+    jmp short 062b5h                          ; 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 0635fh                            ; 0f 82 b0 00
+    jc near 0638fh                            ; 0f 82 b0 00
     movzx ax, byte [bp-004h]                  ; 0f b6 46 fc
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -8897,7 +8891,7 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 062f0h                          ; 75 09
+    jne short 06320h                          ; 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
@@ -8906,7 +8900,7 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 0631ch                          ; 75 13
+    jne short 0634ch                          ; 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
@@ -8921,17 +8915,17 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 06344h                          ; eb 05
+    jmp short 06374h                          ; eb 05
     cmp bh, 040h                              ; 80 ff 40
-    jnc short 06356h                          ; 73 12
+    jnc short 06386h                          ; 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 68 b3
+    call 016b8h                               ; e8 38 b3
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 0633fh                          ; eb e9
+    jmp short 0636fh                          ; eb e9
     neg bl                                    ; f6 db
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+041h], bl                 ; 26 88 5d 41
@@ -8939,20 +8933,20 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 58 b3
+    call 016c6h                               ; e8 28 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 0635fh                           ; 74 e4
+    je short 0638fh                           ; 74 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 0638ch                           ; 72 0c
-    jbe short 0635fh                          ; 76 dd
+    jc short 063bch                           ; 72 0c
+    jbe short 0638fh                          ; 76 dd
     cmp ax, strict word 00003h                ; 3d 03 00
-    jc short 0638ch                           ; 72 05
+    jc short 063bch                           ; 72 05
     cmp ax, strict word 00004h                ; 3d 04 00
-    jbe short 0635fh                          ; 76 d3
+    jbe short 0638fh                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8962,20 +8956,20 @@ _int13_harddisk_ext:                         ; 0xf5ed5 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 1e b3
+    call 016c6h                               ; e8 ee b2
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 06372h                          ; eb c4
+    jmp short 063a2h                          ; eb c4
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 e0 b5
+    call 01999h                               ; e8 b0 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 0601dh                           ; e9 54 fc
-_int14_function:                             ; 0xf63c9 LB 0x15a
+    jmp near 0604dh                           ; e9 54 fc
+_int14_function:                             ; 0xf63f9 LB 0x15a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -8983,29 +8977,29 @@ _int14_function:                             ; 0xf63c9 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 fb b2
+    call 016d4h                               ; e8 cb 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 cf b2
+    call 016b8h                               ; e8 9f b2
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc near 06519h                           ; 0f 83 26 01
+    jnc near 06549h                           ; 0f 83 26 01
     test si, si                               ; 85 f6
-    jbe near 06519h                           ; 0f 86 20 01
+    jbe near 06549h                           ; 0f 86 20 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 06411h                           ; 72 11
-    jbe short 0646ah                          ; 76 68
+    jc short 06441h                           ; 72 11
+    jbe short 0649ah                          ; 76 68
     cmp AL, strict byte 003h                  ; 3c 03
-    je near 06502h                            ; 0f 84 fa 00
+    je near 06532h                            ; 0f 84 fa 00
     cmp AL, strict byte 002h                  ; 3c 02
-    je near 064b8h                            ; 0f 84 aa 00
-    jmp near 06513h                           ; e9 02 01
+    je near 064e8h                            ; 0f 84 aa 00
+    jmp near 06543h                           ; e9 02 01
     test al, al                               ; 84 c0
-    jne near 06513h                           ; 0f 85 fc 00
+    jne near 06543h                           ; 0f 85 fc 00
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9015,14 +9009,14 @@ _int14_function:                             ; 0xf63c9 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 06436h                          ; 75 0c
+    jne short 06466h                          ; 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 0644ch                          ; eb 16
+    jmp short 0647ch                          ; eb 16
     and AL, strict byte 0e0h                  ; 24 e0
     movzx cx, al                              ; 0f b6 c8
     sar cx, 005h                              ; c1 f9 05
@@ -9047,10 +9041,10 @@ _int14_function:                             ; 0xf63c9 LB 0x15a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 064f4h                           ; e9 8a 00
+    jmp near 06524h                           ; e9 8a 00
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 61 b2
+    call 016d4h                               ; e8 31 b2
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
@@ -9058,20 +9052,20 @@ _int14_function:                             ; 0xf63c9 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 0649ah                           ; 74 17
+    je short 064cah                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 0649ah                           ; 74 13
+    je short 064cah                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 44 b2
+    call 016d4h                               ; e8 14 b2
     cmp ax, si                                ; 39 f0
-    je short 06475h                           ; 74 e1
+    je short 064a5h                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 06475h                          ; eb db
+    jmp short 064a5h                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 064a4h                           ; 74 06
+    je short 064d4h                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -9081,33 +9075,33 @@ _int14_function:                             ; 0xf63c9 LB 0x15a
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 064f4h                          ; 75 43
+    jne short 06524h                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 064f4h                          ; eb 3c
+    jmp short 06524h                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 13 b2
+    call 016d4h                               ; e8 e3 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 064e4h                          ; 75 17
+    jne short 06514h                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 064e4h                           ; 74 13
+    je short 06514h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 fa b1
+    call 016d4h                               ; e8 ca b1
     cmp ax, si                                ; 39 f0
-    je short 064c3h                           ; 74 e5
+    je short 064f3h                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 064c3h                          ; eb df
+    jmp short 064f3h                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 064fah                           ; 74 12
+    je short 0652ah                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -9115,12 +9109,12 @@ _int14_function:                             ; 0xf63c9 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 0651dh                          ; eb 23
+    jmp short 0654dh                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 064b3h                          ; eb b1
+    jmp short 064e3h                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9130,15 +9124,15 @@ _int14_function:                             ; 0xf63c9 LB 0x15a
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 064f1h                          ; eb de
+    jmp short 06521h                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 0651dh                          ; eb 04
+    jmp short 0654dh                          ; 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_:                                 ; 0xf6523 LB 0x43
+timer_wait_:                                 ; 0xf6553 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9146,7 +9140,7 @@ timer_wait_:                                 ; 0xf6523 LB 0x43
     push ax                                   ; 50
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 09ec0h                               ; e8 8f 39
+    call 09ef0h                               ; e8 8f 39
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
     mov dx, strict word 00061h                ; ba 61 00
@@ -9158,23 +9152,23 @@ timer_wait_:                                 ; 0xf6523 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 06550h                          ; 75 05
+    jne short 06580h                          ; 75 05
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 0655fh                           ; 74 0f
+    je short 0658fh                           ; 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 06550h                          ; 75 f3
-    jmp short 06540h                          ; eb e1
+    jne short 06580h                          ; 75 f3
+    jmp short 06570h                          ; eb e1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf6566 LB 0x2c
+set_enable_a20_:                             ; 0xf6596 LB 0x2c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9187,10 +9181,10 @@ set_enable_a20_:                             ; 0xf6566 LB 0x2c
     ; sub ah, ah                                ; 2a e4
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 0657fh                           ; 74 05
+    je short 065afh                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 06582h                          ; eb 03
+    jmp short 065b2h                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
     test cl, 002h                             ; f6 c1 02
@@ -9203,7 +9197,7 @@ set_enable_a20_:                             ; 0xf6566 LB 0x2c
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf6592 LB 0x89
+set_e820_range_:                             ; 0xf65c2 LB 0x89
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9232,10 +9226,10 @@ set_e820_range_:                             ; 0xf6592 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  01fh, 069h, 058h, 066h, 06bh, 066h, 000h, 067h, 006h, 067h, 00bh, 067h, 010h, 067h, 0b2h, 067h
-    db  0dch, 067h, 0f9h, 066h, 0f9h, 066h, 0a9h, 068h, 0d1h, 068h, 0e4h, 068h, 0f3h, 068h, 000h, 067h
-    db  0fah, 068h
-_int15_function:                             ; 0xf661b LB 0x336
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9243,15 +9237,15 @@ _int15_function:                             ; 0xf661b LB 0x336
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, 008h                              ; c1 e8 08
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe near 0691fh                          ; 0f 87 f2 02
+    jnbe near 0694fh                          ; 0f 87 f2 02
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00011h                ; b9 11 00
-    mov di, 065e9h                            ; bf e9 65
+    mov di, 06619h                            ; bf 19 66
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+065f9h]               ; 2e 8b b5 f9 65
+    mov si, word [cs:di+06629h]               ; 2e 8b b5 29 66
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     mov cx, word [bp+018h]                    ; 8b 4e 18
@@ -9264,30 +9258,30 @@ _int15_function:                             ; 0xf661b LB 0x336
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    jne near 0691fh                           ; 0f 85 bb 02
+    jne near 0694fh                           ; 0f 85 bb 02
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 068c8h                           ; e9 5d 02
+    jmp near 068f8h                           ; e9 5d 02
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06680h                           ; 72 0e
-    jbe short 06694h                          ; 76 20
+    jc short 066b0h                           ; 72 0e
+    jbe short 066c4h                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 066c1h                           ; 74 48
+    je short 066f1h                           ; 74 48
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 066a4h                           ; 74 26
-    jmp short 066ceh                          ; eb 4e
+    je short 066d4h                           ; 74 26
+    jmp short 066feh                          ; eb 4e
     test ax, ax                               ; 85 c0
-    jne short 066ceh                          ; 75 4a
+    jne short 066feh                          ; 75 4a
     xor ax, ax                                ; 31 c0
-    call 06566h                               ; e8 dd fe
+    call 06596h                               ; e8 dd fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 066f9h                           ; e9 65 00
+    jmp near 06729h                           ; e9 65 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 06566h                               ; e8 cc fe
+    call 06596h                               ; e8 cc fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 066f9h                           ; e9 55 00
+    jmp near 06729h                           ; e9 55 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9299,21 +9293,21 @@ _int15_function:                             ; 0xf661b 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 066f9h                           ; e9 38 00
+    jmp near 06729h                           ; 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 066f9h                           ; e9 2b 00
+    jmp near 06729h                           ; 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 c0 b2
+    call 01999h                               ; e8 90 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 f3 b2
+    call 019dah                               ; e8 c3 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
@@ -9326,38 +9320,38 @@ _int15_function:                             ; 0xf661b LB 0x336
     pop bp                                    ; 5d
     retn                                      ; c3
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 067ach                           ; e9 a6 00
+    jmp near 067dch                           ; e9 a6 00
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 066f9h                          ; eb ee
+    jmp short 06729h                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 066f6h                          ; eb e6
+    jmp short 06726h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 06782h                          ; 75 6c
+    jne short 067b2h                          ; 75 6c
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 99 af
+    call 016b8h                               ; e8 69 af
     test AL, strict byte 001h                 ; a8 01
-    jne near 068bfh                           ; 0f 85 9a 01
+    jne near 068efh                           ; 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 95 af
+    call 016c6h                               ; e8 65 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 a5 af
+    call 016e2h                               ; e8 75 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 99 af
+    call 016e2h                               ; e8 69 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 8d af
+    call 016e2h                               ; e8 5d 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 81 af
+    call 016e2h                               ; e8 51 af
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9366,23 +9360,23 @@ _int15_function:                             ; 0xf661b LB 0x336
     and AL, strict byte 0feh                  ; 24 fe
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 a0 af
+    call 01714h                               ; e8 70 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 b2 af
-    jmp near 066f9h                           ; e9 77 ff
+    call 01731h                               ; e8 82 af
+    jmp near 06729h                           ; e9 77 ff
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 067a0h                          ; 75 19
+    jne short 067d0h                          ; 75 19
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016c6h                               ; e8 34 af
+    call 016c6h                               ; e8 04 af
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 78 af
+    call 01714h                               ; e8 48 af
     and AL, strict byte 0bfh                  ; 24 bf
-    jmp short 06776h                          ; eb d6
+    jmp short 067a6h                          ; eb d6
     mov word [bp+018h], bx                    ; 89 5e 18
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
@@ -9390,49 +9384,49 @@ _int15_function:                             ; 0xf661b LB 0x336
     dec ax                                    ; 48
     or dx, ax                                 ; 09 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp near 066f9h                           ; e9 47 ff
+    jmp near 06729h                           ; e9 47 ff
     mov ax, strict word 00031h                ; b8 31 00
-    call 01714h                               ; e8 5c af
+    call 01714h                               ; e8 2c af
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     mov ax, strict word 00030h                ; b8 30 00
-    call 01714h                               ; e8 50 af
+    call 01714h                               ; e8 20 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 067d5h                          ; 76 05
+    jbe short 06805h                          ; 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 066f9h                           ; e9 1d ff
+    jmp near 06729h                           ; e9 1d ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 06566h                               ; e8 83 fd
+    call 06596h                               ; 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 f0 ae
+    call 016e2h                               ; e8 c0 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 e2 ae
+    call 016e2h                               ; e8 b2 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 b7 ae
+    call 016c6h                               ; e8 87 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 a8 ae
+    call 016c6h                               ; e8 78 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 b6 ae
+    call 016e2h                               ; e8 86 ae
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
     out DX, AL                                ; ee
@@ -9462,7 +9456,7 @@ _int15_function:                             ; 0xf661b LB 0x336
     mov dx, 000a1h                            ; ba a1 00
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 0686dh                               ; e8 00 00
+    call 0689dh                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00038h                   ; 6a 38
@@ -9490,67 +9484,68 @@ _int15_function:                             ; 0xf661b LB 0x336
     push ax                                   ; 50
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 066f9h                           ; e9 50 fe
+    jmp near 06729h                           ; 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 e5 b0
+    call 01999h                               ; e8 b5 b0
     push 0086eh                               ; 68 6e 08
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 1e b1
+    call 019dah                               ; e8 ee 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 066f9h                           ; e9 28 fe
+    jmp near 06729h                           ; 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 066f9h                           ; e9 15 fe
+    jmp near 06729h                           ; e9 15 fe
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 e7 ad
+    call 016d4h                               ; e8 b7 ad
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 067d5h                           ; e9 e2 fe
+    jmp near 06805h                           ; e9 e2 fe
     push 0089dh                               ; 68 9d 08
     push strict byte 00008h                   ; 6a 08
-    jmp short 068b9h                          ; eb bf
+    jmp short 068e9h                          ; eb bf
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 0691fh                          ; 75 1f
+    jne short 0694fh                          ; 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 06918h                           ; 72 0b
+    jc short 06948h                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 06918h                         ; 77 06
+    jnbe short 06948h                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 066f9h                           ; e9 e1 fd
+    jmp near 06729h                           ; e9 e1 fd
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 066f9h                           ; e9 da fd
+    jmp near 06729h                           ; 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 6f b0
+    call 01999h                               ; e8 3f 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 a2 b0
+    call 019dah                               ; e8 72 b0
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp short 068bfh                          ; eb 82
-    retf 0ec6ah                               ; ca 6a ec
-    push strict byte 0000fh                   ; 6a 0f
-    imul si, word [bx+di], strict byte 0006bh ; 6b 31 6b
-    push cx                                   ; 51
-    imul si, word [bx+si+06bh], strict byte 0ff94h ; 6b 70 6b 94
-    imul di, word [bx+si-00895h], strict byte 0006bh ; 6b b8 6b f7 6b
-    db  023h
+    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
     insb                                      ; 6c
-_int15_function32:                           ; 0xf6951 LB 0x396
+_int15_function32:                           ; 0xf6981 LB 0x396
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9562,32 +9557,32 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov dx, word [bp+020h]                    ; 8b 56 20
     xor dh, dh                                ; 30 f6
     cmp ax, 000e8h                            ; 3d e8 00
-    je near 069eeh                            ; 0f 84 7e 00
+    je near 06a1eh                            ; 0f 84 7e 00
     cmp ax, 000d0h                            ; 3d d0 00
-    je short 06989h                           ; 74 14
+    je short 069b9h                           ; 74 14
     cmp ax, 00086h                            ; 3d 86 00
-    jne near 06cb7h                           ; 0f 85 3b 03
+    jne near 06ce7h                           ; 0f 85 3b 03
     sti                                       ; fb
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 06523h                               ; e8 9d fb
-    jmp near 06ce1h                           ; e9 58 03
+    call 06553h                               ; e8 9d fb
+    jmp near 06d11h                           ; e9 58 03
     cmp dx, strict byte 0004fh                ; 83 fa 4f
-    jne near 06cb7h                           ; 0f 85 27 03
+    jne near 06ce7h                           ; 0f 85 27 03
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne near 06cb7h                           ; 0f 85 1e 03
+    jne near 06ce7h                           ; 0f 85 1e 03
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne near 06cb7h                           ; 0f 85 15 03
+    jne near 06ce7h                           ; 0f 85 15 03
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne near 06cb7h                           ; 0f 85 0c 03
+    jne near 06ce7h                           ; 0f 85 0c 03
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne near 06cb7h                           ; 0f 85 03 03
+    jne near 06ce7h                           ; 0f 85 03 03
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne near 06cb7h                           ; 0f 85 f9 02
+    jne near 06ce7h                           ; 0f 85 f9 02
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    jne near 06cb7h                           ; 0f 85 ef 02
+    jne near 06ce7h                           ; 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
@@ -9598,26 +9593,26 @@ _int15_function32:                           ; 0xf6951 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 06ce1h                           ; e9 f3 02
+    jmp near 06d11h                           ; e9 f3 02
     cmp dx, strict byte 00020h                ; 83 fa 20
-    je short 069fdh                           ; 74 0a
+    je short 06a2dh                           ; 74 0a
     cmp dx, strict byte 00001h                ; 83 fa 01
-    je near 06c6ah                            ; 0f 84 70 02
-    jmp near 06cb7h                           ; e9 ba 02
+    je near 06c9ah                            ; 0f 84 70 02
+    jmp near 06ce7h                           ; e9 ba 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne near 06cb7h                           ; 0f 85 b1 02
+    jne near 06ce7h                           ; 0f 85 b1 02
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne near 06cb7h                           ; 0f 85 a8 02
+    jne near 06ce7h                           ; 0f 85 a8 02
     mov ax, strict word 00035h                ; b8 35 00
-    call 01714h                               ; e8 ff ac
+    call 01714h                               ; e8 cf 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 06a1dh                               ; e2 fa
+    loop 06a4dh                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 01714h                               ; e8 eb ac
+    call 01714h                               ; e8 bb ac
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
     or dx, ax                                 ; 09 c2
@@ -9625,30 +9620,30 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     add bx, bx                                ; 01 db
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 06a43h                           ; 72 06
-    jne short 06a70h                          ; 75 31
+    jc short 06a73h                           ; 72 06
+    jne short 06aa0h                          ; 75 31
     test bx, bx                               ; 85 db
-    jnbe short 06a70h                         ; 77 2d
+    jnbe short 06aa0h                         ; 77 2d
     mov ax, strict word 00031h                ; b8 31 00
-    call 01714h                               ; e8 cb ac
+    call 01714h                               ; e8 9b 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 06a51h                               ; e2 fa
+    loop 06a81h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 01714h                               ; e8 b7 ac
+    call 01714h                               ; e8 87 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 06a64h                               ; e2 fa
+    loop 06a94h                               ; 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 9e ac
+    call 01714h                               ; e8 6e ac
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
     xor al, al                                ; 30 c0
@@ -9656,28 +9651,28 @@ _int15_function32:                           ; 0xf6951 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 06a83h                               ; e2 f8
+    loop 06ab3h                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 01714h                               ; e8 83 ac
+    call 01714h                               ; e8 53 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 6d ac
+    call 01714h                               ; e8 3d 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 06cb7h                          ; 0f 87 00 02
+    jnbe near 06ce7h                          ; 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+0693dh]                   ; 2e ff a4 3d 69
+    jmp word [cs:si+0696dh]                   ; 2e ff a4 6d 69
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
     push strict byte 00009h                   ; 6a 09
@@ -9686,9 +9681,9 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 06592h                               ; e8 b1 fa
+    call 065c2h                               ; e8 b1 fa
     mov dword [bp+014h], strict dword 000000001h ; 66 c7 46 14 01 00 00 00
-    jmp near 06c54h                           ; e9 68 01
+    jmp near 06c84h                           ; e9 68 01
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push strict byte 0000ah                   ; 6a 0a
@@ -9697,9 +9692,9 @@ _int15_function32:                           ; 0xf6951 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 06592h                               ; e8 8e fa
+    call 065c2h                               ; e8 8e fa
     mov dword [bp+014h], strict dword 000000002h ; 66 c7 46 14 02 00 00 00
-    jmp near 06c54h                           ; e9 45 01
+    jmp near 06c84h                           ; e9 45 01
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push strict byte 00010h                   ; 6a 10
@@ -9708,9 +9703,9 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 06592h                               ; e8 6c fa
+    call 065c2h                               ; e8 6c fa
     mov dword [bp+014h], strict dword 000000003h ; 66 c7 46 14 03 00 00 00
-    jmp near 06c54h                           ; e9 23 01
+    jmp near 06c84h                           ; e9 23 01
     push strict byte 00001h                   ; 6a 01
     push dword 000000000h                     ; 66 6a 00
     push cx                                   ; 51
@@ -9719,9 +9714,9 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 06592h                               ; e8 4c fa
+    call 065c2h                               ; e8 4c fa
     mov dword [bp+014h], strict dword 000000004h ; 66 c7 46 14 04 00 00 00
-    jmp near 06c54h                           ; e9 03 01
+    jmp near 06c84h                           ; e9 03 01
     push strict byte 00003h                   ; 6a 03
     push dword 000000000h                     ; 66 6a 00
     push dx                                   ; 52
@@ -9730,9 +9725,9 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov si, word [bp+024h]                    ; 8b 76 24
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 06592h                               ; e8 2d fa
+    call 065c2h                               ; e8 2d fa
     mov dword [bp+014h], strict dword 000000005h ; 66 c7 46 14 05 00 00 00
-    jmp near 06c54h                           ; e9 e4 00
+    jmp near 06c84h                           ; e9 e4 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push 0fec0h                               ; 68 c0 fe
@@ -9741,9 +9736,9 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fec0h                            ; b9 c0 fe
-    call 06592h                               ; e8 09 fa
+    call 065c2h                               ; e8 09 fa
     mov dword [bp+014h], strict dword 000000006h ; 66 c7 46 14 06 00 00 00
-    jmp near 06c54h                           ; e9 c0 00
+    jmp near 06c84h                           ; e9 c0 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push 0fee0h                               ; 68 e0 fe
@@ -9752,9 +9747,9 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fee0h                            ; b9 e0 fe
-    call 06592h                               ; e8 e5 f9
+    call 065c2h                               ; e8 e5 f9
     mov dword [bp+014h], strict dword 000000007h ; 66 c7 46 14 07 00 00 00
-    jmp near 06c54h                           ; e9 9c 00
+    jmp near 06c84h                           ; e9 9c 00
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push dword 000000000h                     ; 66 6a 00
@@ -9762,19 +9757,19 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 06592h                               ; e8 c4 f9
+    call 065c2h                               ; e8 c4 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06bdbh                          ; 75 07
+    jne short 06c0bh                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06befh                           ; 74 14
+    je short 06c1fh                           ; 74 14
     mov dword [bp+014h], strict dword 000000009h ; 66 c7 46 14 09 00 00 00
-    jmp short 06c54h                          ; eb 6f
+    jmp short 06c84h                          ; eb 6f
     mov dword [bp+014h], strict dword 000000008h ; 66 c7 46 14 08 00 00 00
-    jmp short 06c54h                          ; eb 65
+    jmp short 06c84h                          ; eb 65
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06c54h                          ; eb 5d
+    jmp short 06c84h                          ; eb 5d
     push strict byte 00002h                   ; 6a 02
     push dword 000000000h                     ; 66 6a 00
     push dword 000000000h                     ; 66 6a 00
@@ -9782,20 +9777,20 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 06592h                               ; e8 86 f9
+    call 065c2h                               ; e8 86 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c19h                          ; 75 07
+    jne short 06c49h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06c1bh                           ; 74 02
-    jmp short 06bdbh                          ; eb c0
+    je short 06c4bh                           ; 74 02
+    jmp short 06c0bh                          ; eb c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06c54h                          ; eb 31
+    jmp short 06c84h                          ; eb 31
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06c2fh                          ; 75 06
+    jne short 06c5fh                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 06c54h                           ; 74 25
+    je short 06c84h                           ; 74 25
     push strict byte 00001h                   ; 6a 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
     db  0feh, 0c0h
@@ -9808,51 +9803,51 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 06592h                               ; e8 46 f9
+    call 065c2h                               ; 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 06ce1h                          ; eb 77
+    jmp short 06d11h                          ; eb 77
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 01714h                               ; e8 a1 aa
+    call 01714h                               ; e8 71 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 94 aa
+    call 01714h                               ; e8 64 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 06c92h                          ; 76 05
+    jbe short 06cc2h                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 01714h                               ; e8 7c aa
+    call 01714h                               ; e8 4c 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 6f aa
+    call 01714h                               ; e8 3f 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 06ce1h                          ; eb 2a
+    jmp short 06d11h                          ; eb 2a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 d7 ac
+    call 01999h                               ; e8 a7 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 0a ad
+    call 019dah                               ; e8 da 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
@@ -9863,7 +9858,7 @@ _int15_function32:                           ; 0xf6951 LB 0x396
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int15_blkmove:                              ; 0xf6ce7 LB 0x1ab
+_int15_blkmove:                              ; 0xf6d17 LB 0x1ab
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9872,7 +9867,7 @@ _int15_blkmove:                              ; 0xf6ce7 LB 0x1ab
     push ax                                   ; 50
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 06566h                               ; e8 71 f8
+    call 06596h                               ; e8 71 f8
     mov di, ax                                ; 89 c7
     mov ax, word [bp+006h]                    ; 8b 46 06
     sal ax, 004h                              ; c1 e0 04
@@ -9882,7 +9877,7 @@ _int15_blkmove:                              ; 0xf6ce7 LB 0x1ab
     shr dx, 00ch                              ; c1 ea 0c
     mov byte [bp-006h], dl                    ; 88 56 fa
     cmp cx, ax                                ; 39 c1
-    jnc short 06d14h                          ; 73 05
+    jnc short 06d44h                          ; 73 05
     db  0feh, 0c2h
     ; inc dl                                    ; fe c2
     mov byte [bp-006h], dl                    ; 88 56 fa
@@ -9890,52 +9885,52 @@ _int15_blkmove:                              ; 0xf6ce7 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 bf a9
+    call 016e2h                               ; e8 8f 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 b1 a9
+    call 016e2h                               ; e8 81 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 85 a9
+    call 016c6h                               ; e8 55 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 76 a9
+    call 016c6h                               ; e8 46 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 84 a9
+    call 016e2h                               ; e8 54 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 75 a9
+    call 016e2h                               ; e8 45 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 67 a9
+    call 016e2h                               ; e8 37 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 3c a9
+    call 016c6h                               ; e8 0c 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 2d a9
+    call 016c6h                               ; e8 fd 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 3b a9
+    call 016e2h                               ; e8 0b a9
     mov ax, ss                                ; 8c d0
     mov cx, ax                                ; 89 c1
     sal cx, 004h                              ; c1 e1 04
@@ -9945,27 +9940,27 @@ _int15_blkmove:                              ; 0xf6ce7 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 1f a9
+    call 016e2h                               ; e8 ef 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 11 a9
+    call 016e2h                               ; e8 e1 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 e5 a8
+    call 016c6h                               ; e8 b5 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 d6 a8
+    call 016c6h                               ; e8 a6 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 e4 a8
+    call 016e2h                               ; e8 b4 a8
     lea ax, [bp+004h]                         ; 8d 46 04
     mov si, word [bp+00ah]                    ; 8b 76 0a
     mov es, [bp+006h]                         ; 8e 46 06
@@ -9977,7 +9972,7 @@ _int15_blkmove:                              ; 0xf6ce7 LB 0x1ab
     mov ds, ax                                ; 8e d8
     mov word [00467h], sp                     ; 89 26 67 04
     mov [00469h], ss                          ; 8c 16 69 04
-    call 06e1dh                               ; e8 00 00
+    call 06e4dh                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 0001bh                ; 83 c7 1b
     push strict byte 00020h                   ; 6a 20
@@ -10000,7 +9995,7 @@ _int15_blkmove:                              ; 0xf6ce7 LB 0x1ab
     ; xor di, di                                ; 33 ff
     cld                                       ; fc
     rep movsw                                 ; f3 a5
-    call 06e51h                               ; e8 00 00
+    call 06e81h                               ; e8 00 00
     pop ax                                    ; 58
     push 0f000h                               ; 68 00 f0
     add ax, strict byte 00018h                ; 83 c0 18
@@ -10021,7 +10016,7 @@ _int15_blkmove:                              ; 0xf6ce7 LB 0x1ab
     pop eax                                   ; 66 58
     pop DS                                    ; 1f
     mov ax, di                                ; 89 f8
-    call 06566h                               ; e8 e4 f6
+    call 06596h                               ; e8 e4 f6
     sti                                       ; fb
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
@@ -10030,7 +10025,7 @@ _int15_blkmove:                              ; 0xf6ce7 LB 0x1ab
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_inv_op_handler:                             ; 0xf6e92 LB 0x195
+_inv_op_handler:                             ; 0xf6ec2 LB 0x195
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10039,11 +10034,11 @@ _inv_op_handler:                             ; 0xf6e92 LB 0x195
     push ax                                   ; 50
     les bx, [bp+018h]                         ; c4 5e 18
     cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
-    jne short 06ea8h                          ; 75 06
+    jne short 06ed8h                          ; 75 06
     inc word [bp+018h]                        ; ff 46 18
-    jmp near 07020h                           ; e9 78 01
+    jmp near 07050h                           ; e9 78 01
     cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
-    jne near 0701ch                           ; 0f 85 6b 01
+    jne near 0704ch                           ; 0f 85 6b 01
     mov si, 00800h                            ; be 00 08
     xor ax, ax                                ; 31 c0
     mov word [bp-006h], ax                    ; 89 46 fa
@@ -10071,11 +10066,11 @@ _inv_op_handler:                             ; 0xf6e92 LB 0x195
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f01h                               ; e2 fa
+    loop 06f31h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f0fh                          ; 75 04
+    jne short 06f3fh                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f14h                           ; 74 05
+    je short 06f44h                           ; 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
@@ -10085,11 +10080,11 @@ _inv_op_handler:                             ; 0xf6e92 LB 0x195
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f29h                               ; e2 fa
+    loop 06f59h                               ; e2 fa
     cmp di, dx                                ; 39 d7
-    jne short 06f37h                          ; 75 04
+    jne short 06f67h                          ; 75 04
     cmp bx, ax                                ; 39 c3
-    je short 06f3bh                           ; 74 04
+    je short 06f6bh                           ; 74 04
     or byte [bp-008h], 002h                   ; 80 4e f8 02
     push strict byte 00000h                   ; 6a 00
     push 00800h                               ; 68 00 08
@@ -10139,10 +10134,10 @@ _inv_op_handler:                             ; 0xf6e92 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 06fd9h                            ; 0f 84 02 00
+    je near 07009h                            ; 0f 84 02 00
     mov es, ax                                ; 8e c0
     test cx, strict word 00002h               ; f7 c1 02 00
-    je near 07001h                            ; 0f 84 20 00
+    je near 07031h                            ; 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
@@ -10159,141 +10154,141 @@ _inv_op_handler:                             ; 0xf6e92 LB 0x195
     sub sp, strict byte 00006h                ; 83 ec 06
     mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
     iret                                      ; cf
-    jmp short 07020h                          ; eb 04
+    jmp short 07050h                          ; eb 04
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 0701dh                          ; eb fd
+    jmp short 0704dh                          ; eb fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf7027 LB 0x28
+init_rtc_:                                   ; 0xf7057 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 fd a6
+    call 01731h                               ; e8 cd a6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01731h                               ; e8 f4 a6
+    call 01731h                               ; e8 c4 a6
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 01714h                               ; e8 d1 a6
+    call 01714h                               ; e8 a1 a6
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 01714h                               ; e8 cb a6
+    call 01714h                               ; e8 9b a6
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf704f LB 0x21
+rtc_updating_:                               ; 0xf707f LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 07067h                           ; 74 0e
+    je short 07097h                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 01714h                               ; e8 b5 a6
+    call 01714h                               ; e8 85 a6
     test AL, strict byte 080h                 ; a8 80
-    jne short 07056h                          ; 75 f3
+    jne short 07086h                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 0706ah                          ; eb 03
+    jmp short 0709ah                          ; 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:                             ; 0xf7070 LB 0xbe
+_int70_function:                             ; 0xf70a0 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 99 a6
+    call 01714h                               ; e8 69 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 8e a6
+    call 01714h                               ; e8 5e a6
     mov dh, al                                ; 88 c6
     test dl, 060h                             ; f6 c2 60
-    je near 07115h                            ; 0f 84 86 00
+    je near 07145h                            ; 0f 84 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 07097h                           ; 74 04
+    je short 070c7h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dh, 040h                             ; f6 c6 40
-    je near 07115h                            ; 0f 84 77 00
+    je near 07145h                            ; 0f 84 77 00
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016b8h                               ; e8 11 a6
+    call 016b8h                               ; e8 e1 a5
     test al, al                               ; 84 c0
-    je short 07115h                           ; 74 6a
+    je short 07145h                           ; 74 6a
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016f0h                               ; e8 3c a6
+    call 016f0h                               ; e8 0c a6
     test dx, dx                               ; 85 d2
-    jne short 07101h                          ; 75 49
+    jne short 07131h                          ; 75 49
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 07101h                          ; 73 44
+    jnc short 07131h                          ; 73 44
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 0e a6
+    call 016d4h                               ; e8 de a5
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 03 a6
+    call 016d4h                               ; e8 d3 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 e8 a5
+    call 016c6h                               ; e8 b8 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 45 a6
+    call 01731h                               ; e8 15 a6
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 016b8h                               ; e8 c5 a5
+    call 016b8h                               ; e8 95 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 c7 a5
-    jmp short 07115h                          ; eb 14
+    call 016c6h                               ; e8 97 a5
+    jmp short 07145h                          ; 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 ed a5
-    call 0e030h                               ; e8 18 6f
+    call 01702h                               ; e8 bd a5
+    call 0e030h                               ; e8 e8 6e
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    inc bp                                    ; 45
-    jno short 0718fh                          ; 71 6e
-    jno short 070b6h                          ; 71 93
-    jno short 070eah                          ; 71 c5
-    jno short 0713bh                          ; 71 14
-    jc short 07175h                           ; 72 4c
-    jc short 070bah                           ; 72 8f
-    jc short 07113h                           ; 72 e6
-    db  072h
-_int1a_function:                             ; 0xf712e LB 0x1c8
+    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
+    db  073h
+_int1a_function:                             ; 0xf715e 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 0716ah                          ; 0f 87 2f 00
+    jnbe near 0719ah                          ; 0f 87 2f 00
     movzx bx, al                              ; 0f b6 d8
     add bx, bx                                ; 01 db
-    jmp word [cs:bx+0711eh]                   ; 2e ff a7 1e 71
+    jmp word [cs:bx+0714eh]                   ; 2e ff a7 4e 71
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10324,41 +10319,41 @@ _int1a_function:                             ; 0xf712e LB 0x1c8
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 0716ah                          ; eb d7
-    call 0704fh                               ; e8 b9 fe
+    jmp short 0719ah                          ; eb d7
+    call 0707fh                               ; e8 b9 fe
     test ax, ax                               ; 85 c0
-    je short 0719ch                           ; 74 02
-    jmp short 0716ah                          ; eb ce
+    je short 071cch                           ; 74 02
+    jmp short 0719ah                          ; eb ce
     xor ax, ax                                ; 31 c0
-    call 01714h                               ; e8 73 a5
+    call 01714h                               ; e8 43 a5
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 01714h                               ; e8 6a a5
+    call 01714h                               ; e8 3a a5
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 01714h                               ; e8 61 a5
+    call 01714h                               ; e8 31 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 56 a5
+    call 01714h                               ; e8 26 a5
     and AL, strict byte 001h                  ; 24 01
     mov byte [bp+00eh], al                    ; 88 46 0e
-    jmp short 0720ah                          ; eb 45
-    call 0704fh                               ; e8 87 fe
+    jmp short 0723ah                          ; eb 45
+    call 0707fh                               ; e8 87 fe
     test ax, ax                               ; 85 c0
-    je short 071cfh                           ; 74 03
-    call 07027h                               ; e8 58 fe
+    je short 071ffh                           ; 74 03
+    call 07057h                               ; e8 58 fe
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     xor ax, ax                                ; 31 c0
-    call 01731h                               ; e8 59 a5
+    call 01731h                               ; e8 29 a5
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00002h                ; b8 02 00
-    call 01731h                               ; e8 4f a5
+    call 01731h                               ; e8 1f a5
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00004h                ; b8 04 00
-    call 01731h                               ; e8 45 a5
+    call 01731h                               ; e8 15 a5
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 22 a5
+    call 01714h                               ; e8 f2 a4
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
     or bl, 002h                               ; 80 cb 02
@@ -10367,71 +10362,71 @@ _int1a_function:                             ; 0xf712e LB 0x1c8
     or bl, al                                 ; 08 c3
     movzx dx, bl                              ; 0f b6 d3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01731h                               ; e8 27 a5
+    call 01731h                               ; e8 f7 a4
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp near 0716ah                           ; e9 56 ff
+    jmp near 0719ah                           ; e9 56 ff
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 0704fh                               ; e8 34 fe
+    call 0707fh                               ; e8 34 fe
     test ax, ax                               ; 85 c0
-    je short 07222h                           ; 74 03
-    jmp near 0716ah                           ; e9 48 ff
+    je short 07252h                           ; 74 03
+    jmp near 0719ah                           ; e9 48 ff
     mov ax, strict word 00009h                ; b8 09 00
-    call 01714h                               ; e8 ec a4
+    call 01714h                               ; e8 bc a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 01714h                               ; e8 e3 a4
+    call 01714h                               ; e8 b3 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 01714h                               ; e8 da a4
+    call 01714h                               ; e8 aa a4
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 01714h                               ; e8 d1 a4
+    call 01714h                               ; e8 a1 a4
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 0716ah                           ; e9 1e ff
-    call 0704fh                               ; e8 00 fe
+    jmp near 0719ah                           ; e9 1e ff
+    call 0707fh                               ; e8 00 fe
     test ax, ax                               ; 85 c0
-    je short 07259h                           ; 74 06
-    call 07027h                               ; e8 d1 fd
-    jmp near 0716ah                           ; e9 11 ff
+    je short 07289h                           ; 74 06
+    call 07057h                               ; e8 d1 fd
+    jmp near 0719ah                           ; e9 11 ff
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00009h                ; b8 09 00
-    call 01731h                               ; e8 ce a4
+    call 01731h                               ; e8 9e a4
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00008h                ; b8 08 00
-    call 01731h                               ; e8 c4 a4
+    call 01731h                               ; e8 94 a4
     movzx dx, byte [bp+00eh]                  ; 0f b6 56 0e
     mov ax, strict word 00007h                ; b8 07 00
-    call 01731h                               ; e8 ba a4
+    call 01731h                               ; e8 8a a4
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00032h                ; b8 32 00
-    call 01731h                               ; e8 b0 a4
+    call 01731h                               ; e8 80 a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 8d a4
+    call 01714h                               ; e8 5d a4
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 07201h                           ; e9 72 ff
+    jmp near 07231h                           ; e9 72 ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 7f a4
+    call 01714h                               ; e8 4f 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 072a3h                           ; 74 03
-    jmp near 0716ah                           ; e9 c7 fe
-    call 0704fh                               ; e8 a9 fd
+    je short 072d3h                           ; 74 03
+    jmp near 0719ah                           ; e9 c7 fe
+    call 0707fh                               ; e8 a9 fd
     test ax, ax                               ; 85 c0
-    je short 072adh                           ; 74 03
-    call 07027h                               ; e8 7a fd
+    je short 072ddh                           ; 74 03
+    call 07057h                               ; e8 7a fd
     movzx dx, byte [bp+00fh]                  ; 0f b6 56 0f
     mov ax, strict word 00001h                ; b8 01 00
-    call 01731h                               ; e8 7a a4
+    call 01731h                               ; e8 4a a4
     movzx dx, byte [bp+010h]                  ; 0f b6 56 10
     mov ax, strict word 00003h                ; b8 03 00
-    call 01731h                               ; e8 70 a4
+    call 01731h                               ; e8 40 a4
     movzx dx, byte [bp+011h]                  ; 0f b6 56 11
     mov ax, strict word 00005h                ; b8 05 00
-    call 01731h                               ; e8 66 a4
+    call 01731h                               ; e8 36 a4
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10443,15 +10438,15 @@ _int1a_function:                             ; 0xf712e 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 4e a4
-    jmp near 0716ah                           ; e9 84 fe
+    call 01731h                               ; e8 1e a4
+    jmp near 0719ah                           ; e9 84 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 01714h                               ; e8 28 a4
+    call 01714h                               ; e8 f8 a3
     mov bl, al                                ; 88 c3
     and AL, strict byte 057h                  ; 24 57
     movzx dx, al                              ; 0f b6 d0
-    jmp near 07204h                           ; e9 0e ff
-send_to_mouse_ctrl_:                         ; 0xf72f6 LB 0x34
+    jmp near 07234h                           ; e9 0e ff
+send_to_mouse_ctrl_:                         ; 0xf7326 LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10462,11 +10457,11 @@ send_to_mouse_ctrl_:                         ; 0xf72f6 LB 0x34
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 07315h                           ; 74 0e
+    je short 07345h                           ; 74 0e
     push 008eeh                               ; 68 ee 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 c8 a6
+    call 019dah                               ; e8 98 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
     mov dx, strict word 00064h                ; ba 64 00
@@ -10480,7 +10475,7 @@ send_to_mouse_ctrl_:                         ; 0xf72f6 LB 0x34
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf732a LB 0x5c
+get_mouse_data_:                             ; 0xf735a LB 0x5c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10495,9 +10490,9 @@ get_mouse_data_:                             ; 0xf732a 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 0736ch                           ; 74 27
+    je short 0739ch                           ; 74 27
     test cx, cx                               ; 85 c9
-    je short 0736ch                           ; 74 23
+    je short 0739ch                           ; 74 23
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10513,13 +10508,13 @@ get_mouse_data_:                             ; 0xf732a LB 0x5c
     and dl, 010h                              ; 80 e2 10
     movzx ax, byte [bp-006h]                  ; 0f b6 46 fa
     cmp dx, ax                                ; 39 c2
-    je short 07354h                           ; 74 eb
+    je short 07384h                           ; 74 eb
     dec cx                                    ; 49
-    jmp short 07337h                          ; eb cb
+    jmp short 07367h                          ; eb cb
     test cx, cx                               ; 85 c9
-    jne short 07374h                          ; 75 04
+    jne short 073a4h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0737fh                          ; eb 0b
+    jmp short 073afh                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10531,7 +10526,7 @@ get_mouse_data_:                             ; 0xf732a LB 0x5c
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf7386 LB 0x32
+set_kbd_command_byte_:                       ; 0xf73b6 LB 0x32
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10542,11 +10537,11 @@ set_kbd_command_byte_:                       ; 0xf7386 LB 0x32
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 073a5h                           ; 74 0e
+    je short 073d5h                           ; 74 0e
     push 008f8h                               ; 68 f8 08
     push 01168h                               ; 68 68 11
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 38 a6
+    call 019dah                               ; e8 08 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -10559,13 +10554,13 @@ set_kbd_command_byte_:                       ; 0xf7386 LB 0x32
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf73b8 LB 0xca
+_int74_function:                             ; 0xf73e8 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 0d a3
+    call 016d4h                               ; e8 dd 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
@@ -10574,7 +10569,7 @@ _int74_function:                             ; 0xf73b8 LB 0xca
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne near 0746eh                           ; 0f 85 92 00
+    jne near 0749eh                           ; 0f 85 92 00
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10582,14 +10577,14 @@ _int74_function:                             ; 0xf73b8 LB 0xca
     mov bl, al                                ; 88 c3
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 cc a2
+    call 016b8h                               ; e8 9c 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 c1 a2
+    call 016b8h                               ; e8 91 a2
     mov byte [bp-008h], al                    ; 88 46 f8
     test AL, strict byte 080h                 ; a8 80
-    je short 0746eh                           ; 74 70
+    je short 0749eh                           ; 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
@@ -10600,107 +10595,107 @@ _int74_function:                             ; 0xf73b8 LB 0xca
     movzx dx, al                              ; 0f b6 d0
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 016c6h                               ; e8 ab a2
+    call 016c6h                               ; e8 7b a2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp al, byte [bp-002h]                    ; 3a 46 fe
-    jc short 0745fh                           ; 72 3c
+    jc short 0748fh                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 8d a2
+    call 016b8h                               ; e8 5d 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 80 a2
+    call 016b8h                               ; e8 50 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 73 a2
+    call 016b8h                               ; e8 43 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 07462h                           ; 74 0a
+    je short 07492h                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 07462h                          ; eb 03
+    jmp short 07492h                          ; 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 58 a2
+    call 016c6h                               ; e8 28 a2
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  0c6h, 074h, 03ch, 075h
-    ; mov byte [si+03ch], 075h                  ; c6 74 3c 75
-    mov di, 05075h                            ; bf 75 50
-    jbe short 07439h                          ; 76 be
-    jbe short 0748fh                          ; 76 12
-    jne short 07465h                          ; 75 e6
-    jbe short 0742ch                          ; 76 ab
+    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
     db  077h
-_int15_function_mouse:                       ; 0xf7482 LB 0x38b
+_int15_function_mouse:                       ; 0xf74b2 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 42 a2
+    call 016d4h                               ; e8 12 a2
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 074a5h                          ; 76 0b
+    jbe short 074d5h                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 07807h                           ; e9 62 03
+    jmp near 07837h                           ; e9 62 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 07386h                               ; e8 db fe
+    call 073b6h                               ; 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 077eeh                          ; 0f 87 32 03
+    jnbe near 0781eh                          ; 0f 87 32 03
     movzx si, al                              ; 0f b6 f0
     add si, si                                ; 01 f6
-    jmp word [cs:si+07472h]                   ; 2e ff a4 72 74
+    jmp word [cs:si+074a2h]                   ; 2e ff a4 a2 74
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe near 077f9h                          ; 0f 87 2b 03
+    jnbe near 07829h                          ; 0f 87 2b 03
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 e2 a1
+    call 016b8h                               ; e8 b2 a1
     test AL, strict byte 080h                 ; a8 80
-    jne short 074e5h                          ; 75 0b
+    jne short 07515h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 07801h                           ; e9 1c 03
+    jmp near 07831h                           ; 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 072f6h                               ; e8 03 fe
+    call 07326h                               ; e8 03 fe
     test al, al                               ; 84 c0
-    jne near 07787h                           ; 0f 85 8e 02
+    jne near 077b7h                           ; 0f 85 8e 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 29 fe
+    call 0735ah                               ; e8 29 fe
     test al, al                               ; 84 c0
-    je near 07801h                            ; 0f 84 fa 02
+    je near 07831h                            ; 0f 84 fa 02
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    jne near 07787h                           ; 0f 85 78 02
-    jmp near 07801h                           ; e9 ef 02
+    jne near 077b7h                           ; 0f 85 78 02
+    jmp near 07831h                           ; e9 ef 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 0751dh                           ; 72 04
+    jc short 0754dh                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 07520h                          ; 76 03
-    jmp near 076b3h                           ; e9 93 01
+    jbe short 07550h                          ; 76 03
+    jmp near 076e3h                           ; e9 93 01
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 90 a1
+    call 016b8h                               ; e8 60 a1
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
     ; dec ah                                    ; fe cc
@@ -10709,272 +10704,272 @@ _int15_function_mouse:                       ; 0xf7482 LB 0x38b
     movzx bx, al                              ; 0f b6 d8
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016c6h                               ; e8 8a a1
+    call 016c6h                               ; e8 5a a1
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 74 a1
+    call 016b8h                               ; e8 44 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 75 a1
+    call 016c6h                               ; e8 45 a1
     mov ax, 000ffh                            ; b8 ff 00
-    call 072f6h                               ; e8 9f fd
+    call 07326h                               ; e8 9f fd
     test al, al                               ; 84 c0
-    jne near 07787h                           ; 0f 85 2a 02
+    jne near 077b7h                           ; 0f 85 2a 02
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0732ah                               ; e8 c5 fd
+    call 0735ah                               ; e8 c5 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-004h], 0feh                  ; 80 7e fc fe
-    jne short 07578h                          ; 75 0b
+    jne short 075a8h                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp near 07801h                           ; e9 89 02
+    jmp near 07831h                           ; e9 89 02
     cmp byte [bp-004h], 0fah                  ; 80 7e fc fa
-    je short 0758eh                           ; 74 10
+    je short 075beh                           ; 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 4f a4
+    call 019dah                               ; e8 1f a4
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne near 07787h                           ; 0f 85 f3 01
+    jne near 077b7h                           ; 0f 85 f3 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 8e fd
+    call 0735ah                               ; e8 8e fd
     test al, al                               ; 84 c0
-    jne near 07787h                           ; 0f 85 e5 01
+    jne near 077b7h                           ; 0f 85 e5 01
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0732ah                               ; e8 80 fd
+    call 0735ah                               ; e8 80 fd
     test al, al                               ; 84 c0
-    jne near 07787h                           ; 0f 85 d7 01
+    jne near 077b7h                           ; 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 07801h                           ; e9 42 02
+    jmp near 07831h                           ; e9 42 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 075d6h                           ; 72 10
-    jbe short 075f4h                          ; 76 2c
+    jc short 07606h                           ; 72 10
+    jbe short 07624h                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 07606h                           ; 74 3a
+    je short 07636h                           ; 74 3a
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 07600h                           ; 74 30
+    je short 07630h                           ; 74 30
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 075fah                           ; 74 26
-    jmp short 0760ch                          ; eb 36
+    je short 0762ah                           ; 74 26
+    jmp short 0763ch                          ; eb 36
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 075eeh                           ; 74 14
+    je short 0761eh                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 075e8h                           ; 74 0a
+    je short 07618h                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 0760ch                          ; 75 2a
+    jne short 0763ch                          ; 75 2a
     mov byte [bp-008h], 00ah                  ; c6 46 f8 0a
-    jmp short 07610h                          ; eb 28
+    jmp short 07640h                          ; eb 28
     mov byte [bp-008h], 014h                  ; c6 46 f8 14
-    jmp short 07610h                          ; eb 22
+    jmp short 07640h                          ; eb 22
     mov byte [bp-008h], 028h                  ; c6 46 f8 28
-    jmp short 07610h                          ; eb 1c
+    jmp short 07640h                          ; eb 1c
     mov byte [bp-008h], 03ch                  ; c6 46 f8 3c
-    jmp short 07610h                          ; eb 16
+    jmp short 07640h                          ; eb 16
     mov byte [bp-008h], 050h                  ; c6 46 f8 50
-    jmp short 07610h                          ; eb 10
+    jmp short 07640h                          ; eb 10
     mov byte [bp-008h], 064h                  ; c6 46 f8 64
-    jmp short 07610h                          ; eb 0a
+    jmp short 07640h                          ; eb 0a
     mov byte [bp-008h], 0c8h                  ; c6 46 f8 c8
-    jmp short 07610h                          ; eb 04
+    jmp short 07640h                          ; eb 04
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jbe short 07645h                          ; 76 2f
+    jbe short 07675h                          ; 76 2f
     mov ax, 000f3h                            ; b8 f3 00
-    call 072f6h                               ; e8 da fc
+    call 07326h                               ; e8 da fc
     test al, al                               ; 84 c0
-    jne short 0763ah                          ; 75 1a
+    jne short 0766ah                          ; 75 1a
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0732ah                               ; e8 02 fd
+    call 0735ah                               ; e8 02 fd
     movzx ax, byte [bp-008h]                  ; 0f b6 46 f8
-    call 072f6h                               ; e8 c7 fc
+    call 07326h                               ; e8 c7 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0732ah                               ; e8 f3 fc
-    jmp near 07801h                           ; e9 c7 01
+    call 0735ah                               ; e8 f3 fc
+    jmp near 07831h                           ; 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 07801h                           ; e9 bc 01
+    jmp near 07831h                           ; 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 07801h                           ; e9 b1 01
+    jmp near 07831h                           ; e9 b1 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 076b3h                          ; 73 5d
+    jnc short 076e3h                          ; 73 5d
     mov ax, 000e8h                            ; b8 e8 00
-    call 072f6h                               ; e8 9a fc
+    call 07326h                               ; e8 9a fc
     test al, al                               ; 84 c0
-    jne short 076a8h                          ; 75 48
+    jne short 076d8h                          ; 75 48
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 c2 fc
+    call 0735ah                               ; e8 c2 fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 0767eh                           ; 74 10
+    je short 076aeh                           ; 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 5f a3
+    call 019dah                               ; e8 2f a3
     add sp, strict byte 00006h                ; 83 c4 06
     movzx ax, byte [bp+00dh]                  ; 0f b6 46 0d
-    call 072f6h                               ; e8 71 fc
+    call 07326h                               ; e8 71 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 9d fc
+    call 0735ah                               ; e8 9d fc
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je near 07801h                            ; 0f 84 6c 01
+    je near 07831h                            ; 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 38 a3
+    call 019dah                               ; e8 08 a3
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07801h                           ; e9 59 01
+    jmp near 07831h                           ; 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 07801h                           ; e9 4e 01
+    jmp near 07831h                           ; 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 07801h                           ; e9 43 01
+    jmp near 07831h                           ; e9 43 01
     mov ax, 000f2h                            ; b8 f2 00
-    call 072f6h                               ; e8 32 fc
+    call 07326h                               ; e8 32 fc
     test al, al                               ; 84 c0
-    jne short 076dbh                          ; 75 13
+    jne short 0770bh                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 5a fc
+    call 0735ah                               ; e8 5a fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0732ah                               ; e8 52 fc
-    jmp near 075b6h                           ; e9 db fe
+    call 0735ah                               ; e8 52 fc
+    jmp near 075e6h                           ; 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 07801h                           ; e9 1b 01
+    jmp near 07831h                           ; e9 1b 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 076f4h                          ; 76 07
+    jbe short 07724h                          ; 76 07
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 0775dh                          ; 76 6c
-    jmp near 07791h                           ; e9 9d 00
+    jbe short 0778dh                          ; 76 6c
+    jmp near 077c1h                           ; e9 9d 00
     mov ax, 000e9h                            ; b8 e9 00
-    call 072f6h                               ; e8 fc fb
+    call 07326h                               ; e8 fc fb
     test al, al                               ; 84 c0
-    jne near 07787h                           ; 0f 85 87 00
+    jne near 077b7h                           ; 0f 85 87 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 22 fc
+    call 0735ah                               ; e8 22 fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 07720h                           ; 74 10
+    je short 07750h                           ; 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 bd a2
+    call 019dah                               ; e8 8d a2
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 07787h                          ; 75 63
+    jne short 077b7h                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 fe fb
+    call 0735ah                               ; e8 fe fb
     test al, al                               ; 84 c0
-    jne short 07787h                          ; 75 57
+    jne short 077b7h                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 0732ah                               ; e8 f2 fb
+    call 0735ah                               ; e8 f2 fb
     test al, al                               ; 84 c0
-    jne short 07787h                          ; 75 4b
+    jne short 077b7h                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 0732ah                               ; e8 e6 fb
+    call 0735ah                               ; e8 e6 fb
     test al, al                               ; 84 c0
-    jne short 07787h                          ; 75 3f
+    jne short 077b7h                          ; 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 07801h                           ; e9 a4 00
+    jmp near 07831h                           ; e9 a4 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 07766h                          ; 75 05
+    jne short 07796h                          ; 75 05
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 07769h                          ; eb 03
+    jmp short 07799h                          ; eb 03
     mov ax, 000e7h                            ; b8 e7 00
-    call 072f6h                               ; e8 8a fb
+    call 07326h                               ; e8 8a fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 07781h                          ; 75 0f
+    jne short 077b1h                          ; 75 0f
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0732ah                               ; e8 b0 fb
+    call 0735ah                               ; 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 07801h                            ; 0f 84 7a 00
+    je near 07831h                            ; 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 07801h                          ; eb 70
+    jmp short 07831h                          ; 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 3c a2
+    call 019dah                               ; e8 0c 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 07801h                          ; eb 56
+    jmp short 07831h                          ; 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 2a 9f
+    call 016e2h                               ; e8 fa 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 1f 9f
+    call 016e2h                               ; e8 ef 9e
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 016b8h                               ; e8 ed 9e
+    call 016b8h                               ; e8 bd 9e
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 077dfh                          ; 75 0e
+    jne short 0780fh                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 077dfh                          ; 75 08
+    jne short 0780fh                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 077e1h                           ; 74 06
+    je short 07811h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 077e1h                          ; eb 02
+    jmp short 07811h                          ; 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 da 9e
-    jmp short 07801h                          ; eb 13
+    call 016c6h                               ; e8 aa 9e
+    jmp short 07831h                          ; eb 13
     push 00974h                               ; 68 74 09
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 e4 a1
+    call 019dah                               ; e8 b4 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 07386h                               ; e8 7f fb
+    call 073b6h                               ; e8 7f fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf780d LB 0xb3
+_int17_function:                             ; 0xf783d LB 0xb3
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10984,24 +10979,24 @@ _int17_function:                             ; 0xf780d 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 b3 9e
+    call 016d4h                               ; e8 83 9e
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc near 078b6h                           ; 0f 83 89 00
+    jnc near 078e6h                           ; 0f 83 89 00
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc near 078b6h                           ; 0f 83 7f 00
+    jnc near 078e6h                           ; 0f 83 7f 00
     test bx, bx                               ; 85 db
-    jbe near 078b6h                           ; 0f 86 79 00
+    jbe near 078e6h                           ; 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 70 9e
+    call 016b8h                               ; e8 40 9e
     movzx cx, al                              ; 0f b6 c8
     sal cx, 008h                              ; c1 e1 08
     cmp byte [bp+013h], 000h                  ; 80 7e 13 00
-    jne short 07881h                          ; 75 2d
+    jne short 078b1h                          ; 75 2d
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11021,13 +11016,13 @@ _int17_function:                             ; 0xf780d LB 0xb3
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 07881h                           ; 74 07
+    je short 078b1h                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 07881h                           ; 74 03
+    je short 078b1h                           ; 74 03
     dec cx                                    ; 49
-    jmp short 07870h                          ; eb ef
+    jmp short 078a0h                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 0789dh                          ; 75 16
+    jne short 078cdh                          ; 75 16
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -11046,16 +11041,16 @@ _int17_function:                             ; 0xf780d LB 0xb3
     xor AL, strict byte 048h                  ; 34 48
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 078b0h                          ; 75 04
+    jne short 078e0h                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 078bah                          ; eb 04
+    jmp short 078eah                          ; 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_:                                       ; 0xf78c0 LB 0xb2
+wait_:                                       ; 0xf78f0 LB 0xb2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11073,28 +11068,28 @@ wait_:                                       ; 0xf78c0 LB 0xb2
     xor cx, cx                                ; 31 c9
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 016f0h                               ; e8 0d 9e
+    call 016f0h                               ; e8 dd 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 ff 9d
+    call 016f0h                               ; e8 cf 9d
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 07901h                         ; 77 07
-    jne short 07908h                          ; 75 0c
+    jnbe short 07931h                         ; 77 07
+    jne short 07938h                          ; 75 0c
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jbe short 07908h                          ; 76 07
+    jbe short 07938h                          ; 76 07
     sub ax, word [bp-00eh]                    ; 2b 46 f2
     sbb dx, bx                                ; 19 da
-    jmp short 07913h                          ; eb 0b
+    jmp short 07943h                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 07913h                           ; 72 07
-    jne short 07917h                          ; 75 09
+    jc short 07943h                           ; 72 07
+    jne short 07947h                          ; 75 09
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jnc short 07917h                          ; 73 04
+    jnc short 07947h                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -11102,13 +11097,13 @@ wait_:                                       ; 0xf78c0 LB 0xb2
     mov bx, di                                ; 89 fb
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je near 0792dh                            ; 0f 84 05 00
+    je near 0795dh                            ; 0f 84 05 00
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 0792fh                           ; e9 02 00
+    jmp near 0795fh                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 07957h                           ; 74 24
+    je short 07987h                           ; 74 24
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     int 016h                                  ; cd 16
@@ -11119,17 +11114,17 @@ wait_:                                       ; 0xf78c0 LB 0xb2
     push ax                                   ; 50
     push 00996h                               ; 68 96 09
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 90 a0
+    call 019dah                               ; e8 60 a0
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 07957h                           ; 74 04
+    je short 07987h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 07969h                          ; eb 12
+    jmp short 07999h                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 078e8h                         ; 7f 8d
-    jne short 07961h                          ; 75 04
+    jnle short 07918h                         ; 7f 8d
+    jne short 07991h                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 078e8h                         ; 77 87
+    jnbe short 07918h                         ; 77 87
     mov ax, word [bp-010h]                    ; 8b 46 f0
     push ax                                   ; 50
     popfw                                     ; 9d
@@ -11141,7 +11136,7 @@ wait_:                                       ; 0xf78c0 LB 0xb2
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf7972 LB 0x16
+read_logo_byte_:                             ; 0xf79a2 LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11156,7 +11151,7 @@ read_logo_byte_:                             ; 0xf7972 LB 0x16
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf7988 LB 0x14
+read_logo_word_:                             ; 0xf79b8 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11169,7 +11164,7 @@ read_logo_word_:                             ; 0xf7988 LB 0x14
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf799c LB 0x130
+print_detected_harddisks_:                   ; 0xf79cc LB 0x130
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11181,29 +11176,29 @@ print_detected_harddisks_:                   ; 0xf799c LB 0x130
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 25 9d
+    call 016d4h                               ; e8 f5 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 f9 9c
+    call 016b8h                               ; e8 c9 9c
     mov byte [bp-00eh], al                    ; 88 46 f2
     xor bl, bl                                ; 30 db
     cmp bl, byte [bp-00eh]                    ; 3a 5e f2
-    jnc near 07a9eh                           ; 0f 83 d3 00
+    jnc near 07aceh                           ; 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 e1 9c
+    call 016b8h                               ; e8 b1 9c
     mov bh, al                                ; 88 c7
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 07a01h                           ; 72 24
+    jc short 07a31h                           ; 72 24
     test cl, cl                               ; 84 c9
-    jne short 079eeh                          ; 75 0d
+    jne short 07a1eh                          ; 75 0d
     push 009a7h                               ; 68 a7 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 f1 9f
+    call 019dah                               ; e8 c1 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     movzx ax, bl                              ; 0f b6 c3
@@ -11211,36 +11206,36 @@ print_detected_harddisks_:                   ; 0xf799c LB 0x130
     push ax                                   ; 50
     push 009bch                               ; 68 bc 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 df 9f
+    call 019dah                               ; e8 af 9f
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07a99h                           ; e9 98 00
+    jmp near 07ac9h                           ; e9 98 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 07a18h                           ; 72 13
+    jc short 07a48h                           ; 72 13
     test ch, ch                               ; 84 ed
-    jne short 07a16h                          ; 75 0d
+    jne short 07a46h                          ; 75 0d
     push 009cfh                               ; 68 cf 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 c9 9f
+    call 019dah                               ; e8 99 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
-    jmp short 079eeh                          ; eb d6
+    jmp short 07a1eh                          ; eb d6
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 07a33h                          ; 73 17
+    jnc short 07a63h                          ; 73 17
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07a33h                          ; 75 11
+    jne short 07a63h                          ; 75 11
     push 009e4h                               ; 68 e4 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 b0 9f
+    call 019dah                               ; e8 80 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07a49h                          ; eb 16
+    jmp short 07a79h                          ; eb 16
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07a49h                           ; 72 11
+    jc short 07a79h                           ; 72 11
     test cl, cl                               ; 84 c9
-    jne short 07a49h                          ; 75 0d
+    jne short 07a79h                          ; 75 0d
     push 009f6h                               ; 68 f6 09
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 96 9f
+    call 019dah                               ; e8 66 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CL, strict byte 001h                  ; b1 01
     movzx ax, bl                              ; 0f b6 c3
@@ -11248,10 +11243,10 @@ print_detected_harddisks_:                   ; 0xf799c LB 0x130
     push ax                                   ; 50
     push 00a0ah                               ; 68 0a 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 84 9f
+    call 019dah                               ; e8 54 9f
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bh, 004h                              ; 80 ff 04
-    jc short 07a61h                           ; 72 03
+    jc short 07a91h                           ; 72 03
     sub bh, 004h                              ; 80 ef 04
     movzx ax, bh                              ; 0f b6 c7
     cwd                                       ; 99
@@ -11259,41 +11254,41 @@ print_detected_harddisks_:                   ; 0xf799c LB 0x130
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07a72h                           ; 74 05
+    je short 07aa2h                           ; 74 05
     push 00a14h                               ; 68 14 0a
-    jmp short 07a75h                          ; eb 03
+    jmp short 07aa5h                          ; eb 03
     push 00a1fh                               ; 68 1f 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 60 9f
+    call 019dah                               ; e8 30 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 07a8fh                           ; 74 05
+    je short 07abfh                           ; 74 05
     push 00a28h                               ; 68 28 0a
-    jmp short 07a92h                          ; eb 03
+    jmp short 07ac2h                          ; eb 03
     push 00a2eh                               ; 68 2e 0a
     push di                                   ; 57
-    call 019dah                               ; e8 44 9f
+    call 019dah                               ; e8 14 9f
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c3h
     ; inc bl                                    ; fe c3
-    jmp near 079c4h                           ; e9 26 ff
+    jmp near 079f4h                           ; e9 26 ff
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07ab7h                          ; 75 13
+    jne short 07ae7h                          ; 75 13
     test cl, cl                               ; 84 c9
-    jne short 07ab7h                          ; 75 0f
+    jne short 07ae7h                          ; 75 0f
     test ch, ch                               ; 84 ed
-    jne short 07ab7h                          ; 75 0b
+    jne short 07ae7h                          ; 75 0b
     push 00a35h                               ; 68 35 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 26 9f
+    call 019dah                               ; e8 f6 9e
     add sp, strict byte 00004h                ; 83 c4 04
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 1b 9f
+    call 019dah                               ; e8 eb 9e
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -11303,7 +11298,7 @@ print_detected_harddisks_:                   ; 0xf799c LB 0x130
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf7acc LB 0x28
+get_boot_drive_:                             ; 0xf7afc LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11311,12 +11306,12 @@ get_boot_drive_:                             ; 0xf7acc 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 f8 9b
+    call 016d4h                               ; e8 c8 9b
     mov dx, 00304h                            ; ba 04 03
-    call 016b8h                               ; e8 d6 9b
+    call 016b8h                               ; e8 a6 9b
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 07aebh                           ; 72 02
+    jc short 07b1bh                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11324,7 +11319,7 @@ get_boot_drive_:                             ; 0xf7acc LB 0x28
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf7af4 LB 0x224
+show_logo_:                                  ; 0xf7b24 LB 0x224
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11335,7 +11330,7 @@ show_logo_:                                  ; 0xf7af4 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 cc 9b
+    call 016d4h                               ; e8 9c 9b
     mov si, ax                                ; 89 c6
     xor cl, cl                                ; 30 c9
     xor dx, dx                                ; 31 d2
@@ -11346,9 +11341,9 @@ show_logo_:                                  ; 0xf7af4 LB 0x224
     mov AL, strict byte 048h                  ; b0 48
     out strict byte 040h, AL                  ; e6 40
     movzx ax, dl                              ; 0f b6 c2
-    call 07988h                               ; e8 68 fe
+    call 079b8h                               ; e8 68 fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne near 07bf8h                           ; 0f 85 d1 00
+    jne near 07c28h                           ; 0f 85 d1 00
     push SS                                   ; 16
     pop ES                                    ; 07
     lea di, [bp-016h]                         ; 8d 7e ea
@@ -11356,119 +11351,119 @@ show_logo_:                                  ; 0xf7af4 LB 0x224
     int 010h                                  ; cd 10
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    jne near 07bf8h                           ; 0f 85 bd 00
+    jne near 07c28h                           ; 0f 85 bd 00
     mov al, dl                                ; 88 d0
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 07972h                               ; e8 2e fe
+    call 079a2h                               ; 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 07972h                               ; e8 20 fe
+    call 079a2h                               ; 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 07988h                               ; e8 28 fe
+    call 079b8h                               ; 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 07972h                               ; e8 04 fe
+    call 079a2h                               ; e8 04 fe
     mov byte [bp-012h], al                    ; 88 46 ee
     test ch, ch                               ; 84 ed
-    jne short 07b7fh                          ; 75 0a
+    jne short 07bafh                          ; 75 0a
     test dh, dh                               ; 84 f6
-    jne short 07b7fh                          ; 75 06
+    jne short 07bafh                          ; 75 06
     test bx, bx                               ; 85 db
-    je near 07bf8h                            ; 0f 84 79 00
+    je near 07c28h                            ; 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 07bb0h                           ; 74 23
+    je short 07be0h                           ; 74 23
     xor bx, bx                                ; 31 db
-    jmp short 07b97h                          ; eb 06
+    jmp short 07bc7h                          ; eb 06
     inc bx                                    ; 43
     cmp bx, strict byte 00010h                ; 83 fb 10
-    jnbe short 07bb7h                         ; 77 20
+    jnbe short 07be7h                         ; 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 078c0h                               ; e8 18 fd
+    call 078f0h                               ; e8 18 fd
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07b91h                          ; 75 e5
+    jne short 07bc1h                          ; 75 e5
     mov CL, strict byte 001h                  ; b1 01
-    jmp short 07bb7h                          ; eb 07
+    jmp short 07be7h                          ; 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 07bcdh                          ; 75 12
+    jne short 07bfdh                          ; 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 078c0h                               ; e8 f9 fc
+    call 078f0h                               ; e8 f9 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bcdh                          ; 75 02
+    jne short 07bfdh                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    je short 07bf8h                           ; 74 25
+    je short 07c28h                           ; 74 25
     test cl, cl                               ; 84 c9
-    jne short 07bf8h                          ; 75 21
+    jne short 07c28h                          ; 75 21
     mov bx, strict word 00010h                ; bb 10 00
-    jmp short 07be1h                          ; eb 05
+    jmp short 07c11h                          ; eb 05
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 07bf8h                          ; 76 17
+    jbe short 07c28h                          ; 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 078c0h                               ; e8 ce fc
+    call 078f0h                               ; e8 ce fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bdch                          ; 75 e6
+    jne short 07c0ch                          ; 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 c4 9a
+    call 016c6h                               ; e8 94 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 07cf9h                            ; 0f 84 e9 00
+    je near 07d29h                            ; 0f 84 e9 00
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07c46h                          ; 75 30
+    jne short 07c76h                          ; 75 30
     cmp byte [bp-010h], 000h                  ; 80 7e f0 00
-    jne short 07c46h                          ; 75 2a
+    jne short 07c76h                          ; 75 2a
     cmp word [bp-014h], strict byte 00000h    ; 83 7e ec 00
-    jne short 07c46h                          ; 75 24
+    jne short 07c76h                          ; 75 24
     cmp byte [bp-012h], 002h                  ; 80 7e ee 02
-    jne short 07c33h                          ; 75 0b
+    jne short 07c63h                          ; 75 0b
     push 00a4bh                               ; 68 4b 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 aa 9d
+    call 019dah                               ; e8 7a 9d
     add sp, strict byte 00004h                ; 83 c4 04
     test cl, cl                               ; 84 c9
-    jne short 07c46h                          ; 75 0f
+    jne short 07c76h                          ; 75 0f
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 078c0h                               ; e8 80 fc
+    call 078f0h                               ; e8 80 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c46h                          ; 75 02
+    jne short 07c76h                          ; 75 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je near 07cf9h                            ; 0f 84 ad 00
+    je near 07d29h                            ; 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
@@ -11487,54 +11482,54 @@ show_logo_:                                  ; 0xf7af4 LB 0x224
     int 010h                                  ; cd 10
     push 00a6dh                               ; 68 6d 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 65 9d
+    call 019dah                               ; e8 35 9d
     add sp, strict byte 00004h                ; 83 c4 04
-    call 0799ch                               ; e8 21 fd
+    call 079cch                               ; e8 21 fd
     push 00ab1h                               ; 68 b1 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 57 9d
+    call 019dah                               ; e8 27 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 078c0h                               ; e8 31 fc
+    call 078f0h                               ; e8 31 fc
     mov bl, al                                ; 88 c3
     test al, al                               ; 84 c0
-    je short 07c86h                           ; 74 f1
+    je short 07cb6h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 07ce7h                           ; 74 4e
+    je short 07d17h                           ; 74 4e
     cmp bl, 002h                              ; 80 fb 02
-    jc short 07cc0h                           ; 72 22
+    jc short 07cf0h                           ; 72 22
     cmp bl, 009h                              ; 80 fb 09
-    jnbe short 07cc0h                         ; 77 1d
+    jnbe short 07cf0h                         ; 77 1d
     movzx ax, bl                              ; 0f b6 c3
-    call 07acch                               ; e8 23 fe
+    call 07afch                               ; e8 23 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 07cafh                          ; 75 02
-    jmp short 07c86h                          ; eb d7
+    jne short 07cdfh                          ; 75 02
+    jmp short 07cb6h                          ; eb d7
     movzx bx, al                              ; 0f b6 d8
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, si                                ; 89 f0
-    call 016c6h                               ; e8 0c 9a
+    call 016c6h                               ; e8 dc 99
     mov byte [bp-00eh], 002h                  ; c6 46 f2 02
-    jmp short 07ce7h                          ; eb 27
+    jmp short 07d17h                          ; eb 27
     cmp bl, 02eh                              ; 80 fb 2e
-    je short 07cd5h                           ; 74 10
+    je short 07d05h                           ; 74 10
     cmp bl, 026h                              ; 80 fb 26
-    je short 07cdbh                           ; 74 11
+    je short 07d0bh                           ; 74 11
     cmp bl, 021h                              ; 80 fb 21
-    jne short 07ce1h                          ; 75 12
+    jne short 07d11h                          ; 75 12
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07ce7h                          ; eb 12
+    jmp short 07d17h                          ; eb 12
     mov byte [bp-00eh], 003h                  ; c6 46 f2 03
-    jmp short 07ce7h                          ; eb 0c
+    jmp short 07d17h                          ; eb 0c
     mov byte [bp-00eh], 004h                  ; c6 46 f2 04
-    jmp short 07ce7h                          ; eb 06
+    jmp short 07d17h                          ; eb 06
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 07c86h                           ; 74 9f
+    je short 07cb6h                           ; 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 d3 99
+    call 016c6h                               ; e8 a3 99
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
@@ -11547,7 +11542,7 @@ show_logo_:                                  ; 0xf7af4 LB 0x224
     pushad                                    ; 66 60
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 b4 70
+    call 0edbfh                               ; e8 84 70
     pop DS                                    ; 1f
     popad                                     ; 66 61
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -11558,14 +11553,14 @@ show_logo_:                                  ; 0xf7af4 LB 0x224
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf7d18 LB 0x67
+delay_boot_:                                 ; 0xf7d48 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 07d78h                           ; 74 55
+    je short 07da8h                           ; 74 55
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
     mov AL, strict byte 0d3h                  ; b0 d3
@@ -11575,24 +11570,24 @@ delay_boot_:                                 ; 0xf7d18 LB 0x67
     push dx                                   ; 52
     push 00afbh                               ; 68 fb 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 a2 9c
+    call 019dah                               ; e8 72 9c
     add sp, strict byte 00006h                ; 83 c4 06
     mov bx, dx                                ; 89 d3
     test bx, bx                               ; 85 db
-    jbe short 07d58h                          ; 76 17
+    jbe short 07d88h                          ; 76 17
     push bx                                   ; 53
     push 00b19h                               ; 68 19 0b
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 90 9c
+    call 019dah                               ; e8 60 9c
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 078c0h                               ; e8 6b fb
+    call 078f0h                               ; e8 6b fb
     dec bx                                    ; 4b
-    jmp short 07d3dh                          ; eb e5
+    jmp short 07d6dh                          ; eb e5
     push 00a49h                               ; 68 49 0a
     push strict byte 00002h                   ; 6a 02
-    call 019dah                               ; e8 7a 9c
+    call 019dah                               ; e8 4a 9c
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -11603,7 +11598,7 @@ delay_boot_:                                 ; 0xf7d18 LB 0x67
     pushad                                    ; 66 60
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0edbfh                               ; e8 4a 70
+    call 0edbfh                               ; e8 1a 70
     pop DS                                    ; 1f
     popad                                     ; 66 61
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11611,7 +11606,7 @@ delay_boot_:                                 ; 0xf7d18 LB 0x67
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7d7f LB 0xd5
+scsi_cmd_data_in_:                           ; 0xf7daf LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11627,11 +11622,11 @@ scsi_cmd_data_in_:                           ; 0xf7d7f LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07d95h                          ; 75 f7
+    jne short 07dc5h                          ; 75 f7
     cmp byte [bp+004h], 010h                  ; 80 7e 04 10
-    jne short 07da8h                          ; 75 04
+    jne short 07dd8h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07dach                          ; eb 04
+    jmp short 07ddch                          ; eb 04
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     mov di, ax                                ; 89 c7
     mov ax, bx                                ; 89 d8
@@ -11639,7 +11634,7 @@ scsi_cmd_data_in_:                           ; 0xf7d7f LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07db6h                               ; e2 fa
+    loop 07de6h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, di                                 ; 09 f9
@@ -11657,28 +11652,28 @@ scsi_cmd_data_in_:                           ; 0xf7d7f LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07ddbh                               ; e2 fa
+    loop 07e0bh                               ; 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 07dfch                          ; 73 0e
+    jnc short 07e2ch                          ; 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 07de6h                          ; eb ea
+    jmp short 07e16h                          ; 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 07dfch                          ; 75 f7
+    jne short 07e2ch                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07e17h                           ; 74 0e
+    je short 07e47h                           ; 74 0e
     lea dx, [si+003h]                         ; 8d 54 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -11686,12 +11681,12 @@ scsi_cmd_data_in_:                           ; 0xf7d7f LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov di, strict word 00004h                ; bf 04 00
-    jmp short 07e49h                          ; eb 32
+    jmp short 07e79h                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07e26h                          ; 75 06
+    jne short 07e56h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07e40h                          ; 76 1a
+    jbe short 07e70h                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -11700,7 +11695,7 @@ scsi_cmd_data_in_:                           ; 0xf7d7f LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07e17h                          ; eb d7
+    jmp short 07e47h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -11711,7 +11706,7 @@ scsi_cmd_data_in_:                           ; 0xf7d7f LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
+scsi_cmd_data_out_:                          ; 0xf7e84 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11727,11 +11722,11 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07e6ah                          ; 75 f7
+    jne short 07e9ah                          ; 75 f7
     cmp byte [bp+004h], 010h                  ; 80 7e 04 10
-    jne short 07e7dh                          ; 75 04
+    jne short 07eadh                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07e81h                          ; eb 04
+    jmp short 07eb1h                          ; eb 04
     movzx ax, byte [bp+004h]                  ; 0f b6 46 04
     mov si, ax                                ; 89 c6
     mov ax, bx                                ; 89 d8
@@ -11739,7 +11734,7 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e8bh                               ; e2 fa
+    loop 07ebbh                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, si                                 ; 09 f1
@@ -11757,25 +11752,25 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07eb0h                               ; e2 fa
+    loop 07ee0h                               ; 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 07ed1h                          ; 73 0e
+    jnc short 07f01h                          ; 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 07ebbh                          ; eb ea
+    jmp short 07eebh                          ; eb ea
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07ee0h                          ; 75 06
+    jne short 07f10h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07efbh                          ; 76 1b
+    jbe short 07f2bh                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -11785,7 +11780,7 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07ed1h                          ; eb d6
+    jmp short 07f01h                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -11795,9 +11790,9 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07f03h                          ; 75 f7
+    jne short 07f33h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07f1eh                           ; 74 0e
+    je short 07f4eh                           ; 74 0e
     lea dx, [di+003h]                         ; 8d 55 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -11805,14 +11800,14 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 07f20h                          ; eb 02
+    jmp short 07f50h                          ; 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:                          ; 0xf7f29 LB 0xdb
+ at scsi_read_sectors:                          ; 0xf7f59 LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11824,13 +11819,13 @@ scsi_cmd_data_out_:                          ; 0xf7e54 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 07f57h                          ; 76 13
+    jbe short 07f87h                          ; 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 86 9a
+    call 019dah                               ; e8 56 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
@@ -11869,7 +11864,7 @@ scsi_cmd_data_out_:                          ; 0xf7e54 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 07fc0h                               ; e2 f8
+    loop 07ff0h                               ; 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
@@ -11877,10 +11872,10 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07d7fh                               ; e8 a2 fd
+    call 07dafh                               ; e8 a2 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 07ff8h                          ; 75 15
+    jne short 08028h                          ; 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
@@ -11893,7 +11888,7 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at scsi_write_sectors:                         ; 0xf8004 LB 0xdb
+ at scsi_write_sectors:                         ; 0xf8034 LB 0xdb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11905,13 +11900,13 @@ scsi_cmd_data_out_:                          ; 0xf7e54 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 08032h                          ; 76 13
+    jbe short 08062h                          ; 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 ab 99
+    call 019dah                               ; e8 7b 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
@@ -11950,7 +11945,7 @@ scsi_cmd_data_out_:                          ; 0xf7e54 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 0809bh                               ; e2 f8
+    loop 080cbh                               ; 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
@@ -11958,10 +11953,10 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07e54h                               ; e8 9c fd
+    call 07e84h                               ; e8 9c fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 080d3h                          ; 75 15
+    jne short 08103h                          ; 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
@@ -11974,7 +11969,7 @@ scsi_cmd_data_out_:                          ; 0xf7e54 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf80df LB 0x166
+scsi_cmd_packet_:                            ; 0xf810f LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11986,22 +11981,22 @@ scsi_cmd_packet_:                            ; 0xf80df 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 d9 95
+    call 016d4h                               ; e8 a9 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 08126h                          ; 75 1f
+    jne short 08156h                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 87 98
+    call 01999h                               ; e8 57 98
     push 00b62h                               ; 68 62 0b
     push 00b72h                               ; 68 72 0b
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 bd 98
+    call 019dah                               ; e8 8d 98
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 0823ah                           ; e9 14 01
+    jmp near 0826ah                           ; 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
@@ -12015,7 +12010,7 @@ scsi_cmd_packet_:                            ; 0xf80df LB 0x166
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 08142h                          ; 75 f7
+    jne short 08172h                          ; 75 f7
     xor ax, ax                                ; 31 c0
     mov dx, word [bp+006h]                    ; 8b 56 06
     add dx, word [bp+004h]                    ; 03 56 04
@@ -12031,7 +12026,7 @@ scsi_cmd_packet_:                            ; 0xf80df LB 0x166
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0816dh                               ; e2 fa
+    loop 0819dh                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     movzx cx, byte [bp-006h]                  ; 0f b6 4e fa
     or cx, ax                                 ; 09 c1
@@ -12049,28 +12044,28 @@ scsi_cmd_packet_:                            ; 0xf80df LB 0x166
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 08194h                               ; e2 fa
+    loop 081c4h                               ; 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 081b5h                          ; 73 0e
+    jnc short 081e5h                          ; 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 0819fh                          ; eb ea
+    jmp short 081cfh                          ; 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 081b5h                          ; 75 f7
+    jne short 081e5h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 081d0h                           ; 74 0e
+    je short 08200h                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12078,14 +12073,14 @@ scsi_cmd_packet_:                            ; 0xf80df LB 0x166
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 0823ah                          ; eb 6a
+    jmp short 0826ah                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 081dfh                           ; 74 08
+    je short 0820fh                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 081dch                               ; e2 fd
+    loop 0820ch                               ; 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
@@ -12093,9 +12088,9 @@ scsi_cmd_packet_:                            ; 0xf80df 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 08200h                          ; 75 07
+    jne short 08230h                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 0821dh                          ; 76 1d
+    jbe short 0824dh                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+00ch]                         ; c4 7e 0c
@@ -12105,17 +12100,17 @@ scsi_cmd_packet_:                            ; 0xf80df LB 0x166
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 081f0h                          ; eb d3
+    jmp short 08220h                          ; 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 08238h                           ; 74 07
+    je short 08268h                           ; 74 07
     mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     in AL, DX                                 ; ec
-    loop 08235h                               ; e2 fd
+    loop 08265h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12123,7 +12118,7 @@ scsi_cmd_packet_:                            ; 0xf80df LB 0x166
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
+scsi_enumerate_attached_devices_:            ; 0xf8275 LB 0x482
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12135,18 +12130,18 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 79 94
+    call 016d4h                               ; e8 49 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 08649h                           ; e9 e0 03
+    jmp near 08679h                           ; e9 e0 03
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc near 086bdh                           ; 0f 83 4e 04
+    jnc near 086edh                           ; 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 09f20h                               ; e8 a4 1c
+    call 09f50h                               ; e8 a4 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
@@ -12159,13 +12154,13 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07d7fh                               ; e8 dc fa
+    call 07dafh                               ; e8 dc fa
     test al, al                               ; 84 c0
-    je short 082b5h                           ; 74 0e
+    je short 082e5h                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bcbh                               ; 68 cb 0b
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 28 97
+    call 019dah                               ; e8 f8 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
@@ -12195,62 +12190,62 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08303h                               ; e2 fa
+    loop 08333h                               ; 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 08321h                          ; 75 06
+    jne short 08351h                          ; 75 06
     cmp bx, 00200h                            ; 81 fb 00 02
-    je short 08341h                           ; 74 20
+    je short 08371h                           ; 74 20
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 6d 96
+    call 01999h                               ; e8 3d 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 9f 96
+    call 019dah                               ; e8 6f 96
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 08640h                           ; e9 ff 02
+    jmp near 08670h                           ; e9 ff 02
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08354h                           ; 72 0c
-    jbe short 0835ch                          ; 76 12
+    jc short 08384h                           ; 72 0c
+    jbe short 0838ch                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08364h                           ; 74 16
+    je short 08394h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 08360h                           ; 74 0e
-    jmp short 083adh                          ; eb 59
+    je short 08390h                           ; 74 0e
+    jmp short 083ddh                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 083adh                          ; 75 55
+    jne short 083ddh                          ; 75 55
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 08366h                          ; eb 0a
+    jmp short 08396h                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 08366h                          ; eb 06
+    jmp short 08396h                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 08366h                          ; eb 02
+    jmp short 08396h                          ; 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 a2 93
+    call 01714h                               ; e8 72 93
     test al, al                               ; 84 c0
-    je short 083adh                           ; 74 37
+    je short 083ddh                           ; 74 37
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 01714h                               ; e8 95 93
+    call 01714h                               ; e8 65 93
     movzx dx, al                              ; 0f b6 d0
     sal dx, 008h                              ; c1 e2 08
     movzx ax, bl                              ; 0f b6 c3
-    call 01714h                               ; e8 89 93
+    call 01714h                               ; e8 59 93
     xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
     cwd                                       ; 99
@@ -12258,40 +12253,40 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 01714h                               ; e8 79 93
+    call 01714h                               ; e8 49 93
     xor ah, ah                                ; 30 e4
     mov word [bp-034h], ax                    ; 89 46 cc
     mov ax, cx                                ; 89 c8
-    call 01714h                               ; e8 6f 93
+    call 01714h                               ; e8 3f 93
     xor ah, ah                                ; 30 e4
     mov word [bp-032h], ax                    ; 89 46 ce
-    jmp near 08496h                           ; e9 e9 00
+    jmp near 084c6h                           ; 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 09f00h                               ; e8 41 1b
+    call 09f30h                               ; e8 41 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 083e8h                         ; 77 16
-    jne near 0845bh                           ; 0f 85 85 00
+    jnbe short 08418h                         ; 77 16
+    jne near 0848bh                           ; 0f 85 85 00
     cmp word [bp-030h], strict byte 00000h    ; 83 7e d0 00
-    jnbe short 083e8h                         ; 77 0c
-    jne near 0845bh                           ; 0f 85 7b 00
+    jnbe short 08418h                         ; 77 0c
+    jne near 0848bh                           ; 0f 85 7b 00
     cmp word [bp-012h], strict byte 00040h    ; 83 7e ee 40
-    jnbe short 083e8h                         ; 77 02
-    jne short 0845bh                          ; 75 73
+    jnbe short 08418h                         ; 77 02
+    jne short 0848bh                          ; 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 09f00h                               ; e8 01 1b
+    call 09f30h                               ; e8 01 1b
     mov si, word [bp-020h]                    ; 8b 76 e0
     add si, dx                                ; 01 d6
     mov word [bp-02ah], si                    ; 89 76 d6
@@ -12309,7 +12304,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     mov cx, word [bp-028h]                    ; 8b 4e d8
     mov dx, si                                ; 89 f2
     mov si, strict word 00008h                ; be 08 00
-    call 09f00h                               ; e8 d1 1a
+    call 09f30h                               ; e8 d1 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
@@ -12318,31 +12313,31 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 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 09f00h                               ; e8 b6 1a
+    call 09f30h                               ; e8 b6 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 08496h                          ; eb 3b
+    jmp short 084c6h                          ; eb 3b
     test ax, ax                               ; 85 c0
-    jnbe short 08471h                         ; 77 12
-    jne short 0847bh                          ; 75 1a
+    jnbe short 084a1h                         ; 77 12
+    jne short 084abh                          ; 75 1a
     cmp word [bp-030h], strict byte 00000h    ; 83 7e d0 00
-    jnbe short 08471h                         ; 77 0a
-    jne short 0847bh                          ; 75 12
+    jnbe short 084a1h                         ; 77 0a
+    jne short 084abh                          ; 75 12
     cmp word [bp-012h], strict byte 00020h    ; 83 7e ee 20
-    jnbe short 08471h                         ; 77 02
-    jne short 0847bh                          ; 75 0a
+    jnbe short 084a1h                         ; 77 02
+    jne short 084abh                          ; 75 0a
     mov dword [bp-034h], strict dword 000200080h ; 66 c7 46 cc 80 00 20 00
-    jmp short 08492h                          ; eb 17
+    jmp short 084c2h                          ; 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 09f00h                               ; e8 6e 1a
+    call 09f30h                               ; e8 6e 1a
     mov si, dx                                ; 89 d6
     mov dx, cx                                ; 89 ca
     mov al, byte [bp-00ch]                    ; 8a 46 f4
@@ -12375,18 +12370,18 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 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 08503h                          ; 75 06
+    jne short 08533h                          ; 75 06
     cmp si, 00400h                            ; 81 fe 00 04
-    jbe short 08511h                          ; 76 0e
+    jbe short 08541h                          ; 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 08519h                          ; eb 08
+    jmp short 08549h                          ; 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 75 94
+    call 01999h                               ; e8 45 94
     push word [bp-010h]                       ; ff 76 f0
     push word [bp-030h]                       ; ff 76 d0
     push word [bp-012h]                       ; ff 76 ee
@@ -12399,7 +12394,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     push ax                                   ; 50
     push 00c18h                               ; 68 18 0c
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 94 94
+    call 019dah                               ; e8 64 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
@@ -12424,25 +12419,25 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 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 22 91
+    call 016b8h                               ; e8 f2 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 22 91
+    call 016c6h                               ; e8 f2 90
     inc byte [bp-00ch]                        ; fe 46 f4
-    jmp near 08635h                           ; e9 8b 00
+    jmp near 08665h                           ; 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 e4 93
+    call 01999h                               ; e8 b4 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 15 94
+    call 019dah                               ; e8 e5 93
     add sp, strict byte 00008h                ; 83 c4 08
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     add AL, strict byte 008h                  ; 04 08
@@ -12483,7 +12478,7 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 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 086bdh                          ; 7d 74
+    jnl short 086edh                          ; 7d 74
     mov byte [bp-046h], 012h                  ; c6 46 ba 12
     xor al, al                                ; 30 c0
     mov byte [bp-045h], al                    ; 88 46 bb
@@ -12500,28 +12495,28 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     mov cx, ss                                ; 8c d1
     lea bx, [bp-046h]                         ; 8d 5e ba
     mov ax, word [bp-00248h]                  ; 8b 86 b8 fd
-    call 07d7fh                               ; e8 05 f7
+    call 07dafh                               ; e8 05 f7
     test al, al                               ; 84 c0
-    je short 0868ch                           ; 74 0e
+    je short 086bch                           ; 74 0e
     push 00b92h                               ; 68 92 0b
     push 00bb2h                               ; 68 b2 0b
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 51 93
+    call 019dah                               ; e8 21 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 086a7h                          ; 75 09
+    jne short 086d7h                          ; 75 09
     test byte [bp-00246h], 01fh               ; f6 86 ba fd 1f
-    je near 08269h                            ; 0f 84 c2 fb
+    je near 08299h                            ; 0f 84 c2 fb
     test byte [bp-00246h], 0e0h               ; f6 86 ba fd e0
-    jne short 08635h                          ; 75 87
+    jne short 08665h                          ; 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 085aah                            ; 0f 84 f0 fe
-    jmp near 08635h                           ; e9 78 ff
+    je near 085dah                            ; 0f 84 f0 fe
+    jmp near 08665h                           ; e9 78 ff
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -12530,12 +12525,12 @@ scsi_enumerate_attached_devices_:            ; 0xf8245 LB 0x482
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf86c7 LB 0x66
+_scsi_init:                                  ; 0xf86f7 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 01 90
+    call 016d4h                               ; e8 d1 8f
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
     mov byte [es:bx+0022ch], 000h             ; 26 c6 87 2c 02 00
@@ -12546,12 +12541,12 @@ _scsi_init:                                  ; 0xf86c7 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 086f7h                          ; 75 0c
+    jne short 08727h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 08245h                               ; e8 4e fb
+    call 08275h                               ; e8 4e fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
     out DX, AL                                ; ee
@@ -12559,12 +12554,12 @@ _scsi_init:                                  ; 0xf86c7 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08710h                          ; 75 0c
+    jne short 08740h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 08245h                               ; e8 35 fb
+    call 08275h                               ; e8 35 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
     out DX, AL                                ; ee
@@ -12572,16 +12567,16 @@ _scsi_init:                                  ; 0xf86c7 LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08729h                          ; 75 0c
+    jne short 08759h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 08245h                               ; e8 1c fb
+    call 08275h                               ; e8 1c fb
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf872d LB 0x1b
+ahci_ctrl_extract_bits_:                     ; 0xf875d LB 0x1b
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -12589,14 +12584,14 @@ ahci_ctrl_extract_bits_:                     ; 0xf872d LB 0x1b
     and ax, bx                                ; 21 d8
     and dx, cx                                ; 21 ca
     movzx cx, byte [bp+006h]                  ; 0f b6 4e 06
-    jcxz 08743h                               ; e3 06
+    jcxz 08773h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0873dh                               ; e2 fa
+    loop 0876dh                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf8748 LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf8778 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -12607,7 +12602,7 @@ ahci_addr_to_phys_:                          ; 0xf8748 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 08756h                               ; e2 fa
+    loop 08786h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -12615,7 +12610,7 @@ ahci_addr_to_phys_:                          ; 0xf8748 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf8766 LB 0x14b
+ahci_port_cmd_sync_:                         ; 0xf8796 LB 0x14b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -12630,7 +12625,7 @@ ahci_port_cmd_sync_:                         ; 0xf8766 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 088a9h                            ; 0f 84 20 01
+    je near 088d9h                            ; 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
@@ -12642,7 +12637,7 @@ ahci_port_cmd_sync_:                         ; 0xf8766 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 08748h                               ; e8 96 ff
+    call 08778h                               ; 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
@@ -12705,14 +12700,14 @@ ahci_port_cmd_sync_:                         ; 0xf8766 LB 0x14b
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dh, 040h                             ; f6 c6 40
-    jne short 0883fh                          ; 75 04
+    jne short 0886fh                          ; 75 04
     test AL, strict byte 001h                 ; a8 01
-    je short 08843h                           ; 74 04
+    je short 08873h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08845h                          ; eb 02
+    jmp short 08875h                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 08813h                           ; 74 ca
+    je short 08843h                           ; 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
@@ -12766,7 +12761,7 @@ ahci_port_cmd_sync_:                         ; 0xf8766 LB 0x14b
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf88b1 LB 0x262
+ahci_cmd_data_:                              ; 0xf88e1 LB 0x262
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -12791,7 +12786,7 @@ ahci_cmd_data_:                              ; 0xf88b1 LB 0x262
     xor bx, bx                                ; 31 db
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 09f20h                               ; e8 31 16
+    call 09f50h                               ; e8 31 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
@@ -12809,7 +12804,7 @@ ahci_cmd_data_:                              ; 0xf88b1 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 09f00h                               ; e8 cd 15
+    call 09f30h                               ; e8 cd 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
@@ -12820,7 +12815,7 @@ ahci_cmd_data_:                              ; 0xf88b1 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 09f00h                               ; e8 a7 15
+    call 09f30h                               ; e8 a7 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
@@ -12832,7 +12827,7 @@ ahci_cmd_data_:                              ; 0xf88b1 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 09f00h                               ; e8 7b 15
+    call 09f30h                               ; e8 7b 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
@@ -12843,7 +12838,7 @@ ahci_cmd_data_:                              ; 0xf88b1 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 09f00h                               ; e8 55 15
+    call 09f30h                               ; e8 55 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
@@ -12854,7 +12849,7 @@ ahci_cmd_data_:                              ; 0xf88b1 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 09f00h                               ; e8 2f 15
+    call 09f30h                               ; e8 2f 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
@@ -12868,7 +12863,7 @@ ahci_cmd_data_:                              ; 0xf88b1 LB 0x262
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-010h]                    ; 8b 5e f0
     xor cx, cx                                ; 31 c9
-    call 09e80h                               ; e8 7a 14
+    call 09eb0h                               ; e8 7a 14
     push dx                                   ; 52
     push ax                                   ; 50
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -12878,7 +12873,7 @@ ahci_cmd_data_:                              ; 0xf88b1 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 09dd4h                               ; e8 b2 13
+    call 09e04h                               ; 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
@@ -12899,7 +12894,7 @@ ahci_cmd_data_:                              ; 0xf88b1 LB 0x262
     mov bx, si                                ; 89 f3
     mov ax, word [es:bx+020h]                 ; 26 8b 47 20
     test ax, ax                               ; 85 c0
-    je short 08ab0h                           ; 74 39
+    je short 08ae0h                           ; 74 39
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     movzx bx, byte [es:di+00263h]             ; 26 0f b6 9d 63 02
@@ -12915,34 +12910,34 @@ ahci_cmd_data_:                              ; 0xf88b1 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 08abdh                          ; 75 06
+    jne short 08aedh                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 08ad4h                          ; eb 17
+    jmp short 08b04h                          ; eb 17
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 08ad0h                          ; 75 0f
+    jne short 08b00h                          ; 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 08ad4h                          ; eb 04
+    jmp short 08b04h                          ; 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 08766h                               ; e8 81 fc
+    call 08796h                               ; 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 09e4dh                               ; e8 53 13
+    call 09e7dh                               ; 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 08b09h                           ; 74 05
+    je short 08b39h                           ; 74 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08b0bh                          ; eb 02
+    jmp short 08b3bh                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -12950,7 +12945,7 @@ ahci_cmd_data_:                              ; 0xf88b1 LB 0x262
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf8b13 LB 0x17f
+ahci_port_deinit_current_:                   ; 0xf8b43 LB 0x17f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12965,7 +12960,7 @@ ahci_port_deinit_current_:                   ; 0xf8b13 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 08c89h                            ; 0f 84 52 01
+    je near 08cb9h                            ; 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
@@ -13008,27 +13003,27 @@ ahci_port_deinit_current_:                   ; 0xf8b13 LB 0x17f
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08b97h                           ; 74 04
+    je short 08bc7h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08b99h                          ; eb 02
+    jmp short 08bc9h                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08b6bh                           ; 74 ce
+    je short 08b9bh                           ; 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 09f20h                               ; e8 76 13
+    call 09f50h                               ; e8 76 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 09f20h                               ; e8 67 13
+    call 09f50h                               ; e8 67 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 09f20h                               ; e8 58 13
+    call 09f50h                               ; e8 58 13
     movzx ax, byte [bp-00ah]                  ; 0f b6 46 f6
     sal ax, 007h                              ; c1 e0 07
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -13132,7 +13127,7 @@ ahci_port_deinit_current_:                   ; 0xf8b13 LB 0x17f
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8c92 LB 0x24a
+ahci_port_init_:                             ; 0xf8cc2 LB 0x24a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13142,7 +13137,7 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     mov si, ax                                ; 89 c6
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 08b13h                               ; e8 6d fe
+    call 08b43h                               ; e8 6d fe
     movzx ax, bl                              ; 0f b6 c3
     sal ax, 007h                              ; c1 e0 07
     add ax, 00118h                            ; 05 18 01
@@ -13189,28 +13184,28 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08d15h                           ; 74 04
+    je short 08d45h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08d17h                          ; eb 02
+    jmp short 08d47h                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08ce1h                           ; 74 c6
+    je short 08d11h                           ; 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 09f20h                               ; e8 f8 11
+    call 09f50h                               ; e8 f8 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 09f20h                               ; e8 e9 11
+    call 09f50h                               ; e8 e9 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 09f20h                               ; e8 d8 11
+    call 09f50h                               ; e8 d8 11
     movzx bx, byte [bp-008h]                  ; 0f b6 5e f8
     sal bx, 007h                              ; c1 e3 07
     lea ax, [bx+00108h]                       ; 8d 87 08 01
@@ -13227,7 +13222,7 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     out DX, eax                               ; 66 ef
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08748h                               ; e8 d3 f9
+    call 08778h                               ; 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
@@ -13272,7 +13267,7 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     out DX, eax                               ; 66 ef
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 08748h                               ; e8 67 f9
+    call 08778h                               ; 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
@@ -13377,7 +13372,7 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
- at ahci_read_sectors:                          ; 0xf8edc LB 0xa6
+ at ahci_read_sectors:                          ; 0xf8f0c LB 0xa6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13387,12 +13382,12 @@ ahci_port_init_:                             ; 0xf8c92 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 08f01h                          ; 76 0f
+    jbe short 08f31h                          ; 76 0f
     push di                                   ; 57
     push 00c62h                               ; 68 62 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 dc 8a
+    call 019dah                               ; e8 ac 8a
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     les si, [bp+004h]                         ; c4 76 04
@@ -13406,11 +13401,11 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     mov di, si                                ; 89 f7
     mov dx, word [es:di+00232h]               ; 26 8b 95 32 02
     xor ax, ax                                ; 31 c0
-    call 08c92h                               ; e8 65 fd
+    call 08cc2h                               ; 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 088b1h                               ; e8 79 f9
+    call 088e1h                               ; e8 79 f9
     mov word [bp-006h], ax                    ; 89 46 fa
     mov es, [bp+006h]                         ; 8e 46 06
     mov bx, si                                ; 89 f3
@@ -13439,7 +13434,7 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at ahci_write_sectors:                         ; 0xf8f82 LB 0x84
+ at ahci_write_sectors:                         ; 0xf8fb2 LB 0x84
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13450,12 +13445,12 @@ ahci_port_init_:                             ; 0xf8c92 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 08fabh                          ; 76 0f
+    jbe short 08fdbh                          ; 76 0f
     push dx                                   ; 52
     push 00c93h                               ; 68 93 0c
     push 00c74h                               ; 68 74 0c
     push strict byte 00007h                   ; 6a 07
-    call 019dah                               ; e8 32 8a
+    call 019dah                               ; e8 02 8a
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     mov es, cx                                ; 8e c1
@@ -13469,11 +13464,11 @@ ahci_port_init_:                             ; 0xf8c92 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 08c92h                               ; e8 bd fc
+    call 08cc2h                               ; e8 bd fc
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 088b1h                               ; e8 d2 f8
+    call 088e1h                               ; e8 d2 f8
     mov dx, ax                                ; 89 c2
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
@@ -13488,7 +13483,7 @@ ahci_port_init_:                             ; 0xf8c92 LB 0x24a
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf9006 LB 0x183
+ahci_cmd_packet_:                            ; 0xf9036 LB 0x183
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13500,30 +13495,30 @@ ahci_cmd_packet_:                            ; 0xf9006 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 b3 86
+    call 016d4h                               ; e8 83 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 0904ch                          ; 75 1f
+    jne short 0907ch                          ; 75 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 61 89
+    call 01999h                               ; e8 31 89
     push 00ca6h                               ; 68 a6 0c
     push 00cb6h                               ; 68 b6 0c
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 97 89
+    call 019dah                               ; e8 67 89
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 09180h                           ; e9 34 01
+    jmp near 091b0h                           ; e9 34 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 09046h                          ; 75 f4
+    jne short 09076h                          ; 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 0905bh                               ; e2 fa
+    loop 0908bh                               ; 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
@@ -13537,7 +13532,7 @@ ahci_cmd_packet_:                            ; 0xf9006 LB 0x183
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 09ec0h                               ; e8 2f 0e
+    call 09ef0h                               ; e8 2f 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
@@ -13554,21 +13549,21 @@ ahci_cmd_packet_:                            ; 0xf9006 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 08c92h                               ; e8 c5 fb
+    call 08cc2h                               ; 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 09f30h                               ; e8 4f 0e
+    call 09f60h                               ; e8 4f 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 0911fh                           ; 74 27
+    je short 0914fh                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+0010ch], ax               ; 26 89 85 0c 01
@@ -13581,7 +13576,7 @@ ahci_cmd_packet_:                            ; 0xf9006 LB 0x183
     mov bx, 000a0h                            ; bb a0 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 088b1h                               ; e8 87 f7
+    call 088e1h                               ; 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
@@ -13608,16 +13603,16 @@ ahci_cmd_packet_:                            ; 0xf9006 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 0917eh                          ; 75 05
+    jne short 091aeh                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 09180h                          ; eb 02
+    jmp short 091b0h                          ; 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_:                    ; 0xf9189 LB 0x4b1
+ahci_port_detect_device_:                    ; 0xf91b9 LB 0x4b1
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13629,10 +13624,10 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     mov byte [bp-00ah], bl                    ; 88 5e f6
     movzx di, bl                              ; 0f b6 fb
     mov bx, di                                ; 89 fb
-    call 08c92h                               ; e8 ef fa
+    call 08cc2h                               ; e8 ef fa
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 016d4h                               ; e8 28 85
+    call 016d4h                               ; e8 f8 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
@@ -13701,9 +13696,9 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0872dh                               ; e8 d7 f4
+    call 0875dh                               ; e8 d7 f4
     test ax, ax                               ; 85 c0
-    je near 09632h                            ; 0f 84 d6 03
+    je near 09662h                            ; 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
@@ -13731,17 +13726,17 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0872dh                               ; e8 8b f4
+    call 0875dh                               ; e8 8b f4
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 0925ch                           ; 74 b5
+    je short 0928ch                           ; 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 0872dh                               ; e8 77 f4
+    call 0875dh                               ; e8 77 f4
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne near 09632h                           ; 0f 85 75 03
+    jne near 09662h                           ; 0f 85 75 03
     mov ax, word [bp-018h]                    ; 8b 46 e8
     add ax, 00130h                            ; 05 30 01
     cwd                                       ; 99
@@ -13768,7 +13763,7 @@ ahci_port_detect_device_:                    ; 0xf9189 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 09632h                           ; 0f 83 2f 03
+    jnc near 09662h                           ; 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
@@ -13820,9 +13815,9 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     mov cl, byte [bp-008h]                    ; 8a 4e f8
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne near 09588h                           ; 0f 85 0d 02
+    jne near 095b8h                           ; 0f 85 0d 02
     cmp di, 00101h                            ; 81 ff 01 01
-    jne near 09588h                           ; 0f 85 05 02
+    jne near 095b8h                           ; 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
@@ -13836,7 +13831,7 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     mov bx, 000ech                            ; bb ec 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 088b1h                               ; e8 fa f4
+    call 088e1h                               ; 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
@@ -13853,9 +13848,9 @@ ahci_port_detect_device_:                    ; 0xf9189 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 09410h                          ; 75 1e
+    jne short 09440h                          ; 75 1e
     cmp dx, strict byte 0ffffh                ; 83 fa ff
-    jne short 09410h                          ; 75 19
+    jne short 09440h                          ; 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
@@ -13892,63 +13887,63 @@ ahci_port_detect_device_:                    ; 0xf9189 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 09489h                           ; 72 0c
-    jbe short 09491h                          ; 76 12
+    jc short 094b9h                           ; 72 0c
+    jbe short 094c1h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 09499h                           ; 74 16
+    je short 094c9h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 09495h                           ; 74 0e
-    jmp short 094e2h                          ; eb 59
+    je short 094c5h                           ; 74 0e
+    jmp short 09512h                          ; eb 59
     test al, al                               ; 84 c0
-    jne short 094e2h                          ; 75 55
+    jne short 09512h                          ; 75 55
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 0949bh                          ; eb 0a
+    jmp short 094cbh                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 0949bh                          ; eb 06
+    jmp short 094cbh                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 0949bh                          ; eb 02
+    jmp short 094cbh                          ; 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 6d 82
+    call 01714h                               ; e8 3d 82
     test al, al                               ; 84 c0
-    je short 094e2h                           ; 74 37
+    je short 09512h                           ; 74 37
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 01714h                               ; e8 60 82
+    call 01714h                               ; e8 30 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 53 82
+    call 01714h                               ; e8 23 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 43 82
+    call 01714h                               ; e8 13 82
     xor ah, ah                                ; 30 e4
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov ax, bx                                ; 89 d8
-    call 01714h                               ; e8 39 82
+    call 01714h                               ; e8 09 82
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp short 094f2h                          ; eb 10
+    jmp short 09522h                          ; 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 059a6h                               ; e8 b4 c4
+    call 059d6h                               ; 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 9c 84
+    call 01999h                               ; e8 6c 84
     push dword [bp-016h]                      ; 66 ff 76 ea
     push di                                   ; 57
     push word [bp-01ah]                       ; ff 76 e6
@@ -13967,7 +13962,7 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     push ax                                   ; 50
     push 00cd6h                               ; 68 d6 0c
     push strict byte 00004h                   ; 6a 04
-    call 019dah                               ; e8 ae 84
+    call 019dah                               ; e8 7e 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
@@ -13996,18 +13991,18 @@ ahci_port_detect_device_:                    ; 0xf9189 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 41 81
+    call 016b8h                               ; e8 11 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 41 81
-    jmp near 09624h                           ; e9 9c 00
+    call 016c6h                               ; e8 11 81
+    jmp near 09654h                           ; e9 9c 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne near 09624h                           ; 0f 85 94 00
+    jne near 09654h                           ; 0f 85 94 00
     cmp di, 00101h                            ; 81 ff 01 01
-    jne near 09624h                           ; 0f 85 8c 00
+    jne near 09654h                           ; 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
@@ -14021,7 +14016,7 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     mov bx, 000a1h                            ; bb a1 00
     mov ax, word [bp-010h]                    ; 8b 46 f0
     mov dx, es                                ; 8c c2
-    call 088b1h                               ; e8 e5 f2
+    call 088e1h                               ; e8 e5 f2
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
     db  00fh, 095h, 0c0h
     ; setne al                                  ; 0f 95 c0
@@ -14058,7 +14053,7 @@ ahci_port_detect_device_:                    ; 0xf9189 LB 0x4b1
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf963a LB 0x43
+ahci_mem_alloc_:                             ; 0xf966a LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14068,25 +14063,25 @@ ahci_mem_alloc_:                             ; 0xf963a LB 0x43
     push di                                   ; 57
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 016d4h                               ; e8 8a 80
+    call 016d4h                               ; e8 5a 80
     test ax, ax                               ; 85 c0
-    je short 09673h                           ; 74 25
+    je short 096a3h                           ; 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 09656h                               ; e2 fa
+    loop 09686h                               ; 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 09663h                               ; e2 fa
+    loop 09693h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 016e2h                               ; e8 71 80
+    call 016e2h                               ; e8 41 80
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14096,7 +14091,7 @@ ahci_mem_alloc_:                             ; 0xf963a LB 0x43
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf967d LB 0x166
+ahci_hba_init_:                              ; 0xf96ad LB 0x166
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14108,7 +14103,7 @@ ahci_hba_init_:                              ; 0xf967d 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 41 80
+    call 016d4h                               ; e8 11 80
     mov bx, 00122h                            ; bb 22 01
     mov di, ax                                ; 89 c7
     mov ax, strict word 00010h                ; b8 10 00
@@ -14125,10 +14120,10 @@ ahci_hba_init_:                              ; 0xf967d LB 0x166
     ; mov dx, ax                                ; 8b d0
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 0963ah                               ; e8 83 ff
+    call 0966ah                               ; e8 83 ff
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    je near 097c2h                            ; 0f 84 02 01
+    je near 097f2h                            ; 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
@@ -14178,7 +14173,7 @@ ahci_hba_init_:                              ; 0xf967d LB 0x166
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 09716h                          ; 75 de
+    jne short 09746h                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14196,31 +14191,31 @@ ahci_hba_init_:                              ; 0xf967d LB 0x166
     push strict byte 00000h                   ; 6a 00
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 0872dh                               ; e8 d1 ef
+    call 0875dh                               ; 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 09787h                          ; eb 20
+    jmp short 097b7h                          ; eb 20
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0977eh                           ; 74 11
+    je short 097aeh                           ; 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 09189h                               ; e8 10 fa
+    call 091b9h                               ; e8 10 fa
     dec byte [bp-00eh]                        ; fe 4e f2
-    je short 097c0h                           ; 74 42
+    je short 097f0h                           ; 74 42
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
-    jnc short 097c0h                          ; 73 39
+    jnc short 097f0h                          ; 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 09798h                               ; e3 06
+    jcxz 097c8h                               ; e3 06
     sal bx, 1                                 ; d1 e3
     rcl di, 1                                 ; d1 d7
-    loop 09792h                               ; e2 fa
+    loop 097c2h                               ; e2 fa
     mov ax, strict word 0000ch                ; b8 0c 00
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14236,11 +14231,11 @@ ahci_hba_init_:                              ; 0xf967d LB 0x166
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 097bch                          ; 75 04
+    jne short 097ech                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 09767h                           ; 74 ab
+    je short 09797h                           ; 74 ab
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 09769h                          ; eb a9
+    jmp short 09799h                          ; eb a9
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14250,9 +14245,9 @@ ahci_hba_init_:                              ; 0xf967d LB 0x166
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 0b2h, 098h, 090h, 098h, 096h, 098h, 09ch, 098h, 0a2h
-    db  098h, 0a8h, 098h, 0aeh, 098h, 0b2h, 098h
-_ahci_init:                                  ; 0xf97e3 LB 0xfe
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14260,10 +14255,10 @@ _ahci_init:                                  ; 0xf97e3 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 09d01h                               ; e8 0d 05
+    call 09d31h                               ; e8 0d 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je near 098dah                            ; 0f 84 dd 00
+    je near 0990ah                            ; 0f 84 dd 00
     xor al, al                                ; 30 c0
     shr ax, 008h                              ; c1 e8 08
     mov byte [bp-00ah], al                    ; 88 46 f6
@@ -14271,116 +14266,120 @@ _ahci_init:                                  ; 0xf97e3 LB 0xfe
     xor dh, dh                                ; 30 f6
     xor ah, ah                                ; 30 e4
     mov bx, strict word 00034h                ; bb 34 00
-    call 09d2ch                               ; e8 1a 05
+    call 09d5ch                               ; e8 1a 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 0983bh                           ; 74 23
+    je short 0986bh                           ; 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 09d2ch                               ; e8 02 05
+    call 09d5ch                               ; e8 02 05
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 0983bh                           ; 74 0d
+    je short 0986bh                           ; 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 0980fh                          ; eb d4
+    jmp short 0983fh                          ; eb d4
     test cl, cl                               ; 84 c9
-    je near 098dah                            ; 0f 84 99 00
+    je near 0990ah                            ; 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 09d2ch                               ; e8 d6 04
+    call 09d5ch                               ; e8 d6 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne near 098dah                           ; 0f 85 7e 00
+    jne near 0990ah                           ; 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 09d50h                               ; e8 e2 04
+    call 09d80h                               ; 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 098b2h                         ; 77 37
+    jnbe short 098e2h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 097cch                            ; bf cc 97
+    mov di, 097fch                            ; bf fc 97
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-0682dh]               ; 2e 8b 85 d3 97
+    mov ax, word [cs:di-067fdh]               ; 2e 8b 85 03 98
     jmp ax                                    ; ff e0
     mov byte [bp-006h], 010h                  ; c6 46 fa 10
-    jmp short 098b2h                          ; eb 1c
+    jmp short 098e2h                          ; eb 1c
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 098b2h                          ; eb 16
+    jmp short 098e2h                          ; eb 16
     mov byte [bp-006h], 018h                  ; c6 46 fa 18
-    jmp short 098b2h                          ; eb 10
+    jmp short 098e2h                          ; eb 10
     mov byte [bp-006h], 01ch                  ; c6 46 fa 1c
-    jmp short 098b2h                          ; eb 0a
+    jmp short 098e2h                          ; eb 0a
     mov byte [bp-006h], 020h                  ; c6 46 fa 20
-    jmp short 098b2h                          ; eb 04
+    jmp short 098e2h                          ; 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 098dah                           ; 74 19
+    je short 0990ah                           ; 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 09d72h                               ; e8 a3 04
+    call 09da2h                               ; e8 a3 04
     test AL, strict byte 001h                 ; a8 01
-    je short 098dah                           ; 74 07
+    je short 0990ah                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, si                                ; 01 f0
-    call 0967dh                               ; e8 a3 fd
+    call 096adh                               ; e8 a3 fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf98e1 LB 0x39
+apm_out_str_:                                ; 0xf9911 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 098f6h                           ; 74 0a
+    je short 09926h                           ; 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 098eeh                          ; 75 f8
+    jne short 0991eh                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    cmp ax, 00999h                            ; 3d 99 09
-    call far 0996ah:0994fh                    ; 9a 4f 99 6a 99
-    or word [bp+si-0666bh], bx                ; 09 9a 95 99
-    or word [bp+si-06666h], bx                ; 09 9a 9a 99
-    ficomp word [bx+di-06622h]                ; de 99 de 99
-    ficomp word [bx+di-06627h]                ; de 99 d9 99
-    ficomp word [bx+di-06622h]                ; de 99 de 99
-    db  0d2h
+    insw                                      ; 6d
     cwd                                       ; 99
-_apm_function:                               ; 0xf991a LB 0xf5
+    cmp word [bp+si-06681h], bx               ; 39 9a 7f 99
+    call far 0c59ah:03999h                    ; 9a 99 39 9a c5
+    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
+    db  09ah
+    db  002h
+    db  09ah
+_apm_function:                               ; 0xf994a LB 0xf5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14388,23 +14387,23 @@ _apm_function:                               ; 0xf991a 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 099deh                          ; 0f 87 b0 00
+    jnbe near 09a0eh                          ; 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-06704h]                   ; 2e ff a7 fc 98
+    jmp word [cs:bx-066d4h]                   ; 2e ff a7 2c 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 09a09h                           ; e9 ba 00
+    jmp near 09a39h                           ; e9 ba 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
-    mov word [bp+00ch], 09fa4h                ; c7 46 0c a4 9f
+    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 09a09h                           ; e9 9f 00
+    jmp near 09a39h                           ; 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
@@ -14417,43 +14416,43 @@ _apm_function:                               ; 0xf991a LB 0xf5
     sal ebx, 010h                             ; 66 c1 e3 10
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 09a09h                           ; e9 74 00
+    jmp near 09a39h                           ; e9 74 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 09a09h                           ; e9 6f 00
+    jmp near 09a39h                           ; e9 6f 00
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 099bfh                           ; 74 1f
+    je short 099efh                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 099b7h                           ; 74 11
+    je short 099e7h                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 099c7h                          ; 75 1b
+    jne short 099f7h                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d10h                            ; b8 10 0d
-    call 098e1h                               ; e8 2c ff
-    jmp short 09a09h                          ; eb 52
+    call 09911h                               ; e8 2c ff
+    jmp short 09a39h                          ; eb 52
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d18h                            ; b8 18 0d
-    jmp short 099b2h                          ; eb f3
+    jmp short 099e2h                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d20h                            ; b8 20 0d
-    jmp short 099b2h                          ; eb eb
+    jmp short 099e2h                          ; 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 09a09h                          ; eb 37
+    jmp short 09a39h                          ; eb 37
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 09a09h                          ; eb 30
+    jmp short 09a39h                          ; eb 30
     or ah, 080h                               ; 80 cc 80
-    jmp short 099cah                          ; eb ec
+    jmp short 099fah                          ; eb ec
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 b0 7f
+    call 01999h                               ; e8 80 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 e3 7f
+    call 019dah                               ; e8 b3 7f
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -14464,7 +14463,7 @@ _apm_function:                               ; 0xf991a LB 0xf5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_select_reg_:                           ; 0xf9a0f LB 0x24
+pci16_select_reg_:                           ; 0xf9a3f LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14481,7 +14480,7 @@ pci16_select_reg_:                           ; 0xf9a0f LB 0x24
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf9a33 LB 0xf7
+pci16_find_device_:                          ; 0xf9a63 LB 0xf7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14495,49 +14494,49 @@ pci16_find_device_:                          ; 0xf9a33 LB 0xf7
     xor bx, bx                                ; 31 db
     mov byte [bp-008h], 000h                  ; c6 46 f8 00
     test bl, 007h                             ; f6 c3 07
-    jne short 09a7bh                          ; 75 2d
+    jne short 09aabh                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 09a0fh                               ; e8 b9 ff
+    call 09a3fh                               ; 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 09a69h                          ; 75 06
+    jne short 09a99h                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 09afch                           ; e9 93 00
+    jmp near 09b2ch                           ; e9 93 00
     test byte [bp-006h], 080h                 ; f6 46 fa 80
-    je short 09a76h                           ; 74 07
+    je short 09aa6h                           ; 74 07
     mov word [bp-00ah], strict word 00001h    ; c7 46 f6 01 00
-    jmp short 09a7bh                          ; eb 05
+    jmp short 09aabh                          ; 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 09aa3h                          ; 75 1f
+    jne short 09ad3h                          ; 75 1f
     mov ax, bx                                ; 89 d8
     shr ax, 008h                              ; c1 e8 08
     test ax, ax                               ; 85 c0
-    jne short 09aa3h                          ; 75 16
+    jne short 09ad3h                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 09a0fh                               ; e8 7a ff
+    call 09a3fh                               ; 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 09aa3h                          ; 76 03
+    jbe short 09ad3h                          ; 76 03
     mov byte [bp-008h], al                    ; 88 46 f8
     test di, di                               ; 85 ff
-    je short 09aach                           ; 74 05
+    je short 09adch                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 09aaeh                          ; eb 02
+    jmp short 09adeh                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 09a0fh                               ; e8 5c ff
+    call 09a3fh                               ; e8 5c ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -14548,48 +14547,47 @@ pci16_find_device_:                          ; 0xf9a33 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 09addh                           ; 74 0f
+    je short 09b0dh                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 09ad1h                               ; e2 fa
+    loop 09b01h                               ; 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 09aedh                          ; 75 08
+    jne short 09b1dh                          ; 75 08
     mov ax, word [bp-00eh]                    ; 8b 46 f2
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 09af3h                           ; 74 06
+    je short 09b23h                           ; 74 06
     cmp word [bp-010h], strict byte 00000h    ; 83 7e f0 00
-    je short 09af9h                           ; 74 06
+    je short 09b29h                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 09b0bh                           ; 74 12
+    je short 09b3bh                           ; 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 09a49h                           ; 0f 86 3e ff
+    jbe near 09a79h                           ; 0f 86 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 09b14h                          ; 75 04
+    jne short 09b44h                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 09b17h                          ; eb 03
+    jmp short 09b47h                          ; 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
-    or AL, strict byte 09ch                   ; 0c 9c
-    db  026h, 09ch
-    ; es pushfw                                 ; 26 9c
-    cmp word [si-063b2h], bx                  ; 39 9c 4e 9c
-    popaw                                     ; 61
+    cmp AL, strict byte 09ch                  ; 3c 9c
+    push si                                   ; 56
+    pushfw                                    ; 9c
+    imul bx, word [si-06382h], 09c91h         ; 69 9c 7e 9c 91 9c
+    movsb                                     ; a4
     pushfw                                    ; 9c
-    je short 09ac6h                           ; 74 9c
-_pci16_function:                             ; 0xf9b2a LB 0x1d7
+_pci16_function:                             ; 0xf9b5a LB 0x1d7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14603,69 +14601,69 @@ _pci16_function:                             ; 0xf9b2a 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 09b63h                           ; 72 1a
-    jbe short 09bbbh                          ; 76 70
+    jc short 09b93h                           ; 72 1a
+    jbe short 09bebh                          ; 76 70
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je near 09c88h                            ; 0f 84 36 01
+    je near 09cb8h                            ; 0f 84 36 01
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc near 09ccdh                            ; 0f 82 74 01
+    jc near 09cfdh                            ; 0f 82 74 01
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe near 09be0h                           ; 0f 86 80 00
-    jmp near 09ccdh                           ; e9 6a 01
+    jbe near 09c10h                           ; 0f 86 80 00
+    jmp near 09cfdh                           ; e9 6a 01
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 09b8bh                           ; 74 23
+    je short 09bbbh                           ; 74 23
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jne near 09ccdh                           ; 0f 85 5e 01
+    jne near 09cfdh                           ; 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 09cfah                           ; e9 6f 01
+    jmp near 09d2ah                           ; e9 6f 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 09b97h                          ; 75 06
+    jne short 09bc7h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 09cf3h                           ; e9 5c 01
+    jmp near 09d23h                           ; 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 09a33h                               ; e8 8e fe
+    call 09a63h                               ; e8 8e fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09bb5h                          ; 75 0b
+    jne short 09be5h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09cf3h                           ; e9 3e 01
+    jmp near 09d23h                           ; e9 3e 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09cfah                           ; e9 3f 01
+    jmp near 09d2ah                           ; 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 09a33h                               ; e8 69 fe
+    call 09a63h                               ; e8 69 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09bdah                          ; 75 0b
+    jne short 09c0ah                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09cf3h                           ; e9 19 01
+    jmp near 09d23h                           ; e9 19 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09cfah                           ; e9 1a 01
+    jmp near 09d2ah                           ; e9 1a 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 09bedh                           ; 72 06
+    jc short 09c1dh                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 09cf3h                           ; e9 06 01
+    jmp near 09d23h                           ; e9 06 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 09a0fh                               ; e8 19 fe
+    call 09a3fh                               ; 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 09cfah                          ; 0f 87 f5 00
+    jnbe near 09d2ah                          ; 0f 87 f5 00
     add bx, bx                                ; 01 db
-    jmp word [cs:bx-064e2h]                   ; 2e ff a7 1e 9b
+    jmp word [cs:bx-064b2h]                   ; 2e ff a7 4e 9b
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -14676,14 +14674,14 @@ _pci16_function:                             ; 0xf9b2a LB 0x1d7
     ; sub ah, ah                                ; 2a e4
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp near 09cfah                           ; e9 d4 00
+    jmp near 09d2ah                           ; 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 09cfah                           ; e9 c1 00
+    jmp near 09d2ah                           ; e9 c1 00
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -14692,21 +14690,21 @@ _pci16_function:                             ; 0xf9b2a LB 0x1d7
     xchg dx, ax                               ; 92
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp near 09cfah                           ; e9 ac 00
+    jmp near 09d2ah                           ; 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 09cfah                           ; e9 99 00
+    jmp near 09d2ah                           ; 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 09cfah                           ; e9 86 00
+    jmp near 09d2ah                           ; 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
@@ -14715,20 +14713,20 @@ _pci16_function:                             ; 0xf9b2a LB 0x1d7
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09cfah                          ; eb 72
+    jmp short 09d2ah                          ; 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 09caeh                          ; 76 11
+    jbe short 09cdeh                          ; 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 09cc2h                          ; eb 14
+    jmp short 09cf2h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
     mov dx, ds                                ; 8c da
@@ -14740,18 +14738,18 @@ _pci16_function:                             ; 0xf9b2a 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 09cfah                          ; eb 2d
+    jmp short 09d2ah                          ; eb 2d
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01999h                               ; e8 c1 7c
+    call 01999h                               ; e8 91 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 f2 7c
+    call 019dah                               ; e8 c2 7c
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -14763,7 +14761,7 @@ _pci16_function:                             ; 0xf9b2a LB 0x1d7
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf9d01 LB 0x2b
+pci_find_classcode_:                         ; 0xf9d31 LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14778,7 +14776,7 @@ pci_find_classcode_:                         ; 0xf9d01 LB 0x2b
     ; mov cx, dx                                ; 8b ca
     int 01ah                                  ; cd 1a
     cmp ah, 000h                              ; 80 fc 00
-    je near 09d22h                            ; 0f 84 03 00
+    je near 09d52h                            ; 0f 84 03 00
     mov bx, strict word 0ffffh                ; bb ff ff
     mov ax, bx                                ; 89 d8
     lea sp, [bp-006h]                         ; 8d 66 fa
@@ -14787,7 +14785,7 @@ pci_find_classcode_:                         ; 0xf9d01 LB 0x2b
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_byte_:                       ; 0xf9d2c LB 0x24
+pci_read_config_byte_:                       ; 0xf9d5c LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14806,7 +14804,7 @@ pci_read_config_byte_:                       ; 0xf9d2c LB 0x24
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf9d50 LB 0x22
+pci_read_config_word_:                       ; 0xf9d80 LB 0x22
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14825,7 +14823,7 @@ pci_read_config_word_:                       ; 0xf9d50 LB 0x22
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf9d72 LB 0x27
+pci_read_config_dword_:                      ; 0xf9da2 LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14846,7 +14844,7 @@ pci_read_config_dword_:                      ; 0xf9d72 LB 0x27
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf9d99 LB 0x1d
+vds_is_present_:                             ; 0xf9dc9 LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -14854,7 +14852,7 @@ vds_is_present_:                             ; 0xf9d99 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 09db1h                           ; 74 06
+    je short 09de1h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
     pop bx                                    ; 5b
@@ -14863,7 +14861,7 @@ vds_is_present_:                             ; 0xf9d99 LB 0x1d
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf9db6 LB 0x1e
+vds_real_to_lin_:                            ; 0xf9de6 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -14874,7 +14872,7 @@ vds_real_to_lin_:                            ; 0xf9db6 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09dc4h                               ; e2 fa
+    loop 09df4h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -14882,7 +14880,7 @@ vds_real_to_lin_:                            ; 0xf9db6 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9dd4 LB 0x79
+vds_build_sg_list_:                          ; 0xf9e04 LB 0x79
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14896,23 +14894,23 @@ vds_build_sg_list_:                          ; 0xf9dd4 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 09db6h                               ; e8 c3 ff
+    call 09de6h                               ; 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 09d99h                               ; e8 93 ff
+    call 09dc9h                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 09e1dh                           ; 74 13
+    je short 09e4dh                           ; 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 09e1ah                            ; 0f 82 02 00
+    jc near 09e4ah                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 09e44h                          ; eb 27
+    jmp short 09e74h                          ; 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
@@ -14929,21 +14927,21 @@ vds_build_sg_list_:                          ; 0xf9dd4 LB 0x79
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf9e4d LB 0x33
+vds_free_sg_list_:                           ; 0xf9e7d LB 0x33
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 09d99h                               ; e8 42 ff
+    call 09dc9h                               ; e8 42 ff
     test ax, ax                               ; 85 c0
-    je short 09e6eh                           ; 74 13
+    je short 09e9eh                           ; 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 09e6dh                            ; 0f 82 02 00
+    jc near 09e9dh                            ; 0f 82 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
@@ -14955,7 +14953,7 @@ vds_free_sg_list_:                           ; 0xf9e4d LB 0x33
     pop bp                                    ; 5d
     retn                                      ; c3
     times 0x3 db 0
-__U4M:                                       ; 0xf9e80 LB 0x40
+__U4M:                                       ; 0xf9eb0 LB 0x40
     pushfw                                    ; 9c
     push eax                                  ; 66 50
     push edx                                  ; 66 52
@@ -14981,7 +14979,7 @@ __U4M:                                       ; 0xf9e80 LB 0x40
     popfw                                     ; 9d
     retn                                      ; c3
     times 0xf db 0
-__U4D:                                       ; 0xf9ec0 LB 0x40
+__U4D:                                       ; 0xf9ef0 LB 0x40
     pushfw                                    ; 9c
     push eax                                  ; 66 50
     push edx                                  ; 66 52
@@ -15012,27 +15010,27 @@ __U4D:                                       ; 0xf9ec0 LB 0x40
     popfw                                     ; 9d
     retn                                      ; c3
     times 0x7 db 0
-__U8RS:                                      ; 0xf9f00 LB 0x10
+__U8RS:                                      ; 0xf9f30 LB 0x10
     test si, si                               ; 85 f6
-    je short 09f0fh                           ; 74 0b
+    je short 09f3fh                           ; 74 0b
     shr ax, 1                                 ; d1 e8
     rcr bx, 1                                 ; d1 db
     rcr cx, 1                                 ; d1 d9
     rcr dx, 1                                 ; d1 da
     dec si                                    ; 4e
-    jne short 09f04h                          ; 75 f5
+    jne short 09f34h                          ; 75 f5
     retn                                      ; c3
-__U8LS:                                      ; 0xf9f10 LB 0x10
+__U8LS:                                      ; 0xf9f40 LB 0x10
     test si, si                               ; 85 f6
-    je short 09f1fh                           ; 74 0b
+    je short 09f4fh                           ; 74 0b
     sal dx, 1                                 ; d1 e2
     rcl cx, 1                                 ; d1 d1
     rcl bx, 1                                 ; d1 d3
     rcl ax, 1                                 ; d1 d0
     dec si                                    ; 4e
-    jne short 09f14h                          ; 75 f5
+    jne short 09f44h                          ; 75 f5
     retn                                      ; c3
-_fmemset_:                                   ; 0xf9f20 LB 0x10
+_fmemset_:                                   ; 0xf9f50 LB 0x10
     push di                                   ; 57
     mov es, dx                                ; 8e c2
     db  08bh, 0f8h
@@ -15043,7 +15041,7 @@ _fmemset_:                                   ; 0xf9f20 LB 0x10
     pop di                                    ; 5f
     retn                                      ; c3
     times 0x3 db 0
-_fmemcpy_:                                   ; 0xf9f30 LB 0x3a
+_fmemcpy_:                                   ; 0xf9f60 LB 0x3a
     push bp                                   ; 55
     db  08bh, 0ech
     ; mov bp, sp                                ; 8b ec
@@ -15068,17 +15066,19 @@ _fmemcpy_:                                   ; 0xf9f30 LB 0x3a
     add byte [bx+si], al                      ; 00 00
     add byte [bx+si], al                      ; 00 00
     add byte [bx+si], al                      ; 00 00
-    sbb byte [bx-0607eh], 086h                ; 80 9f 82 9f 86
+    mov AL, strict byte 09fh                  ; b0 9f
+    mov DL, strict byte 09fh                  ; b2 9f
+    mov DH, strict byte 09fh                  ; b6 9f
+    mov DH, strict byte 09fh                  ; b6 9f
+    mov DH, strict byte 09fh                  ; b6 9f
+    mov ax, 0b89fh                            ; b8 9f b8
     lahf                                      ; 9f
-    xchg byte [bx-0607ah], bl                 ; 86 9f 86 9f
-    mov byte [bx-06078h], bl                  ; 88 9f 88 9f
-    mov bl, byte [bx-06072h]                  ; 8a 9f 8e 9f
-    mov ds, [bx-06070h]                       ; 8e 9f 90 9f
-    xchg bp, ax                               ; 95
+    mov dx, 0be9fh                            ; ba 9f be
     lahf                                      ; 9f
-    xchg di, ax                               ; 97
+    mov si, 0c09fh                            ; be 9f c0
     lahf                                      ; 9f
-apm_worker:                                  ; 0xf9f6a LB 0x3a
+    lds bx, [bx-06039h]                       ; c5 9f c7 9f
+apm_worker:                                  ; 0xf9f9a LB 0x3a
     sti                                       ; fb
     push ax                                   ; 50
     db  032h, 0e4h
@@ -15090,29 +15090,29 @@ apm_worker:                                  ; 0xf9f6a LB 0x3a
     cmp AL, strict byte 00dh                  ; 3c 0d
     pop ax                                    ; 58
     mov AH, strict byte 053h                  ; b4 53
-    jnc short 09fa0h                          ; 73 25
-    jmp word [cs:bp-060b0h]                   ; 2e ff a6 50 9f
-    jmp short 09f9eh                          ; eb 1c
+    jnc short 09fd0h                          ; 73 25
+    jmp word [cs:bp-06080h]                   ; 2e ff a6 80 9f
+    jmp short 09fceh                          ; eb 1c
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 09f9eh                          ; eb 18
-    jmp short 09f9eh                          ; eb 16
-    jmp short 09fa0h                          ; eb 16
+    jmp short 09fceh                          ; eb 18
+    jmp short 09fceh                          ; eb 16
+    jmp short 09fd0h                          ; eb 16
     mov AH, strict byte 080h                  ; b4 80
-    jmp short 09fa2h                          ; eb 14
-    jmp short 09fa0h                          ; eb 10
+    jmp short 09fd2h                          ; eb 14
+    jmp short 09fd0h                          ; eb 10
     mov ax, 00102h                            ; b8 02 01
-    jmp short 09f9eh                          ; eb 09
-    jmp short 09f9eh                          ; eb 07
+    jmp short 09fceh                          ; eb 09
+    jmp short 09fceh                          ; eb 07
     mov BL, strict byte 000h                  ; b3 00
     mov cx, strict word 00000h                ; b9 00 00
-    jmp short 09f9eh                          ; eb 00
+    jmp short 09fceh                          ; eb 00
     clc                                       ; f8
     retn                                      ; c3
     mov AH, strict byte 009h                  ; b4 09
     stc                                       ; f9
     retn                                      ; c3
-apm_pm16_entry:                              ; 0xf9fa4 LB 0x11
+apm_pm16_entry:                              ; 0xf9fd4 LB 0x11
     mov AH, strict byte 002h                  ; b4 02
     push DS                                   ; 1e
     push bp                                   ; 55
@@ -15120,13 +15120,13 @@ apm_pm16_entry:                              ; 0xf9fa4 LB 0x11
     pop bp                                    ; 5d
     add bp, strict byte 00008h                ; 83 c5 08
     mov ds, bp                                ; 8e dd
-    call 09f6ah                               ; e8 b8 ff
+    call 09f9ah                               ; e8 b8 ff
     pop bp                                    ; 5d
     pop DS                                    ; 1f
     retf                                      ; cb
 
-  ; Padding 0x3a4b bytes at 0xf9fb5
-  times 14923 db 0
+  ; Padding 0x3a1b bytes at 0xf9fe5
+  times 14875 db 0
 
 section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
 bios32_service:                              ; 0xfda00 LB 0x26
@@ -15173,7 +15173,7 @@ apm_pm32_entry:                              ; 0xfda40 LB 0x21
     pop bp                                    ; 5d
     add bp, strict byte 00008h                ; 83 c5 08
     push ebp                                  ; 66 55
-    mov bp, 09fa6h                            ; bd a6 9f
+    mov bp, 09fd6h                            ; bd d6 9f
     add byte [bx+si], al                      ; 00 00
     push ebp                                  ; 66 55
     mov AH, strict byte 003h                  ; b4 03
@@ -15785,7 +15785,7 @@ normal_post:                                 ; 0xfe0c6 LB 0x1f6
     mov ax, 0c000h                            ; b8 00 c0
     mov dx, 0c800h                            ; ba 00 c8
     call 01600h                               ; e8 e1 33
-    call 04eb4h                               ; e8 92 6c
+    call 04ee4h                               ; e8 c2 6c
     pop DS                                    ; 1f
     mov ax, 0ff53h                            ; b8 53 ff
     mov word [0003ch], ax                     ; a3 3c 00
@@ -15906,8 +15906,8 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xc4
     popad                                     ; 66 61
     call 01d17h                               ; e8 d4 39
     call 021a4h                               ; e8 5e 3e
-    call 097e3h                               ; e8 9a b4
-    call 086c7h                               ; e8 7b a3
+    call 09813h                               ; e8 ca b4
+    call 086f7h                               ; e8 ab a3
     call 0ed2fh                               ; e8 e0 09
     call 0e2d2h                               ; e8 80 ff
     push CS                                   ; 0e
@@ -15917,7 +15917,7 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xc4
     mov dx, 0f000h                            ; ba 00 f0
     call 01600h                               ; e8 a2 32
     call 017ffh                               ; e8 9e 34
-    call 03b98h                               ; e8 34 58
+    call 03bc8h                               ; e8 64 58
     sti                                       ; fb
     int 019h                                  ; cd 19
     sti                                       ; fb
@@ -16019,7 +16019,7 @@ biosorg_check_at_0E739h:                     ; 0xfe739 LB 0x1a
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 063c9h                               ; e8 87 7c
+    call 063f9h                               ; e8 b7 7c
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -16095,7 +16095,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 056bfh                               ; e8 7d 6e
+    call 056efh                               ; e8 ad 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16112,7 +16112,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 056bfh                               ; e8 5f 6e
+    call 056efh                               ; e8 8f 6e
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16211,7 +16211,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 051b7h                               ; e8 ee 67
+    call 051e7h                               ; e8 1e 68
     pop ES                                    ; 07
     popaw                                     ; 61
     pop DS                                    ; 1f
@@ -16227,7 +16227,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x5c
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06e92h                               ; e8 b3 84
+    call 06ec2h                               ; e8 e3 84
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -16249,16 +16249,16 @@ int13_relocated:                             ; 0xfec5b LB 0x55
     pop DS                                    ; 1f
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 03bdch                           ; e9 6b 4f
+    jmp near 03c0ch                           ; e9 9b 4f
     push ES                                   ; 06
     push ax                                   ; 50
     push bx                                   ; 53
     push cx                                   ; 51
     push dx                                   ; 52
-    call 03bb0h                               ; e8 37 4f
+    call 03be0h                               ; e8 67 4f
     cmp AL, strict byte 000h                  ; 3c 00
     je short 0ecabh                           ; 74 2e
-    call 03bc6h                               ; e8 46 4f
+    call 03bf6h                               ; e8 76 4f
     pop dx                                    ; 5a
     push dx                                   ; 52
     db  03ah, 0c2h
@@ -16276,7 +16276,7 @@ int13_relocated:                             ; 0xfec5b LB 0x55
     pop DS                                    ; 1f
     cld                                       ; fc
     push 0ece9h                               ; 68 e9 ec
-    jmp near 041b0h                           ; e9 19 55
+    jmp near 041e0h                           ; e9 49 55
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
     ; cmp al, dl                                ; 3a c2
@@ -16316,22 +16316,22 @@ int13_legacy:                                ; 0xfecb4 LB 0x14
     test dl, 080h                             ; f6 c2 80
     jne short 0ecc8h                          ; 75 06
     push 0ece9h                               ; 68 e9 ec
-    jmp near 0326bh                           ; e9 a3 45
+    jmp near 03288h                           ; e9 c0 45
 int13_notfloppy:                             ; 0xfecc8 LB 0x14
     cmp dl, 0e0h                              ; 80 fa e0
     jc short 0ecdch                           ; 72 0f
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 045e4h                               ; e8 0f 59
+    call 04614h                               ; e8 3f 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 05a8bh                               ; e8 a7 6d
+    call 05abbh                               ; e8 d7 6d
     jmp short 0ece9h                          ; eb 03
-    call 05ed5h                               ; e8 ec 71
+    call 05f05h                               ; e8 1c 72
 int13_out:                                   ; 0xfece9 LB 0x4
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -16547,7 +16547,7 @@ int17_handler:                               ; 0xfefd4 LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0780dh                               ; e8 30 88
+    call 0783dh                               ; e8 60 88
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
@@ -16598,28 +16598,28 @@ int19_relocated:                             ; 0xff0ac LB 0x8f
     ; mov bp, sp                                ; 8b ec
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 04c4bh                               ; e8 7b 5b
+    call 04c7bh                               ; e8 ab 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 04c4bh                               ; e8 6e 5b
+    call 04c7bh                               ; e8 9e 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 04c4bh                               ; e8 61 5b
+    call 04c7bh                               ; e8 91 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 04c4bh                               ; e8 54 5b
+    call 04c7bh                               ; e8 84 5b
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
@@ -16902,7 +16902,7 @@ int15_handler:                               ; 0xff859 LB 0x40
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06ce7h                               ; e8 80 74
+    call 06d17h                               ; e8 b0 74
     pop DS                                    ; 1f
     pop ES                                    ; 07
     popaw                                     ; 61
@@ -16924,20 +16924,20 @@ int15_handler:                               ; 0xff859 LB 0x40
     je short 0f894h                           ; 74 0e
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f899h                           ; 74 0e
-    call 0661bh                               ; e8 8d 6d
+    call 0664bh                               ; e8 bd 6d
     popaw                                     ; 61
     pop ES                                    ; 07
     pop DS                                    ; 1f
     popfw                                     ; 9d
     jmp short 0f8a7h                          ; eb 13
-    call 0991ah                               ; e8 83 a0
+    call 0994ah                               ; e8 b3 a0
     jmp short 0f88eh                          ; eb f5
 int15_handler_mouse:                         ; 0xff899 LB 0x5
-    call 07482h                               ; e8 e6 7b
+    call 074b2h                               ; e8 16 7c
     jmp short 0f88eh                          ; eb f0
 int15_handler32:                             ; 0xff89e LB 0x9
     pushad                                    ; 66 60
-    call 06951h                               ; e8 ae 70
+    call 06981h                               ; e8 de 70
     popad                                     ; 66 61
     jmp short 0f88fh                          ; eb e8
 iret_modify_cf:                              ; 0xff8a7 LB 0x14
@@ -16969,7 +16969,7 @@ int74_handler:                               ; 0xff8bb LB 0x2b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 073b8h                               ; e8 ec 7a
+    call 073e8h                               ; e8 1c 7b
     pop cx                                    ; 59
     jcxz 0f8dbh                               ; e3 0c
     push strict byte 00000h                   ; 6a 00
@@ -17001,7 +17001,7 @@ int70_handler:                               ; 0xff8f8 LB 0xd
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07070h                               ; e8 6f 77
+    call 070a0h                               ; e8 9f 77
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17083,7 +17083,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0x21
     pop DS                                    ; 1f
     cld                                       ; fc
     pushad                                    ; 66 60
-    call 09b2ah                               ; e8 ad 9c
+    call 09b5ah                               ; e8 dd 9c
     popad                                     ; 66 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17094,7 +17094,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0x21
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0712eh                               ; e8 a3 72
+    call 0715eh                               ; e8 d3 72
     popaw                                     ; 61
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17197,4 +17197,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, 028h
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fch, 01ah
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
index 9d3f180..84c45ad 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative386.md5sum
@@ -1 +1 @@
-65f585c99598acfc494c013e1f0a0ee3 *VBoxPcBios386.rom
+c003d8ab6825d254dea0b1d1e4ed4da7 *VBoxPcBios386.rom
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.asm
index 0dc63ae..5e6d1c4 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, 082h, 081h, 01dh, 091h
+    db  000h, 000h, 000h, 000h, 000h, 000h, 0a1h, 02bh, 0c8h, 081h, 063h, 091h
 _softrst:                                    ; 0xf0076 LB 0xc
-    db  000h, 000h, 000h, 000h, 000h, 000h, 02ch, 02eh, 0bdh, 03bh, 0bdh, 03bh
+    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  0b0h, 07fh, 099h, 080h, 0ebh, 08fh, 095h, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 05fh, 033h
+    db  0f6h, 07fh, 0dfh, 080h, 031h, 090h, 0dbh, 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.0', 000h, 000h
+    db  'VirtualBox 5.1.2', 000h, 000h
 _bios_prefix_string:                         ; 0xf0da0 LB 0x8
     db  'BIOS: ', 000h, 000h
 _isotag:                                     ; 0xf0da8 LB 0x6
@@ -1189,7 +1189,7 @@ _panic_msg_keyb_buffer_full:                 ; 0xf1168 LB 0x20
   ; Padding 0x478 bytes at 0xf1188
   times 1144 db 0
 
-section _TEXT progbits vstart=0x1600 align=1 ; size=0x8d98 class=CODE group=AUTO
+section _TEXT progbits vstart=0x1600 align=1 ; size=0x8dd8 class=CODE group=AUTO
 rom_scan_:                                   ; 0xf1600 LB 0x52
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -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 07b54h                               ; e8 91 63
+    call 07b9ah                               ; e8 d7 63
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
@@ -1595,7 +1595,7 @@ put_luint_:                                  ; 0xf18c3 LB 0x70
     mov dx, cx                                ; 89 ca
     mov bx, strict word 0000ah                ; bb 0a 00
     xor cx, cx                                ; 31 c9
-    call 0a030h                               ; e8 53 87
+    call 0a070h                               ; e8 93 87
     mov word [bp-008h], ax                    ; 89 46 f8
     mov cx, dx                                ; 89 d1
     mov dx, ax                                ; 89 c2
@@ -1832,7 +1832,7 @@ bios_printf_:                                ; 0xf1976 LB 0x34f
     mov cx, word [bp-024h]                    ; 8b 4e dc
     mov dx, word [bp-026h]                    ; 8b 56 da
     mov si, word [bp-01eh]                    ; 8b 76 e2
-    call 0a060h                               ; e8 48 85
+    call 0a0a0h                               ; e8 88 85
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
     and AL, strict byte 00fh                  ; 24 0f
@@ -2293,7 +2293,7 @@ ata_cmd_data_in_:                            ; 0xf1e9d LB 0x2b7
     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 0a060h                               ; e8 ce 80
+    call 0a0a0h                               ; e8 0e 81
     xor dh, dh                                ; 30 f6
     mov word [bp-014h], dx                    ; 89 56 ec
     mov bx, word [bp-016h]                    ; 8b 5e ea
@@ -2303,7 +2303,7 @@ ata_cmd_data_in_:                            ; 0xf1e9d LB 0x2b7
     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 0a060h                               ; e8 ae 80
+    call 0a0a0h                               ; e8 ee 80
     mov bx, dx                                ; 89 d3
     mov word [bp-010h], dx                    ; 89 56 f0
     mov ax, word [bp-01ch]                    ; 8b 46 e4
@@ -2335,7 +2335,7 @@ ata_cmd_data_in_:                            ; 0xf1e9d LB 0x2b7
     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 0a060h                               ; e8 5b 80
+    call 0a0a0h                               ; e8 9b 80
     mov word [bp-010h], dx                    ; 89 56 f0
     mov bx, word [bp-016h]                    ; 8b 5e ea
     mov ax, word [es:bx+006h]                 ; 26 8b 47 06
@@ -2344,7 +2344,7 @@ ata_cmd_data_in_:                            ; 0xf1e9d LB 0x2b7
     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 0a060h                               ; e8 3d 80
+    call 0a0a0h                               ; e8 7d 80
     mov bl, dl                                ; 88 d3
     and bl, 00fh                              ; 80 e3 0f
     or bl, 040h                               ; 80 cb 40
@@ -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 05b09h                               ; e8 08 37
+    call 05b4fh                               ; e8 4e 37
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
@@ -2922,7 +2922,7 @@ _ata_detect:                                 ; 0xf2154 LB 0x6a3
     mov cx, word [es:di+038h]                 ; 26 8b 4d 38
     mov dx, word [es:di+036h]                 ; 26 8b 55 36
     mov si, strict word 0000bh                ; be 0b 00
-    call 0a060h                               ; e8 61 7a
+    call 0a0a0h                               ; e8 a1 7a
     mov word [bp-02ah], dx                    ; 89 56 d6
     mov word [bp-026h], cx                    ; 89 4e da
     mov dh, byte [bp-001c7h]                  ; 8a b6 39 fe
@@ -3214,7 +3214,7 @@ ata_cmd_data_out_:                           ; 0xf27f7 LB 0x28e
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov dx, word [bp-022h]                    ; 8b 56 de
     mov si, strict word 00018h                ; be 18 00
-    call 0a060h                               ; e8 84 77
+    call 0a0a0h                               ; e8 c4 77
     xor dh, dh                                ; 30 f6
     mov word [bp-014h], dx                    ; 89 56 ec
     mov ax, word [bp-00ch]                    ; 8b 46 f4
@@ -3222,7 +3222,7 @@ ata_cmd_data_out_:                           ; 0xf27f7 LB 0x28e
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov dx, word [bp-022h]                    ; 8b 56 de
     mov si, strict word 00020h                ; be 20 00
-    call 0a060h                               ; e8 6d 77
+    call 0a0a0h                               ; e8 ad 77
     mov bx, dx                                ; 89 d3
     mov word [bp-024h], dx                    ; 89 56 dc
     mov ax, word [bp-01ah]                    ; 8b 46 e6
@@ -3256,14 +3256,14 @@ ata_cmd_data_out_:                           ; 0xf27f7 LB 0x28e
     mov cx, word [bp-010h]                    ; 8b 4e f0
     mov dx, word [bp-022h]                    ; 8b 56 de
     mov si, strict word 00008h                ; be 08 00
-    call 0a060h                               ; e8 19 77
+    call 0a0a0h                               ; e8 59 77
     mov word [bp-00ch], ax                    ; 89 46 f4
     mov word [bp-020h], bx                    ; 89 5e e0
     mov word [bp-010h], cx                    ; 89 4e f0
     mov word [bp-022h], dx                    ; 89 56 de
     mov word [bp-024h], dx                    ; 89 56 dc
     mov si, strict word 00010h                ; be 10 00
-    call 0a060h                               ; e8 04 77
+    call 0a0a0h                               ; e8 44 77
     mov word [bp-022h], dx                    ; 89 56 de
     mov ax, dx                                ; 89 d0
     xor ah, dh                                ; 30 f4
@@ -3944,19 +3944,21 @@ floppy_wait_for_interrupt_or_timeout_:       ; 0xf2f20 LB 0x47
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_reset_controller_:                    ; 0xf2f67 LB 0x28
+floppy_reset_controller_:                    ; 0xf2f67 LB 0x46
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
+    push cx                                   ; 51
     push dx                                   ; 52
+    mov bx, ax                                ; 89 c3
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    mov bx, ax                                ; 89 c3
+    mov cx, ax                                ; 89 c1
     and AL, strict byte 0fbh                  ; 24 fb
     out DX, AL                                ; ee
-    mov al, bl                                ; 88 d8
+    mov al, cl                                ; 88 c8
     or AL, strict byte 004h                   ; 0c 04
     out DX, AL                                ; ee
     mov dx, 003f4h                            ; ba f4 03
@@ -3965,13 +3967,24 @@ floppy_reset_controller_:                    ; 0xf2f67 LB 0x28
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02f7ch                          ; 75 f4
-    lea sp, [bp-004h]                         ; 8d 66 fc
+    jne short 02f7fh                          ; 75 f4
+    lea cx, [bx+00090h]                       ; 8d 8f 90 00
+    mov dx, cx                                ; 89 ca
+    mov ax, strict word 00040h                ; b8 40 00
+    call 01652h                               ; e8 bb e6
+    and AL, strict byte 0efh                  ; 24 ef
+    xor ah, ah                                ; 30 e4
+    mov bx, ax                                ; 89 c3
+    mov dx, cx                                ; 89 ca
+    mov ax, strict word 00040h                ; b8 40 00
+    call 01660h                               ; e8 bb e6
+    lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
+    pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_prepare_controller_:                  ; 0xf2f8f LB 0x84
+floppy_prepare_controller_:                  ; 0xf2fad LB 0x84
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -3981,13 +3994,13 @@ floppy_prepare_controller_:                  ; 0xf2f8f LB 0x84
     mov cx, ax                                ; 89 c1
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 b1 e6
+    call 01652h                               ; e8 93 e6
     and AL, strict byte 07fh                  ; 24 7f
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 b0 e6
+    call 01660h                               ; e8 92 e6
     mov dx, 003f2h                            ; ba f2 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -3995,9 +4008,9 @@ floppy_prepare_controller_:                  ; 0xf2f8f LB 0x84
     and AL, strict byte 004h                  ; 24 04
     mov byte [bp-008h], al                    ; 88 46 f8
     test cx, cx                               ; 85 c9
-    je short 02fc3h                           ; 74 04
+    je short 02fe1h                           ; 74 04
     mov AL, strict byte 020h                  ; b0 20
-    jmp short 02fc5h                          ; eb 02
+    jmp short 02fe3h                          ; eb 02
     mov AL, strict byte 010h                  ; b0 10
     or AL, strict byte 00ch                   ; 0c 0c
     or al, cl                                 ; 08 c8
@@ -4006,10 +4019,10 @@ floppy_prepare_controller_:                  ; 0xf2f8f LB 0x84
     mov bx, strict word 00025h                ; bb 25 00
     mov dx, strict word 00040h                ; ba 40 00
     mov ax, dx                                ; 89 d0
-    call 01660h                               ; e8 88 e6
+    call 01660h                               ; e8 6a e6
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 71 e6
+    call 01652h                               ; e8 53 e6
     mov CL, strict byte 006h                  ; b1 06
     shr al, CL                                ; d2 e8
     mov dx, 003f7h                            ; ba f7 03
@@ -4020,22 +4033,22 @@ floppy_prepare_controller_:                  ; 0xf2f8f LB 0x84
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    jne short 02fe9h                          ; 75 f4
+    jne short 03007h                          ; 75 f4
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 0300bh                          ; 75 10
-    call 02effh                               ; e8 01 ff
+    jne short 03029h                          ; 75 10
+    call 02effh                               ; e8 e3 fe
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 55 e6
+    call 01660h                               ; e8 37 e6
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_known_:                         ; 0xf3013 LB 0x46
+floppy_media_known_:                         ; 0xf3031 LB 0x46
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -4044,26 +4057,26 @@ floppy_media_known_:                         ; 0xf3013 LB 0x46
     mov bx, ax                                ; 89 c3
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 2e e6
+    call 01652h                               ; e8 10 e6
     mov ah, al                                ; 88 c4
     test bx, bx                               ; 85 db
-    je short 0302ch                           ; 74 02
+    je short 0304ah                           ; 74 02
     shr al, 1                                 ; d0 e8
     and AL, strict byte 001h                  ; 24 01
-    jne short 03034h                          ; 75 04
+    jne short 03052h                          ; 75 04
     xor ah, ah                                ; 30 e4
-    jmp short 03051h                          ; eb 1d
+    jmp short 0306fh                          ; eb 1d
     mov dx, 00090h                            ; ba 90 00
     test bx, bx                               ; 85 db
-    je short 0303eh                           ; 74 03
+    je short 0305ch                           ; 74 03
     mov dx, 00091h                            ; ba 91 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 0e e6
+    call 01652h                               ; e8 f0 e5
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 004h                  ; b1 04
     sar ax, CL                                ; d3 f8
     and AL, strict byte 001h                  ; 24 01
-    je short 03030h                           ; 74 e2
+    je short 0304eh                           ; 74 e2
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -4071,7 +4084,7 @@ floppy_media_known_:                         ; 0xf3013 LB 0x46
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_read_id_:                             ; 0xf3059 LB 0x44
+floppy_read_id_:                             ; 0xf3077 LB 0x44
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -4079,28 +4092,28 @@ floppy_read_id_:                             ; 0xf3059 LB 0x44
     push si                                   ; 56
     sub sp, strict byte 00008h                ; 83 ec 08
     mov bx, ax                                ; 89 c3
-    call 02f8fh                               ; e8 28 ff
+    call 02fadh                               ; e8 28 ff
     mov AL, strict byte 04ah                  ; b0 4a
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02effh                               ; e8 8c fe
+    call 02effh                               ; e8 6e fe
     xor si, si                                ; 31 f6
-    jmp short 0307ch                          ; eb 05
+    jmp short 0309ah                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03088h                          ; 7d 0c
+    jnl short 030a6h                          ; 7d 0c
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+si-00eh], al                 ; 88 42 f2
     inc si                                    ; 46
-    jmp short 03077h                          ; eb ef
+    jmp short 03095h                          ; eb ef
     test byte [bp-00eh], 0c0h                 ; f6 46 f2 c0
-    je short 03092h                           ; 74 04
+    je short 030b0h                           ; 74 04
     xor ax, ax                                ; 31 c0
-    jmp short 03095h                          ; eb 03
+    jmp short 030b3h                          ; eb 03
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop si                                    ; 5e
@@ -4108,37 +4121,37 @@ floppy_read_id_:                             ; 0xf3059 LB 0x44
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_recal_:                         ; 0xf309d LB 0x4d
+floppy_drive_recal_:                         ; 0xf30bb LB 0x4d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push cx                                   ; 51
     push dx                                   ; 52
     mov bx, ax                                ; 89 c3
-    call 02f8fh                               ; e8 e7 fe
+    call 02fadh                               ; e8 e7 fe
     mov AL, strict byte 007h                  ; b0 07
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
     mov al, bl                                ; 88 d8
     out DX, AL                                ; ee
-    call 02effh                               ; e8 4b fe
+    call 02effh                               ; e8 2d fe
     test bx, bx                               ; 85 db
-    je short 030c2h                           ; 74 0a
+    je short 030e0h                           ; 74 0a
     mov bl, al                                ; 88 c3
     or bl, 002h                               ; 80 cb 02
     mov cx, 00095h                            ; b9 95 00
-    jmp short 030cah                          ; eb 08
+    jmp short 030e8h                          ; eb 08
     mov bl, al                                ; 88 c3
     or bl, 001h                               ; 80 cb 01
     mov cx, 00094h                            ; b9 94 00
     xor bh, bh                                ; 30 ff
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 8b e5
+    call 01660h                               ; e8 6d e5
     xor bx, bx                                ; 31 db
     mov dx, cx                                ; 89 ca
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 81 e5
+    call 01660h                               ; e8 63 e5
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -4146,7 +4159,7 @@ floppy_drive_recal_:                         ; 0xf309d LB 0x4d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_media_sense_:                         ; 0xf30ea LB 0xfa
+floppy_media_sense_:                         ; 0xf3108 LB 0xfa
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -4155,52 +4168,52 @@ floppy_media_sense_:                         ; 0xf30ea LB 0xfa
     push si                                   ; 56
     push di                                   ; 57
     mov di, ax                                ; 89 c7
-    call 0309dh                               ; e8 a6 ff
+    call 030bbh                               ; e8 a6 ff
     test ax, ax                               ; 85 c0
-    jne short 03100h                          ; 75 05
+    jne short 0311eh                          ; 75 05
     xor cx, cx                                ; 31 c9
-    jmp near 031d8h                           ; e9 d8 00
+    jmp near 031f6h                           ; e9 d8 00
     mov ax, strict word 00010h                ; b8 10 00
-    call 016aeh                               ; e8 a8 e5
+    call 016aeh                               ; e8 8a e5
     test di, di                               ; 85 ff
-    jne short 03112h                          ; 75 08
+    jne short 03130h                          ; 75 08
     mov CL, strict byte 004h                  ; b1 04
     shr al, CL                                ; d2 e8
     mov cl, al                                ; 88 c1
-    jmp short 03117h                          ; eb 05
+    jmp short 03135h                          ; eb 05
     mov cl, al                                ; 88 c1
     and cl, 00fh                              ; 80 e1 0f
     cmp cl, 001h                              ; 80 f9 01
-    jne short 03125h                          ; 75 09
+    jne short 03143h                          ; 75 09
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 015h                  ; b5 15
     mov si, strict word 00001h                ; be 01 00
-    jmp short 03163h                          ; eb 3e
+    jmp short 03181h                          ; eb 3e
     cmp cl, 002h                              ; 80 f9 02
-    jne short 03130h                          ; 75 06
+    jne short 0314eh                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 035h                  ; b5 35
-    jmp short 03120h                          ; eb f0
+    jmp short 0313eh                          ; eb f0
     cmp cl, 003h                              ; 80 f9 03
-    jne short 0313bh                          ; 75 06
+    jne short 03159h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 03120h                          ; eb e5
+    jmp short 0313eh                          ; eb e5
     cmp cl, 004h                              ; 80 f9 04
-    jne short 03146h                          ; 75 06
+    jne short 03164h                          ; 75 06
     xor cl, cl                                ; 30 c9
     mov CH, strict byte 017h                  ; b5 17
-    jmp short 03120h                          ; eb da
+    jmp short 0313eh                          ; eb da
     cmp cl, 005h                              ; 80 f9 05
-    jne short 03151h                          ; 75 06
+    jne short 0316fh                          ; 75 06
     mov CL, strict byte 0cch                  ; b1 cc
     mov CH, strict byte 0d7h                  ; b5 d7
-    jmp short 03120h                          ; eb cf
+    jmp short 0313eh                          ; eb cf
     cmp cl, 00eh                              ; 80 f9 0e
-    je short 0315bh                           ; 74 05
+    je short 03179h                           ; 74 05
     cmp cl, 00fh                              ; 80 f9 0f
-    jne short 0315dh                          ; 75 02
-    jmp short 0314bh                          ; eb ee
+    jne short 0317bh                          ; 75 02
+    jmp short 03169h                          ; eb ee
     xor cl, cl                                ; 30 c9
     xor ch, ch                                ; 30 ed
     xor si, si                                ; 31 f6
@@ -4209,51 +4222,51 @@ floppy_media_sense_:                         ; 0xf30ea LB 0xfa
     mov bx, ax                                ; 89 c3
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 ee e4
+    call 01660h                               ; e8 d0 e4
     mov ax, di                                ; 89 f8
-    call 03059h                               ; e8 e2 fe
+    call 03077h                               ; e8 e2 fe
     test ax, ax                               ; 85 c0
-    jne short 031adh                          ; 75 32
+    jne short 031cbh                          ; 75 32
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 080h                  ; 3c 80
-    je short 031adh                           ; 74 2a
+    je short 031cbh                           ; 74 2a
     mov al, cl                                ; 88 c8
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 0319ah                           ; 74 0f
+    je short 031b8h                           ; 74 0f
     mov ah, cl                                ; 88 cc
     and ah, 03fh                              ; 80 e4 3f
     cmp AL, strict byte 040h                  ; 3c 40
-    je short 031a6h                           ; 74 12
+    je short 031c4h                           ; 74 12
     test al, al                               ; 84 c0
-    je short 0319fh                           ; 74 07
-    jmp short 03163h                          ; eb c9
+    je short 031bdh                           ; 74 07
+    jmp short 03181h                          ; eb c9
     and cl, 03fh                              ; 80 e1 3f
-    jmp short 03163h                          ; eb c4
+    jmp short 03181h                          ; eb c4
     mov cl, ah                                ; 88 e1
     or cl, 040h                               ; 80 c9 40
-    jmp short 03163h                          ; eb bd
+    jmp short 03181h                          ; eb bd
     mov cl, ah                                ; 88 e1
     or cl, 080h                               ; 80 c9 80
-    jmp short 03163h                          ; eb b6
+    jmp short 03181h                          ; eb b6
     test di, di                               ; 85 ff
-    jne short 031b6h                          ; 75 05
+    jne short 031d4h                          ; 75 05
     mov di, 00090h                            ; bf 90 00
-    jmp short 031b9h                          ; eb 03
+    jmp short 031d7h                          ; eb 03
     mov di, 00091h                            ; bf 91 00
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, 0008bh                            ; ba 8b 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 98 e4
+    call 01660h                               ; e8 7a e4
     mov al, ch                                ; 88 e8
     xor ah, ah                                ; 30 e4
     mov bx, ax                                ; 89 c3
     mov dx, di                                ; 89 fa
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 8a e4
+    call 01660h                               ; e8 6c e4
     mov cx, si                                ; 89 f1
     mov ax, cx                                ; 89 c8
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -4264,31 +4277,31 @@ floppy_media_sense_:                         ; 0xf30ea LB 0xfa
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-floppy_drive_exists_:                        ; 0xf31e4 LB 0x2b
+floppy_drive_exists_:                        ; 0xf3202 LB 0x2b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     push dx                                   ; 52
     mov dx, ax                                ; 89 c2
     mov ax, strict word 00010h                ; b8 10 00
-    call 016aeh                               ; e8 bd e4
+    call 016aeh                               ; e8 9f e4
     test dx, dx                               ; 85 d2
-    jne short 031fbh                          ; 75 06
+    jne short 03219h                          ; 75 06
     mov CL, strict byte 004h                  ; b1 04
     shr al, CL                                ; d2 e8
-    jmp short 031fdh                          ; eb 02
+    jmp short 0321bh                          ; eb 02
     and AL, strict byte 00fh                  ; 24 0f
     test al, al                               ; 84 c0
-    je short 03206h                           ; 74 05
+    je short 03224h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 03208h                          ; eb 02
+    jmp short 03226h                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop dx                                    ; 5a
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_diskette_function:                    ; 0xf320f LB 0x97c
+_int13_diskette_function:                    ; 0xf322d LB 0x9a4
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -4296,168 +4309,175 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     sub sp, strict byte 00018h                ; 83 ec 18
     mov bl, byte [bp+017h]                    ; 8a 5e 17
     xor bh, bh                                ; 30 ff
-    mov byte [bp-010h], bl                    ; 88 5e f0
+    mov cl, bl                                ; 88 d9
     mov si, word [bp+016h]                    ; 8b 76 16
     and si, 000ffh                            ; 81 e6 ff 00
     mov al, byte [bp+00eh]                    ; 8a 46 0e
-    mov cl, byte [bp+014h]                    ; 8a 4e 14
+    mov dl, byte [bp+014h]                    ; 8a 56 14
+    mov byte [bp-010h], dl                    ; 88 56 f0
     mov ch, byte [bp+016h]                    ; 8a 6e 16
     mov dl, byte [bp+015h]                    ; 8a 56 15
-    mov byte [bp-014h], dl                    ; 88 56 ec
-    mov byte [bp-013h], bh                    ; 88 7e ed
-    mov dx, word [bp-014h]                    ; 8b 56 ec
+    mov byte [bp-012h], dl                    ; 88 56 ee
+    mov byte [bp-011h], bh                    ; 88 7e ef
+    mov dx, word [bp-012h]                    ; 8b 56 ee
     cmp bl, 008h                              ; 80 fb 08
-    jc short 0326eh                           ; 72 2e
+    jc short 0328eh                           ; 72 2e
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     or dl, 001h                               ; 80 ca 01
     cmp bl, 008h                              ; 80 fb 08
-    jbe short 032a4h                          ; 76 59
+    jbe short 032c4h                          ; 76 59
     cmp bl, 016h                              ; 80 fb 16
-    jc short 03266h                           ; 72 16
+    jc short 03286h                           ; 72 16
     or si, 00100h                             ; 81 ce 00 01
     cmp bl, 016h                              ; 80 fb 16
-    jbe short 032a7h                          ; 76 4e
+    jbe short 032c7h                          ; 76 4e
     cmp bl, 018h                              ; 80 fb 18
-    je short 032aah                           ; 74 4c
+    je short 032cah                           ; 74 4c
     cmp bl, 017h                              ; 80 fb 17
-    je short 032c1h                           ; 74 5e
-    jmp near 03b65h                           ; e9 ff 08
+    je short 032e1h                           ; 74 5e
+    jmp near 03babh                           ; e9 25 09
     cmp bl, 015h                              ; 80 fb 15
-    je short 032c4h                           ; 74 59
-    jmp near 03b65h                           ; e9 f7 08
+    je short 032e4h                           ; 74 59
+    jmp near 03babh                           ; e9 1d 09
     cmp bl, 001h                              ; 80 fb 01
-    jc short 03282h                           ; 72 0f
-    jbe short 032c7h                          ; 76 52
+    jc short 032a2h                           ; 72 0f
+    jbe short 032e7h                          ; 76 52
     cmp bl, 005h                              ; 80 fb 05
-    je short 032e2h                           ; 74 68
+    je short 03302h                           ; 74 68
     cmp bl, 004h                              ; 80 fb 04
-    jbe short 032e5h                          ; 76 66
-    jmp near 03b65h                           ; e9 e3 08
+    jbe short 03305h                          ; 76 66
+    jmp near 03babh                           ; e9 09 09
     test bl, bl                               ; 84 db
-    jne short 032e7h                          ; 75 61
+    jne short 03307h                          ; 75 61
     mov al, byte [bp+00eh]                    ; 8a 46 0e
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 032adh                          ; 76 1d
+    jbe short 032cdh                          ; 76 1d
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02eb0h                               ; e8 0f fc
-    jmp near 03656h                           ; e9 b2 03
-    jmp near 03827h                           ; e9 80 05
-    jmp near 0396bh                           ; e9 c1 06
-    jmp near 03a04h                           ; e9 57 07
+    call 02eb0h                               ; e8 ef fb
+    jmp near 03697h                           ; e9 d3 03
+    jmp near 0386bh                           ; e9 a4 05
+    jmp near 039afh                           ; e9 e5 06
+    jmp near 03a48h                           ; e9 7b 07
     mov ax, strict word 00010h                ; b8 10 00
-    call 016aeh                               ; e8 fb e3
+    call 016aeh                               ; e8 db e3
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 032c9h                          ; 75 10
+    jne short 032e9h                          ; 75 10
     mov CL, strict byte 004h                  ; b1 04
     mov ch, al                                ; 88 c5
     shr ch, CL                                ; d2 ed
-    jmp short 032ceh                          ; eb 0d
-    jmp near 0398fh                           ; e9 cb 06
-    jmp near 03926h                           ; e9 5f 06
-    jmp short 03310h                          ; eb 47
+    jmp short 032eeh                          ; eb 0d
+    jmp near 039d3h                           ; e9 ef 06
+    jmp near 0396ah                           ; e9 83 06
+    jmp short 03330h                          ; eb 47
     mov ch, al                                ; 88 c5
     and ch, 00fh                              ; 80 e5 0f
     test ch, ch                               ; 84 ed
-    jne short 032eah                          ; 75 18
+    jne short 0330ah                          ; 75 18
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp short 0329eh                          ; eb bc
-    jmp near 03680h                           ; e9 9b 03
-    jmp short 0332ch                          ; eb 45
-    jmp near 03b65h                           ; e9 7b 08
+    jmp short 032beh                          ; eb bc
+    jmp near 036c1h                           ; e9 bc 03
+    jmp short 0334ch                          ; eb 45
+    jmp near 03babh                           ; e9 a1 08
     xor bx, bx                                ; 31 db
     mov dx, strict word 0003eh                ; ba 3e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 6b e3
+    call 01660h                               ; e8 4b e3
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02eb0h                               ; e8 b1 fb
+    call 02eb0h                               ; e8 91 fb
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     xor dx, dx                                ; 31 d2
-    call 02ec9h                               ; e8 bc fb
-    jmp near 03679h                           ; e9 69 03
+    call 02ec9h                               ; e8 9c fb
+    jmp near 036bah                           ; e9 8a 03
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov dx, 00441h                            ; ba 41 04
     xor ax, ax                                ; 31 c0
-    call 01652h                               ; e8 36 e3
+    call 01652h                               ; e8 16 e3
     mov dh, al                                ; 88 c6
     xor dl, dl                                ; 30 d2
     or si, dx                                 ; 09 d6
     mov word [bp+016h], si                    ; 89 76 16
     test al, al                               ; 84 c0
-    je short 03380h                           ; 74 57
-    jmp near 03656h                           ; e9 2a 03
+    je short 033a3h                           ; 74 5a
+    jmp near 03697h                           ; e9 4b 03
     mov byte [bp-008h], ch                    ; 88 6e f8
     mov byte [bp-00ah], dl                    ; 88 56 f6
-    mov byte [bp-00eh], cl                    ; 88 4e f2
+    mov ah, byte [bp-010h]                    ; 8a 66 f0
+    mov byte [bp-00eh], ah                    ; 88 66 f2
     mov dl, byte [bp+013h]                    ; 8a 56 13
     xor dh, dh                                ; 30 f6
     mov byte [bp-00ch], dl                    ; 88 56 f4
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 03352h                         ; 77 0e
+    jnbe short 03375h                         ; 77 0e
     cmp dl, 001h                              ; 80 fa 01
-    jnbe short 03352h                         ; 77 09
+    jnbe short 03375h                         ; 77 09
     test ch, ch                               ; 84 ed
-    je short 03352h                           ; 74 05
+    je short 03375h                           ; 74 05
     cmp ch, 048h                              ; 80 fd 48
-    jbe short 03383h                          ; 76 31
+    jbe short 033a6h                          ; 76 31
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 d6 e5
+    call 01933h                               ; e8 b3 e5
     mov ax, 00275h                            ; b8 75 02
     push ax                                   ; 50
     mov ax, 0028dh                            ; b8 8d 02
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 0a e6
+    call 01976h                               ; e8 e7 e5
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 03405h                           ; e9 85 00
-    jmp near 03679h                           ; e9 f6 02
+    jmp near 03435h                           ; e9 92 00
+    jmp near 036bah                           ; e9 14 03
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 031e4h                               ; e8 59 fe
+    call 03202h                               ; e8 54 fe
     test ax, ax                               ; 85 c0
-    je short 033bdh                           ; 74 2e
-    mov bl, byte [bp-006h]                    ; 8a 5e fa
-    xor bh, bh                                ; 30 ff
-    mov ax, bx                                ; 89 d8
-    call 03013h                               ; e8 7a fc
+    jne short 033c3h                          ; 75 11
+    mov ax, word [bp+016h]                    ; 8b 46 16
+    xor ah, ah                                ; 30 e4
+    or ah, 080h                               ; 80 cc 80
+    mov word [bp+016h], ax                    ; 89 46 16
+    mov ax, 00080h                            ; b8 80 00
+    jmp near 03435h                           ; e9 72 00
+    mov dl, byte [bp-006h]                    ; 8a 56 fa
+    xor dh, dh                                ; 30 f6
+    mov ax, dx                                ; 89 d0
+    call 03031h                               ; e8 64 fc
     test ax, ax                               ; 85 c0
-    jne short 033c0h                          ; 75 23
-    mov ax, bx                                ; 89 d8
-    call 030eah                               ; e8 48 fd
+    jne short 033f1h                          ; 75 20
+    mov ax, dx                                ; 89 d0
+    call 03108h                               ; e8 32 fd
     test ax, ax                               ; 85 c0
-    jne short 033c0h                          ; 75 1a
+    jne short 033f1h                          ; 75 17
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 02eb0h                               ; e8 f9 fa
-    mov byte [bp+016h], bh                    ; 88 7e 16
-    jmp near 03656h                           ; e9 99 02
-    jmp near 0349ch                           ; e9 dc 00
-    cmp byte [bp-010h], 002h                  ; 80 7e f0 02
-    jne short 0340fh                          ; 75 49
+    call 02eb0h                               ; e8 c5 fa
+    mov byte [bp+016h], dh                    ; 88 76 16
+    jmp near 03697h                           ; e9 a6 02
+    cmp cl, 002h                              ; 80 f9 02
+    jne short 0343fh                          ; 75 49
     mov CL, strict byte 00ch                  ; b1 0c
     mov dx, word [bp+006h]                    ; 8b 56 06
     shr dx, CL                                ; d3 ea
@@ -4467,9 +4487,9 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     sal ax, CL                                ; d3 e0
     mov bx, word [bp+010h]                    ; 8b 5e 10
     add bx, ax                                ; 01 c3
-    mov word [bp-012h], bx                    ; 89 5e ee
+    mov word [bp-014h], bx                    ; 89 5e ec
     cmp ax, bx                                ; 39 d8
-    jbe short 033e4h                          ; 76 02
+    jbe short 03414h                          ; 76 02
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -4478,28 +4498,28 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov bx, ax                                ; 89 c3
     sal bx, CL                                ; d3 e3
     dec bx                                    ; 4b
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     add ax, bx                                ; 01 d8
-    cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 03412h                          ; 73 18
+    cmp ax, word [bp-014h]                    ; 3b 46 ec
+    jnc short 03442h                          ; 73 18
     mov ax, word [bp+016h]                    ; 8b 46 16
     mov ah, cl                                ; 88 cc
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00009h                ; b8 09 00
-    call 02eb0h                               ; e8 a8 fa
+    call 02eb0h                               ; e8 78 fa
     mov byte [bp+016h], 000h                  ; c6 46 16 00
-    jmp near 03656h                           ; e9 47 02
-    jmp near 03538h                           ; e9 26 01
+    jmp near 03697h                           ; e9 58 02
+    jmp near 03579h                           ; e9 37 01
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
     out DX, AL                                ; ee
-    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov al, byte [bp-014h]                    ; 8a 46 ec
     mov dx, strict word 00004h                ; ba 04 00
     out DX, AL                                ; ee
-    mov al, byte [bp-011h]                    ; 8a 46 ef
+    mov al, byte [bp-013h]                    ; 8a 46 ed
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
@@ -4518,9 +4538,10 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    mov al, byte [bp-006h]                    ; 8a 46 fa
-    xor ah, ah                                ; 30 e4
-    call 02f8fh                               ; e8 3d fb
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02fadh                               ; e8 29 fb
     mov AL, strict byte 0e6h                  ; b0 e6
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4529,7 +4550,7 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov dx, ax                                ; 89 c2
     sal dx, 1                                 ; d1 e2
     sal dx, 1                                 ; d1 e2
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov al, bl                                ; 88 d8
     or ax, dx                                 ; 09 d0
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4541,10 +4562,10 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    xor ah, ah                                ; 30 e4
-    mov dl, byte [bp-008h]                    ; 8a 56 f8
+    mov dl, byte [bp-00eh]                    ; 8a 56 f2
     xor dh, dh                                ; 30 f6
+    mov al, byte [bp-008h]                    ; 8a 46 f8
+    xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
     dec ax                                    ; 48
     mov dx, 003f5h                            ; ba f5 03
@@ -4553,35 +4574,38 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     out DX, AL                                ; ee
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02f20h                               ; e8 8b fa
+    call 02f20h                               ; e8 5a fa
     test al, al                               ; 84 c0
-    jne short 034adh                          ; 75 14
-    call 02f67h                               ; e8 cb fa
+    jne short 034e6h                          ; 75 1c
+    mov ax, bx                                ; 89 d8
+    call 02f67h                               ; e8 98 fa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, 00080h                            ; b8 80 00
-    jmp near 03405h                           ; e9 58 ff
+    call 02eb0h                               ; e8 d0 f9
+    mov byte [bp+016h], bh                    ; 88 7e 16
+    jmp near 03697h                           ; e9 b1 01
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 034cbh                           ; 74 12
+    je short 03504h                           ; 74 12
     mov ax, 00275h                            ; b8 75 02
     push ax                                   ; 50
     mov ax, 002a8h                            ; b8 a8 02
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 ae e4
+    call 01976h                               ; e8 75 e4
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 034d4h                          ; eb 05
+    jmp short 0350dh                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 034edh                          ; 7d 19
+    jnl short 03526h                          ; 7d 19
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -4591,17 +4615,20 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     xor bh, bh                                ; 30 ff
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 76 e1
+    call 01660h                               ; e8 3d e1
     inc si                                    ; 46
-    jmp short 034cfh                          ; eb e2
+    jmp short 03508h                          ; eb e2
     test byte [bp-01ch], 0c0h                 ; f6 46 e4 c0
-    je short 03504h                           ; 74 11
+    je short 03545h                           ; 74 19
+    mov al, byte [bp-006h]                    ; 8a 46 fa
+    xor ah, ah                                ; 30 e4
+    call 02f67h                               ; e8 33 fa
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 020h                               ; 80 cc 20
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00020h                ; b8 20 00
-    jmp near 03405h                           ; e9 01 ff
+    jmp near 03435h                           ; e9 f0 fe
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 009h                  ; b1 09
@@ -4623,12 +4650,12 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 02ec9h                               ; e8 98 f9
+    call 02ec9h                               ; e8 57 f9
     mov byte [bp+017h], 000h                  ; c6 46 17 00
-    jmp near 039fdh                           ; e9 c5 04
-    cmp byte [bp-010h], 003h                  ; 80 7e f0 03
-    je short 03541h                           ; 74 03
-    jmp near 03664h                           ; e9 23 01
+    jmp near 03a41h                           ; e9 c8 04
+    cmp cl, 003h                              ; 80 f9 03
+    je short 03581h                           ; 74 03
+    jmp near 036a5h                           ; e9 24 01
     mov CL, strict byte 00ch                  ; b1 0c
     mov dx, word [bp+006h]                    ; 8b 56 06
     shr dx, CL                                ; d3 ea
@@ -4638,9 +4665,9 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     sal ax, CL                                ; d3 e0
     mov bx, word [bp+010h]                    ; 8b 5e 10
     add bx, ax                                ; 01 c3
-    mov word [bp-012h], bx                    ; 89 5e ee
+    mov word [bp-014h], bx                    ; 89 5e ec
     cmp ax, bx                                ; 39 d8
-    jbe short 0355fh                          ; 76 02
+    jbe short 0359fh                          ; 76 02
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -4649,21 +4676,21 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov bx, ax                                ; 89 c3
     sal bx, CL                                ; d3 e3
     dec bx                                    ; 4b
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     add ax, bx                                ; 01 d8
-    cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 03578h                          ; 73 03
-    jmp near 033fah                           ; e9 82 fe
+    cmp ax, word [bp-014h]                    ; 3b 46 ec
+    jnc short 035b8h                          ; 73 03
+    jmp near 0342ah                           ; e9 72 fe
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
     out DX, AL                                ; ee
-    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov al, byte [bp-014h]                    ; 8a 46 ec
     mov dx, strict word 00004h                ; ba 04 00
     out DX, AL                                ; ee
-    mov al, byte [bp-011h]                    ; 8a 46 ef
+    mov al, byte [bp-013h]                    ; 8a 46 ed
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
@@ -4682,9 +4709,10 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    mov al, byte [bp-006h]                    ; 8a 46 fa
-    xor ah, ah                                ; 30 e4
-    call 02f8fh                               ; e8 d7 f9
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02fadh                               ; e8 b3 f9
     mov AL, strict byte 0c5h                  ; b0 c5
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4693,7 +4721,7 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov dx, ax                                ; 89 c2
     sal dx, 1                                 ; d1 e2
     sal dx, 1                                 ; d1 e2
-    mov al, byte [bp-006h]                    ; 8a 46 fa
+    mov al, bl                                ; 88 d8
     or ax, dx                                 ; 09 d0
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4705,10 +4733,10 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
-    mov al, byte [bp-00eh]                    ; 8a 46 f2
-    xor ah, ah                                ; 30 e4
-    mov dl, byte [bp-008h]                    ; 8a 56 f8
+    mov dl, byte [bp-00eh]                    ; 8a 56 f2
     xor dh, dh                                ; 30 f6
+    mov al, byte [bp-008h]                    ; 8a 46 f8
+    xor ah, ah                                ; 30 e4
     add ax, dx                                ; 01 d0
     dec ax                                    ; 48
     mov dx, 003f5h                            ; ba f5 03
@@ -4717,29 +4745,29 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     out DX, AL                                ; ee
     mov AL, strict byte 0ffh                  ; b0 ff
     out DX, AL                                ; ee
-    call 02f20h                               ; e8 25 f9
+    call 02f20h                               ; e8 e4 f8
     test al, al                               ; 84 c0
-    jne short 03602h                          ; 75 03
-    jmp near 03499h                           ; e9 97 fe
+    jne short 03643h                          ; 75 03
+    jmp near 034cah                           ; e9 87 fe
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 03620h                           ; 74 12
+    je short 03661h                           ; 74 12
     mov ax, 00275h                            ; b8 75 02
     push ax                                   ; 50
     mov ax, 002a8h                            ; b8 a8 02
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 59 e3
+    call 01976h                               ; e8 18 e3
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 03629h                          ; eb 05
+    jmp short 0366ah                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 03642h                          ; 7d 19
+    jnl short 03683h                          ; 7d 19
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -4749,24 +4777,24 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     xor bh, bh                                ; 30 ff
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 21 e0
+    call 01660h                               ; e8 e0 df
     inc si                                    ; 46
-    jmp short 03624h                          ; eb e2
+    jmp short 03665h                          ; eb e2
     test byte [bp-01ch], 0c0h                 ; f6 46 e4 c0
-    jne short 0364bh                          ; 75 03
-    jmp near 03524h                           ; e9 d9 fe
+    jne short 0368ch                          ; 75 03
+    jmp near 03565h                           ; e9 d9 fe
     test byte [bp-01bh], 002h                 ; f6 46 e5 02
-    je short 0365dh                           ; 74 0c
+    je short 0369eh                           ; 74 0c
     mov word [bp+016h], 00300h                ; c7 46 16 00 03
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 03679h                           ; e9 1c 00
+    jmp near 036bah                           ; e9 1c 00
     mov word [bp+016h], 00100h                ; c7 46 16 00 01
-    jmp short 03656h                          ; eb f2
+    jmp short 03697h                          ; eb f2
     mov dl, byte [bp-00ah]                    ; 8a 56 f6
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 02ec9h                               ; e8 58 f8
+    call 02ec9h                               ; e8 17 f8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov byte [bp+017h], 000h                  ; c6 46 17 00
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -4778,59 +4806,59 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov byte [bp-008h], al                    ; 88 46 f8
     mov al, byte [bp+015h]                    ; 8a 46 15
     xor ah, ah                                ; 30 e4
+    mov dx, ax                                ; 89 c2
     mov byte [bp-00ah], al                    ; 88 46 f6
-    mov dl, byte [bp+013h]                    ; 8a 56 13
-    xor dh, dh                                ; 30 f6
-    mov byte [bp-00ch], dl                    ; 88 56 f4
+    mov al, byte [bp+013h]                    ; 8a 46 13
+    mov byte [bp-00ch], al                    ; 88 46 f4
     mov bl, byte [bp+00eh]                    ; 8a 5e 0e
     mov byte [bp-006h], bl                    ; 88 5e fa
     cmp bl, 001h                              ; 80 fb 01
-    jnbe short 036b5h                         ; 77 14
-    cmp dl, 001h                              ; 80 fa 01
-    jnbe short 036b5h                         ; 77 0f
-    cmp AL, strict byte 04fh                  ; 3c 4f
-    jnbe short 036b5h                         ; 77 0b
+    jnbe short 036f6h                         ; 77 14
+    cmp AL, strict byte 001h                  ; 3c 01
+    jnbe short 036f6h                         ; 77 10
+    cmp dl, 04fh                              ; 80 fa 4f
+    jnbe short 036f6h                         ; 77 0b
     mov al, byte [bp-008h]                    ; 8a 46 f8
     test al, al                               ; 84 c0
-    je short 036b5h                           ; 74 04
+    je short 036f6h                           ; 74 04
     cmp AL, strict byte 012h                  ; 3c 12
-    jbe short 036cah                          ; 76 15
+    jbe short 0370bh                          ; 76 15
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02eb0h                               ; e8 ea f7
+    call 02eb0h                               ; e8 a9 f7
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 031e4h                               ; e8 12 fb
+    call 03202h                               ; e8 ef fa
     test ax, ax                               ; 85 c0
-    jne short 036d9h                          ; 75 03
-    jmp near 032d2h                           ; e9 f9 fb
-    mov bl, byte [bp-006h]                    ; 8a 5e fa
-    xor bh, bh                                ; 30 ff
-    mov ax, bx                                ; 89 d8
-    call 03013h                               ; e8 30 f9
+    jne short 0371ah                          ; 75 03
+    jmp near 032f2h                           ; e9 d8 fb
+    mov dl, byte [bp-006h]                    ; 8a 56 fa
+    xor dh, dh                                ; 30 f6
+    mov ax, dx                                ; 89 d0
+    call 03031h                               ; e8 0d f9
     test ax, ax                               ; 85 c0
-    jne short 036f3h                          ; 75 0c
-    mov ax, bx                                ; 89 d8
-    call 030eah                               ; e8 fe f9
+    jne short 03734h                          ; 75 0c
+    mov ax, dx                                ; 89 d0
+    call 03108h                               ; e8 db f9
     test ax, ax                               ; 85 c0
-    jne short 036f3h                          ; 75 03
-    jmp near 033a6h                           ; e9 b3 fc
+    jne short 03734h                          ; 75 03
+    jmp near 033dah                           ; e9 a6 fc
     mov CL, strict byte 00ch                  ; b1 0c
-    mov dx, word [bp+006h]                    ; 8b 56 06
-    shr dx, CL                                ; d3 ea
-    mov ch, dl                                ; 88 d5
-    mov CL, strict byte 004h                  ; b1 04
     mov ax, word [bp+006h]                    ; 8b 46 06
-    sal ax, CL                                ; d3 e0
+    shr ax, CL                                ; d3 e8
+    mov ch, al                                ; 88 c5
+    mov CL, strict byte 004h                  ; b1 04
+    mov dx, word [bp+006h]                    ; 8b 56 06
+    sal dx, CL                                ; d3 e2
     mov bx, word [bp+010h]                    ; 8b 5e 10
-    add bx, ax                                ; 01 c3
-    mov word [bp-012h], bx                    ; 89 5e ee
-    cmp ax, bx                                ; 39 d8
-    jbe short 03711h                          ; 76 02
+    add bx, dx                                ; 01 d3
+    mov word [bp-014h], bx                    ; 89 5e ec
+    cmp dx, bx                                ; 39 da
+    jbe short 03752h                          ; 76 02
     db  0feh, 0c5h
     ; inc ch                                    ; fe c5
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -4839,24 +4867,24 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     sal bx, 1                                 ; d1 e3
     sal bx, 1                                 ; d1 e3
     dec bx                                    ; 4b
-    mov ax, word [bp-012h]                    ; 8b 46 ee
+    mov ax, word [bp-014h]                    ; 8b 46 ec
     add ax, bx                                ; 01 d8
-    cmp ax, word [bp-012h]                    ; 3b 46 ee
-    jnc short 03732h                          ; 73 0b
+    cmp ax, word [bp-014h]                    ; 3b 46 ec
+    jnc short 03773h                          ; 73 0b
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 009h                               ; 80 cc 09
-    jmp near 033ffh                           ; e9 cd fc
+    jmp near 0342fh                           ; e9 bc fc
     mov AL, strict byte 006h                  ; b0 06
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
     out DX, AL                                ; ee
-    mov al, byte [bp-012h]                    ; 8a 46 ee
+    mov al, byte [bp-014h]                    ; 8a 46 ec
     mov dx, strict word 00004h                ; ba 04 00
     out DX, AL                                ; ee
-    mov al, byte [bp-011h]                    ; 8a 46 ef
+    mov al, byte [bp-013h]                    ; 8a 46 ed
     out DX, AL                                ; ee
     xor al, al                                ; 30 c0
     mov dx, strict word 0000ch                ; ba 0c 00
@@ -4875,9 +4903,10 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov AL, strict byte 002h                  ; b0 02
     mov dx, strict word 0000ah                ; ba 0a 00
     out DX, AL                                ; ee
-    mov al, byte [bp-006h]                    ; 8a 46 fa
-    xor ah, ah                                ; 30 e4
-    call 02f8fh                               ; e8 1d f8
+    mov bl, byte [bp-006h]                    ; 8a 5e fa
+    xor bh, bh                                ; 30 ff
+    mov ax, bx                                ; 89 d8
+    call 02fadh                               ; e8 f8 f7
     mov AL, strict byte 00fh                  ; b0 0f
     mov dx, 003f5h                            ; ba f5 03
     out DX, AL                                ; ee
@@ -4885,16 +4914,16 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     xor ah, ah                                ; 30 e4
     sal ax, 1                                 ; d1 e0
     sal ax, 1                                 ; d1 e0
-    mov bl, byte [bp-006h]                    ; 8a 5e fa
-    xor bh, bh                                ; 30 ff
-    or bx, ax                                 ; 09 c3
-    mov al, bl                                ; 88 d8
+    mov cl, bl                                ; 88 d9
+    xor ch, ch                                ; 30 ed
+    or cx, ax                                 ; 09 c1
+    mov al, cl                                ; 88 c8
     out DX, AL                                ; ee
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     out DX, AL                                ; ee
     mov AL, strict byte 04dh                  ; b0 4d
     out DX, AL                                ; ee
-    mov al, bl                                ; 88 d8
+    mov al, cl                                ; 88 c8
     out DX, AL                                ; ee
     mov AL, strict byte 002h                  ; b0 02
     out DX, AL                                ; ee
@@ -4904,30 +4933,31 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     out DX, AL                                ; ee
     mov AL, strict byte 0f6h                  ; b0 f6
     out DX, AL                                ; ee
-    call 02f20h                               ; e8 7b f7
+    call 02f20h                               ; e8 39 f7
     test al, al                               ; 84 c0
-    jne short 037afh                          ; 75 06
-    call 02f67h                               ; e8 bb f7
-    jmp near 032d2h                           ; e9 23 fb
+    jne short 037f3h                          ; 75 08
+    mov ax, bx                                ; 89 d8
+    call 02f67h                               ; e8 77 f7
+    jmp near 032f2h                           ; e9 ff fa
     mov dx, 003f4h                            ; ba f4 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 0c0h                  ; 3c c0
-    je short 037cdh                           ; 74 12
+    je short 03811h                           ; 74 12
     mov ax, 00275h                            ; b8 75 02
     push ax                                   ; 50
     mov ax, 002a8h                            ; b8 a8 02
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 ac e1
+    call 01976h                               ; e8 68 e1
     add sp, strict byte 00006h                ; 83 c4 06
     xor si, si                                ; 31 f6
-    jmp short 037d6h                          ; eb 05
+    jmp short 0381ah                          ; eb 05
     cmp si, strict byte 00007h                ; 83 fe 07
-    jnl short 037efh                          ; 7d 19
+    jnl short 03833h                          ; 7d 19
     mov dx, 003f5h                            ; ba f5 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -4937,34 +4967,34 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     xor bh, bh                                ; 30 ff
     lea dx, [si+042h]                         ; 8d 54 42
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 74 de
+    call 01660h                               ; e8 30 de
     inc si                                    ; 46
-    jmp short 037d1h                          ; eb e2
+    jmp short 03815h                          ; eb e2
     test byte [bp-01ch], 0c0h                 ; f6 46 e4 c0
-    je short 03810h                           ; 74 1b
+    je short 03854h                           ; 74 1b
     test byte [bp-01bh], 002h                 ; f6 46 e5 02
-    je short 037feh                           ; 74 03
-    jmp near 03651h                           ; e9 53 fe
+    je short 03842h                           ; 74 03
+    jmp near 03692h                           ; e9 50 fe
     mov ax, 00275h                            ; b8 75 02
     push ax                                   ; 50
     mov ax, 002bch                            ; b8 bc 02
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 69 e1
+    call 01976h                               ; e8 25 e1
     add sp, strict byte 00006h                ; 83 c4 06
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02eb0h                               ; e8 96 f6
+    call 02eb0h                               ; e8 52 f6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     xor dx, dx                                ; 31 d2
-    call 02ec9h                               ; e8 a5 f6
-    jmp near 039fdh                           ; e9 d6 01
+    call 02ec9h                               ; e8 61 f6
+    jmp near 03a41h                           ; e9 d6 01
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03856h                          ; 76 28
+    jbe short 0389ah                          ; 76 28
     mov word [bp+016h], strict word 00000h    ; c7 46 16 00 00
     mov word [bp+010h], strict word 00000h    ; c7 46 10 00 00
     mov word [bp+014h], strict word 00000h    ; c7 46 14 00 00
@@ -4974,23 +5004,23 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     mov al, ah                                ; 88 e0
     xor ah, ah                                ; 30 e4
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp near 03978h                           ; e9 22 01
+    jmp near 039bch                           ; e9 22 01
     mov ax, strict word 00010h                ; b8 10 00
-    call 016aeh                               ; e8 52 de
+    call 016aeh                               ; e8 0e de
     mov ch, al                                ; 88 c5
     xor ah, ah                                ; 30 e4
     test AL, strict byte 0f0h                 ; a8 f0
-    je short 03866h                           ; 74 02
+    je short 038aah                           ; 74 02
     mov AH, strict byte 001h                  ; b4 01
     test ch, 00fh                             ; f6 c5 0f
-    je short 0386dh                           ; 74 02
+    je short 038b1h                           ; 74 02
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 03879h                          ; 75 06
+    jne short 038bdh                          ; 75 06
     mov CL, strict byte 004h                  ; b1 04
     shr ch, CL                                ; d2 ed
-    jmp short 0387ch                          ; eb 03
+    jmp short 038c0h                          ; eb 03
     and ch, 00fh                              ; 80 e5 0f
     mov byte [bp+011h], 000h                  ; c6 46 11 00
     mov dl, ch                                ; 88 ea
@@ -5005,280 +5035,280 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     or ah, 001h                               ; 80 cc 01
     mov word [bp+012h], ax                    ; 89 46 12
     cmp ch, 003h                              ; 80 fd 03
-    jc short 038b8h                           ; 72 15
-    jbe short 038dfh                          ; 76 3a
+    jc short 038fch                           ; 72 15
+    jbe short 03923h                          ; 76 3a
     cmp ch, 005h                              ; 80 fd 05
-    jc short 038e6h                           ; 72 3c
-    jbe short 038edh                          ; 76 41
+    jc short 0392ah                           ; 72 3c
+    jbe short 03931h                          ; 76 41
     cmp ch, 00fh                              ; 80 fd 0f
-    je short 038fbh                           ; 74 4a
+    je short 0393fh                           ; 74 4a
     cmp ch, 00eh                              ; 80 fd 0e
-    je short 038f4h                           ; 74 3e
-    jmp short 03902h                          ; eb 4a
+    je short 03938h                           ; 74 3e
+    jmp short 03946h                          ; eb 4a
     cmp ch, 002h                              ; 80 fd 02
-    je short 038d8h                           ; 74 1b
+    je short 0391ch                           ; 74 1b
     cmp ch, 001h                              ; 80 fd 01
-    je short 038d1h                           ; 74 0f
+    je short 03915h                           ; 74 0f
     test ch, ch                               ; 84 ed
-    jne short 03902h                          ; 75 3c
+    jne short 03946h                          ; 75 3c
     mov word [bp+014h], strict word 00000h    ; c7 46 14 00 00
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 03914h                          ; eb 43
+    jmp short 03958h                          ; eb 43
     mov word [bp+014h], 02709h                ; c7 46 14 09 27
-    jmp short 03914h                          ; eb 3c
+    jmp short 03958h                          ; eb 3c
     mov word [bp+014h], 04f0fh                ; c7 46 14 0f 4f
-    jmp short 03914h                          ; eb 35
+    jmp short 03958h                          ; eb 35
     mov word [bp+014h], 04f09h                ; c7 46 14 09 4f
-    jmp short 03914h                          ; eb 2e
+    jmp short 03958h                          ; eb 2e
     mov word [bp+014h], 04f12h                ; c7 46 14 12 4f
-    jmp short 03914h                          ; eb 27
+    jmp short 03958h                          ; eb 27
     mov word [bp+014h], 04f24h                ; c7 46 14 24 4f
-    jmp short 03914h                          ; eb 20
+    jmp short 03958h                          ; eb 20
     mov word [bp+014h], 0fe3fh                ; c7 46 14 3f fe
-    jmp short 03914h                          ; eb 19
+    jmp short 03958h                          ; eb 19
     mov word [bp+014h], 0feffh                ; c7 46 14 ff fe
-    jmp short 03914h                          ; eb 12
+    jmp short 03958h                          ; eb 12
     mov ax, 00275h                            ; b8 75 02
     push ax                                   ; 50
     mov ax, 002cdh                            ; b8 cd 02
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 65 e0
+    call 01976h                               ; e8 21 e0
     add sp, strict byte 00006h                ; 83 c4 06
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     mov al, ch                                ; 88 e8
     xor ah, ah                                ; 30 e4
-    call 03b8bh                               ; e8 6b 02
+    call 03bd1h                               ; e8 6d 02
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 039fdh                           ; e9 d7 00
+    jmp near 03a41h                           ; e9 d7 00
     mov byte [bp-006h], al                    ; 88 46 fa
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03932h                          ; 76 05
+    jbe short 03976h                          ; 76 05
     mov word [bp+016h], si                    ; 89 76 16
-    jmp short 03978h                          ; eb 46
+    jmp short 039bch                          ; eb 46
     mov ax, strict word 00010h                ; b8 10 00
-    call 016aeh                               ; e8 76 dd
+    call 016aeh                               ; e8 32 dd
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 03946h                          ; 75 08
+    jne short 0398ah                          ; 75 08
     mov CL, strict byte 004h                  ; b1 04
     mov ch, al                                ; 88 c5
     shr ch, CL                                ; d2 ed
-    jmp short 0394bh                          ; eb 05
+    jmp short 0398fh                          ; eb 05
     mov ch, al                                ; 88 c5
     and ch, 00fh                              ; 80 e5 0f
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     test ch, ch                               ; 84 ed
-    je short 03965h                           ; 74 0d
+    je short 039a9h                           ; 74 0d
     cmp ch, 001h                              ; 80 fd 01
-    jbe short 03962h                          ; 76 05
+    jbe short 039a6h                          ; 76 05
     or ah, 002h                               ; 80 cc 02
-    jmp short 03965h                          ; eb 03
+    jmp short 039a9h                          ; eb 03
     or ah, 001h                               ; 80 cc 01
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 03679h                           ; e9 0e fd
+    jmp near 036bah                           ; e9 0b fd
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 0397eh                          ; 76 0f
+    jbe short 039c2h                          ; 76 0f
     mov word [bp+016h], si                    ; 89 76 16
     mov ax, strict word 00001h                ; b8 01 00
-    call 02eb0h                               ; e8 38 f5
+    call 02eb0h                               ; e8 f4 f4
     mov word [bp+01ch], dx                    ; 89 56 1c
-    jmp near 03679h                           ; e9 fb fc
+    jmp near 036bah                           ; e9 f8 fc
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 006h                               ; 80 cc 06
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 0329eh                           ; e9 0f f9
+    jmp near 032beh                           ; e9 eb f8
     mov byte [bp-006h], al                    ; 88 46 fa
     mov bl, ch                                ; 88 eb
     cmp AL, strict byte 001h                  ; 3c 01
-    jnbe short 0396fh                         ; 77 d7
+    jnbe short 039b3h                         ; 77 d7
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 031e4h                               ; e8 44 f8
+    call 03202h                               ; e8 1e f8
     test ax, ax                               ; 85 c0
-    jne short 039a7h                          ; 75 03
-    jmp near 032d2h                           ; e9 2b f9
+    jne short 039ebh                          ; 75 03
+    jmp near 032f2h                           ; e9 07 f9
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 039b2h                           ; 74 05
+    je short 039f6h                           ; 74 05
     mov dx, 00091h                            ; ba 91 00
-    jmp short 039b5h                          ; eb 03
+    jmp short 039f9h                          ; eb 03
     mov dx, 00090h                            ; ba 90 00
-    mov word [bp-012h], dx                    ; 89 56 ee
+    mov word [bp-014h], dx                    ; 89 56 ec
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 94 dc
+    call 01652h                               ; e8 50 dc
     and AL, strict byte 00fh                  ; 24 0f
     cmp bl, 002h                              ; 80 fb 02
-    jc short 039d4h                           ; 72 0f
-    jbe short 039e0h                          ; 76 19
+    jc short 03a18h                           ; 72 0f
+    jbe short 03a24h                          ; 76 19
     cmp bl, 004h                              ; 80 fb 04
-    je short 039dch                           ; 74 10
+    je short 03a20h                           ; 74 10
     cmp bl, 003h                              ; 80 fb 03
-    je short 039e4h                           ; 74 13
-    jmp near 03290h                           ; e9 bc f8
+    je short 03a28h                           ; 74 13
+    jmp near 032b0h                           ; e9 98 f8
     cmp bl, 001h                              ; 80 fb 01
-    je short 039dch                           ; 74 03
-    jmp near 03290h                           ; e9 b4 f8
+    je short 03a20h                           ; 74 03
+    jmp near 032b0h                           ; e9 90 f8
     or AL, strict byte 090h                   ; 0c 90
-    jmp short 039e6h                          ; eb 06
+    jmp short 03a2ah                          ; eb 06
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 039e6h                          ; eb 02
+    jmp short 03a2ah                          ; eb 02
     or AL, strict byte 010h                   ; 0c 10
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
-    mov dx, word [bp-012h]                    ; 8b 56 ee
+    mov dx, word [bp-014h]                    ; 8b 56 ec
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 6d dc
+    call 01660h                               ; e8 29 dc
     xor al, al                                ; 30 c0
     mov byte [bp+017h], al                    ; 88 46 17
     xor ah, ah                                ; 30 e4
-    call 02eb0h                               ; e8 b3 f4
+    call 02eb0h                               ; e8 6f f4
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp near 03679h                           ; e9 75 fc
+    jmp near 036bah                           ; e9 72 fc
     mov byte [bp-006h], al                    ; 88 46 fa
-    mov ah, cl                                ; 88 cc
+    mov ah, byte [bp+014h]                    ; 8a 66 14
     and ah, 03fh                              ; 80 e4 3f
     mov byte [bp-008h], ah                    ; 88 66 f8
-    mov bl, cl                                ; 88 cb
+    mov bl, byte [bp-010h]                    ; 8a 5e f0
     mov CL, strict byte 006h                  ; b1 06
     sar bx, CL                                ; d3 fb
     mov bh, bl                                ; 88 df
     xor bl, bl                                ; 30 db
-    add bx, word [bp-014h]                    ; 03 5e ec
+    add bx, word [bp-012h]                    ; 03 5e ee
     mov byte [bp-00ah], bl                    ; 88 5e f6
     cmp AL, strict byte 001h                  ; 3c 01
-    jbe short 03a26h                          ; 76 03
-    jmp near 0396fh                           ; e9 49 ff
+    jbe short 03a6ch                          ; 76 03
+    jmp near 039b3h                           ; e9 47 ff
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 031e4h                               ; e8 b6 f7
+    call 03202h                               ; e8 8e f7
     test ax, ax                               ; 85 c0
-    jne short 03a35h                          ; 75 03
-    jmp near 032d2h                           ; e9 9d f8
-    mov bl, byte [bp-006h]                    ; 8a 5e fa
-    xor bh, bh                                ; 30 ff
-    mov ax, bx                                ; 89 d8
-    call 03013h                               ; e8 d4 f5
+    jne short 03a7bh                          ; 75 03
+    jmp near 032f2h                           ; e9 77 f8
+    mov dl, byte [bp-006h]                    ; 8a 56 fa
+    xor dh, dh                                ; 30 f6
+    mov ax, dx                                ; 89 d0
+    call 03031h                               ; e8 ac f5
     test ax, ax                               ; 85 c0
-    jne short 03a5dh                          ; 75 1a
-    mov ax, bx                                ; 89 d8
-    call 030eah                               ; e8 a2 f6
+    jne short 03aa3h                          ; 75 1a
+    mov ax, dx                                ; 89 d0
+    call 03108h                               ; e8 7a f6
     test ax, ax                               ; 85 c0
-    jne short 03a5dh                          ; 75 11
+    jne short 03aa3h                          ; 75 11
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 00ch                               ; 80 cc 0c
     mov word [bp+016h], ax                    ; 89 46 16
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 0329eh                           ; e9 41 f8
+    jmp near 032beh                           ; e9 1b f8
     mov ax, strict word 00010h                ; b8 10 00
-    call 016aeh                               ; e8 4b dc
+    call 016aeh                               ; e8 05 dc
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jne short 03a71h                          ; 75 08
+    jne short 03ab7h                          ; 75 08
     mov CL, strict byte 004h                  ; b1 04
     mov ch, al                                ; 88 c5
     shr ch, CL                                ; d2 ed
-    jmp short 03a76h                          ; eb 05
+    jmp short 03abch                          ; eb 05
     mov ch, al                                ; 88 c5
     and ch, 00fh                              ; 80 e5 0f
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 03a81h                           ; 74 05
+    je short 03ac7h                           ; 74 05
     mov dx, 00091h                            ; ba 91 00
-    jmp short 03a84h                          ; eb 03
+    jmp short 03acah                          ; eb 03
     mov dx, 00090h                            ; ba 90 00
-    mov word [bp-012h], dx                    ; 89 56 ee
+    mov word [bp-014h], dx                    ; 89 56 ec
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 c5 db
+    call 01652h                               ; e8 7f db
     and AL, strict byte 00fh                  ; 24 0f
     cmp ch, 003h                              ; 80 fd 03
-    jc short 03ab0h                           ; 72 1c
+    jc short 03af6h                           ; 72 1c
     mov ah, al                                ; 88 c4
     or ah, 090h                               ; 80 cc 90
     cmp ch, 003h                              ; 80 fd 03
-    jbe short 03aech                          ; 76 4e
+    jbe short 03b32h                          ; 76 4e
     mov dl, al                                ; 88 c2
     or dl, 010h                               ; 80 ca 10
     cmp ch, 005h                              ; 80 fd 05
-    je short 03aeah                           ; 74 42
+    je short 03b30h                           ; 74 42
     cmp ch, 004h                              ; 80 fd 04
-    je short 03afah                           ; 74 4d
-    jmp near 03b36h                           ; e9 86 00
+    je short 03b40h                           ; 74 4d
+    jmp near 03b7ch                           ; e9 86 00
     cmp ch, 002h                              ; 80 fd 02
-    je short 03acah                           ; 74 15
+    je short 03b10h                           ; 74 15
     cmp ch, 001h                              ; 80 fd 01
-    jne short 03afeh                          ; 75 44
+    jne short 03b44h                          ; 75 44
     cmp byte [bp-00ah], 027h                  ; 80 7e f6 27
-    jne short 03afeh                          ; 75 3e
+    jne short 03b44h                          ; 75 3e
     cmp byte [bp-008h], 009h                  ; 80 7e f8 09
-    jne short 03b16h                          ; 75 50
+    jne short 03b5ch                          ; 75 50
     or AL, strict byte 090h                   ; 0c 90
-    jmp short 03b16h                          ; eb 4c
+    jmp short 03b5ch                          ; eb 4c
     cmp byte [bp-00ah], 027h                  ; 80 7e f6 27
-    jne short 03adah                          ; 75 0a
+    jne short 03b20h                          ; 75 0a
     cmp byte [bp-008h], 009h                  ; 80 7e f8 09
-    jne short 03adah                          ; 75 04
+    jne short 03b20h                          ; 75 04
     or AL, strict byte 070h                   ; 0c 70
-    jmp short 03b16h                          ; eb 3c
+    jmp short 03b5ch                          ; eb 3c
     cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
-    jne short 03b16h                          ; 75 36
+    jne short 03b5ch                          ; 75 36
     cmp byte [bp-008h], 00fh                  ; 80 7e f8 0f
-    jne short 03b36h                          ; 75 50
+    jne short 03b7ch                          ; 75 50
     or AL, strict byte 010h                   ; 0c 10
-    jmp short 03b36h                          ; eb 4c
-    jmp short 03b18h                          ; eb 2c
+    jmp short 03b7ch                          ; eb 4c
+    jmp short 03b5eh                          ; eb 2c
     cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
-    jne short 03b36h                          ; 75 44
+    jne short 03b7ch                          ; 75 44
     cmp byte [bp-008h], 009h                  ; 80 7e f8 09
-    je short 03afch                           ; 74 04
-    jmp short 03b36h                          ; eb 3c
-    jmp short 03b00h                          ; eb 04
+    je short 03b42h                           ; 74 04
+    jmp short 03b7ch                          ; eb 3c
+    jmp short 03b46h                          ; eb 04
     mov al, ah                                ; 88 e0
-    jmp short 03b36h                          ; eb 36
+    jmp short 03b7ch                          ; eb 36
     cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
-    jne short 03b36h                          ; 75 30
+    jne short 03b7ch                          ; 75 30
     cmp byte [bp-008h], 009h                  ; 80 7e f8 09
-    jne short 03b0eh                          ; 75 02
-    jmp short 03afch                          ; eb ee
+    jne short 03b54h                          ; 75 02
+    jmp short 03b42h                          ; eb ee
     cmp byte [bp-008h], 012h                  ; 80 7e f8 12
-    jne short 03b36h                          ; 75 22
+    jne short 03b7ch                          ; 75 22
     mov al, dl                                ; 88 d0
-    jmp short 03b36h                          ; eb 1e
+    jmp short 03b7ch                          ; eb 1e
     cmp byte [bp-00ah], 04fh                  ; 80 7e f6 4f
-    jne short 03b36h                          ; 75 18
+    jne short 03b7ch                          ; 75 18
     cmp byte [bp-008h], 009h                  ; 80 7e f8 09
-    jne short 03b26h                          ; 75 02
-    jmp short 03afch                          ; eb d6
+    jne short 03b6ch                          ; 75 02
+    jmp short 03b42h                          ; eb d6
     cmp byte [bp-008h], 012h                  ; 80 7e f8 12
-    jne short 03b2eh                          ; 75 02
-    jmp short 03b14h                          ; eb e6
+    jne short 03b74h                          ; 75 02
+    jmp short 03b5ah                          ; eb e6
     cmp byte [bp-008h], 024h                  ; 80 7e f8 24
-    jne short 03b36h                          ; 75 02
+    jne short 03b7ch                          ; 75 02
     or AL, strict byte 0d0h                   ; 0c d0
     mov dl, al                                ; 88 c2
     xor dh, dh                                ; 30 f6
     mov CL, strict byte 004h                  ; b1 04
     sar dx, CL                                ; d3 fa
     test dl, 001h                             ; f6 c2 01
-    jne short 03b46h                          ; 75 03
-    jmp near 03a4ch                           ; e9 06 ff
+    jne short 03b8ch                          ; 75 03
+    jmp near 03a92h                           ; e9 06 ff
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
-    mov dx, word [bp-012h]                    ; 8b 56 ee
+    mov dx, word [bp-014h]                    ; 8b 56 ec
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 0d db
+    call 01660h                               ; e8 c7 da
     mov word [bp+006h], 0f000h                ; c7 46 06 00 f0
     mov al, ch                                ; 88 e8
     xor ah, ah                                ; 30 e4
-    call 03b8bh                               ; e8 2c 00
+    call 03bd1h                               ; e8 2c 00
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp near 039f3h                           ; e9 8e fe
+    jmp near 03a37h                           ; e9 8c fe
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 c3 dd
+    call 01933h                               ; e8 7d dd
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -5288,99 +5318,99 @@ _int13_diskette_function:                    ; 0xf320f LB 0x97c
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 f1 dd
+    call 01976h                               ; e8 ab dd
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 03290h                           ; e9 05 f7
-get_floppy_dpt_:                             ; 0xf3b8b LB 0x32
+    jmp near 032b0h                           ; e9 df f6
+get_floppy_dpt_:                             ; 0xf3bd1 LB 0x32
     push bx                                   ; 53
     push dx                                   ; 52
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov dl, al                                ; 88 c2
     xor ax, ax                                ; 31 c0
-    jmp short 03b9ch                          ; eb 06
+    jmp short 03be2h                          ; eb 06
     inc ax                                    ; 40
     cmp ax, strict word 00007h                ; 3d 07 00
-    jnc short 03bb6h                          ; 73 1a
+    jnc short 03bfch                          ; 73 1a
     mov bx, ax                                ; 89 c3
     sal bx, 1                                 ; d1 e3
     cmp dl, byte [word bx+0005bh]             ; 3a 97 5b 00
-    jne short 03b96h                          ; 75 f0
+    jne short 03bdch                          ; 75 f0
     mov al, byte [word bx+0005ch]             ; 8a 87 5c 00
     xor ah, ah                                ; 30 e4
     mov bx, strict word 0000dh                ; bb 0d 00
     imul bx                                   ; f7 eb
     add ax, strict word 00000h                ; 05 00 00
-    jmp short 03bb9h                          ; eb 03
+    jmp short 03bffh                          ; eb 03
     mov ax, strict word 00041h                ; b8 41 00
     pop bp                                    ; 5d
     pop dx                                    ; 5a
     pop bx                                    ; 5b
     retn                                      ; c3
-dummy_soft_reset_:                           ; 0xf3bbd LB 0x7
+dummy_soft_reset_:                           ; 0xf3c03 LB 0x7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     xor ax, ax                                ; 31 c0
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_init:                                 ; 0xf3bc4 LB 0x18
+_cdemu_init:                                 ; 0xf3c0a LB 0x18
     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 9e da
+    call 0166eh                               ; e8 58 da
     xor bx, bx                                ; 31 db
     mov dx, 00366h                            ; ba 66 03
-    call 01660h                               ; e8 88 da
+    call 01660h                               ; e8 42 da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_isactive:                             ; 0xf3bdc LB 0x16
+_cdemu_isactive:                             ; 0xf3c22 LB 0x16
     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 86 da
+    call 0166eh                               ; e8 40 da
     mov dx, 00366h                            ; ba 66 03
-    call 01652h                               ; e8 64 da
+    call 01652h                               ; e8 1e da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_cdemu_emulated_drive:                       ; 0xf3bf2 LB 0x16
+_cdemu_emulated_drive:                       ; 0xf3c38 LB 0x16
     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 70 da
+    call 0166eh                               ; e8 2a da
     mov dx, 00368h                            ; ba 68 03
-    call 01652h                               ; e8 4e da
+    call 01652h                               ; e8 08 da
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_int13_eltorito:                             ; 0xf3c08 LB 0x191
+_int13_eltorito:                             ; 0xf3c4e LB 0x191
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
     push di                                   ; 57
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 58 da
+    call 0166eh                               ; e8 12 da
     mov si, 00366h                            ; be 66 03
     mov di, ax                                ; 89 c7
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     cmp ax, strict word 0004bh                ; 3d 4b 00
-    jc short 03c2fh                           ; 72 0a
-    jbe short 03c5ah                          ; 76 33
+    jc short 03c75h                           ; 72 0a
+    jbe short 03ca0h                          ; 76 33
     cmp ax, strict word 0004dh                ; 3d 4d 00
-    jbe short 03c34h                          ; 76 08
-    jmp near 03d5fh                           ; e9 30 01
+    jbe short 03c7ah                          ; 76 08
+    jmp near 03da5h                           ; e9 30 01
     cmp ax, strict word 0004ah                ; 3d 4a 00
-    jne short 03c57h                          ; 75 23
+    jne short 03c9dh                          ; 75 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 f4 dc
+    call 01933h                               ; e8 ae dc
     push word [bp+016h]                       ; ff 76 16
     mov ax, 002fch                            ; b8 fc 02
     push ax                                   ; 50
@@ -5388,21 +5418,21 @@ _int13_eltorito:                             ; 0xf3c08 LB 0x191
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 25 dd
+    call 01976h                               ; e8 df dc
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 03d7ah                           ; e9 23 01
-    jmp near 03d5fh                           ; e9 05 01
+    jmp near 03dc0h                           ; e9 23 01
+    jmp near 03da5h                           ; e9 05 01
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
     mov bx, strict word 00013h                ; bb 13 00
-    call 01660h                               ; e8 fa d9
+    call 01660h                               ; e8 b4 d9
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+001h]                 ; 26 8a 5c 01
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01660h                               ; e8 e8 d9
+    call 01660h                               ; e8 a2 d9
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+002h]                 ; 26 8a 5c 02
     xor bh, bh                                ; 30 ff
@@ -5410,75 +5440,75 @@ _int13_eltorito:                             ; 0xf3c08 LB 0x191
     inc dx                                    ; 42
     inc dx                                    ; 42
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01660h                               ; e8 d5 d9
+    call 01660h                               ; e8 8f d9
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+003h]                 ; 26 8a 5c 03
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00003h                ; 83 c2 03
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01660h                               ; e8 c1 d9
+    call 01660h                               ; e8 7b d9
     mov es, di                                ; 8e c7
     mov bx, word [es:si+008h]                 ; 26 8b 5c 08
     mov cx, word [es:si+00ah]                 ; 26 8b 4c 0a
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00004h                ; 83 c2 04
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0169ch                               ; e8 e7 d9
+    call 0169ch                               ; e8 a1 d9
     mov es, di                                ; 8e c7
     mov bx, word [es:si+004h]                 ; 26 8b 5c 04
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00008h                ; 83 c2 08
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ch                               ; e8 b5 d9
+    call 0167ch                               ; e8 6f d9
     mov es, di                                ; 8e c7
     mov bx, word [es:si+006h]                 ; 26 8b 5c 06
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ah                ; 83 c2 0a
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ch                               ; e8 a3 d9
+    call 0167ch                               ; e8 5d d9
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00ch]                 ; 26 8b 5c 0c
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000ch                ; 83 c2 0c
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ch                               ; e8 91 d9
+    call 0167ch                               ; e8 4b d9
     mov es, di                                ; 8e c7
     mov bx, word [es:si+00eh]                 ; 26 8b 5c 0e
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 0000eh                ; 83 c2 0e
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 0167ch                               ; e8 7f d9
+    call 0167ch                               ; e8 39 d9
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+012h]                 ; 26 8a 5c 12
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00010h                ; 83 c2 10
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01660h                               ; e8 4f d9
+    call 01660h                               ; e8 09 d9
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+014h]                 ; 26 8a 5c 14
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00011h                ; 83 c2 11
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01660h                               ; e8 3b d9
+    call 01660h                               ; e8 f5 d8
     mov es, di                                ; 8e c7
     mov bl, byte [es:si+010h]                 ; 26 8a 5c 10
     xor bh, bh                                ; 30 ff
     mov dx, word [bp+00ah]                    ; 8b 56 0a
     add dx, strict byte 00012h                ; 83 c2 12
     mov ax, word [bp+004h]                    ; 8b 46 04
-    call 01660h                               ; e8 27 d9
+    call 01660h                               ; e8 e1 d8
     test byte [bp+016h], 0ffh                 ; f6 46 16 ff
-    jne short 03d45h                          ; 75 06
+    jne short 03d8bh                          ; 75 06
     mov es, di                                ; 8e c7
     mov byte [es:si], 000h                    ; 26 c6 04 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 0c d9
+    call 01660h                               ; e8 c6 d8
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -5488,14 +5518,14 @@ _int13_eltorito:                             ; 0xf3c08 LB 0x191
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 c9 db
+    call 01933h                               ; e8 83 db
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, 002fch                            ; b8 fc 02
     push ax                                   ; 50
     mov ax, 00333h                            ; b8 33 03
-    jmp near 03c49h                           ; e9 cf fe
+    jmp near 03c8fh                           ; e9 cf fe
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -5504,10 +5534,10 @@ _int13_eltorito:                             ; 0xf3c08 LB 0x191
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 cd d8
+    call 01660h                               ; e8 87 d8
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 03d58h                          ; eb bf
-device_is_cdrom_:                            ; 0xf3d99 LB 0x3f
+    jmp short 03d9eh                          ; eb bf
+device_is_cdrom_:                            ; 0xf3ddf LB 0x3f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5516,12 +5546,12 @@ device_is_cdrom_:                            ; 0xf3d99 LB 0x3f
     mov bl, al                                ; 88 c3
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 c4 d8
+    call 0166eh                               ; e8 7e d8
     mov cx, ax                                ; 89 c1
     cmp bl, 010h                              ; 80 fb 10
-    jc short 03db5h                           ; 72 04
+    jc short 03dfbh                           ; 72 04
     xor ax, ax                                ; 31 c0
-    jmp short 03dd0h                          ; eb 1b
+    jmp short 03e16h                          ; eb 1b
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     mov bx, strict word 0001ch                ; bb 1c 00
@@ -5530,7 +5560,7 @@ device_is_cdrom_:                            ; 0xf3d99 LB 0x3f
     mov bx, ax                                ; 89 c3
     add bx, 00122h                            ; 81 c3 22 01
     cmp byte [es:bx+023h], 005h               ; 26 80 7f 23 05
-    jne short 03db1h                          ; 75 e4
+    jne short 03df7h                          ; 75 e4
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -5538,7 +5568,7 @@ device_is_cdrom_:                            ; 0xf3d99 LB 0x3f
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
+cdrom_boot_:                                 ; 0xf3e1e LB 0x43d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -5549,31 +5579,31 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     sub sp, 0081ch                            ; 81 ec 1c 08
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 81 d8
+    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
-    jmp short 03e0dh                          ; eb 09
+    jmp short 03e53h                          ; eb 09
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jnc short 03e19h                          ; 73 0c
+    jnc short 03e5fh                          ; 73 0c
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
-    call 03d99h                               ; e8 84 ff
+    call 03ddfh                               ; e8 84 ff
     test ax, ax                               ; 85 c0
-    je short 03e04h                           ; 74 eb
+    je short 03e4ah                           ; 74 eb
     cmp byte [bp-00ch], 010h                  ; 80 7e f4 10
-    jc short 03e25h                           ; 72 06
+    jc short 03e6bh                           ; 72 06
     mov ax, strict word 00002h                ; b8 02 00
-    jmp near 041b2h                           ; e9 8d 03
+    jmp near 041f8h                           ; e9 8d 03
     mov cx, strict word 0000ch                ; b9 0c 00
     xor bx, bx                                ; 31 db
     mov dx, ss                                ; 8c d2
     lea ax, [bp-026h]                         ; 8d 46 da
-    call 0a080h                               ; e8 4e 62
+    call 0a0c0h                               ; e8 48 62
     mov word [bp-026h], strict word 00028h    ; c7 46 da 28 00
     mov ax, strict word 00011h                ; b8 11 00
     xor dx, dx                                ; 31 d2
@@ -5589,10 +5619,10 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     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
-    jmp short 03e6dh                          ; eb 09
+    jmp short 03eb3h                          ; eb 09
     inc byte [bp-00eh]                        ; fe 46 f2
     cmp byte [bp-00eh], 004h                  ; 80 7e f2 04
-    jnbe short 03eafh                         ; 77 42
+    jnbe short 03ef5h                         ; 77 42
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -5621,35 +5651,35 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     mov dx, strict word 0000ch                ; ba 0c 00
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    jne short 03e64h                          ; 75 b5
+    jne short 03eaah                          ; 75 b5
     test ax, ax                               ; 85 c0
-    je short 03eb9h                           ; 74 06
+    je short 03effh                           ; 74 06
     mov ax, strict word 00003h                ; b8 03 00
-    jmp near 041b2h                           ; e9 f9 02
+    jmp near 041f8h                           ; e9 f9 02
     cmp byte [bp-00826h], 000h                ; 80 be da f7 00
-    je short 03ec6h                           ; 74 06
+    je short 03f0ch                           ; 74 06
     mov ax, strict word 00004h                ; b8 04 00
-    jmp near 041b2h                           ; e9 ec 02
+    jmp near 041f8h                           ; e9 ec 02
     xor di, di                                ; 31 ff
-    jmp short 03ed0h                          ; eb 06
+    jmp short 03f16h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00005h                ; 83 ff 05
-    jnc short 03ee0h                          ; 73 10
+    jnc short 03f26h                          ; 73 10
     mov al, byte [bp+di-00825h]               ; 8a 83 db f7
     cmp al, byte [di+00da8h]                  ; 3a 85 a8 0d
-    je short 03ecah                           ; 74 f0
+    je short 03f10h                           ; 74 f0
     mov ax, strict word 00005h                ; b8 05 00
-    jmp near 041b2h                           ; e9 d2 02
+    jmp near 041f8h                           ; e9 d2 02
     xor di, di                                ; 31 ff
-    jmp short 03eeah                          ; eb 06
+    jmp short 03f30h                          ; eb 06
     inc di                                    ; 47
     cmp di, strict byte 00017h                ; 83 ff 17
-    jnc short 03efah                          ; 73 10
+    jnc short 03f40h                          ; 73 10
     mov al, byte [bp+di-0081fh]               ; 8a 83 e1 f7
     cmp al, byte [di+00daeh]                  ; 3a 85 ae 0d
-    je short 03ee4h                           ; 74 f0
+    je short 03f2ah                           ; 74 f0
     mov ax, strict word 00006h                ; b8 06 00
-    jmp near 041b2h                           ; e9 b8 02
+    jmp near 041f8h                           ; e9 b8 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
@@ -5689,38 +5719,38 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     mov dx, strict word 0000ch                ; ba 0c 00
     call word [word di+0006ah]                ; ff 95 6a 00
     test ax, ax                               ; 85 c0
-    je short 03f62h                           ; 74 06
+    je short 03fa8h                           ; 74 06
     mov ax, strict word 00007h                ; b8 07 00
-    jmp near 041b2h                           ; e9 50 02
+    jmp near 041f8h                           ; e9 50 02
     cmp byte [bp-00826h], 001h                ; 80 be da f7 01
-    je short 03f6fh                           ; 74 06
+    je short 03fb5h                           ; 74 06
     mov ax, strict word 00008h                ; b8 08 00
-    jmp near 041b2h                           ; e9 43 02
+    jmp near 041f8h                           ; e9 43 02
     cmp byte [bp-00825h], 000h                ; 80 be db f7 00
-    je short 03f7ch                           ; 74 06
+    je short 03fc2h                           ; 74 06
     mov ax, strict word 00009h                ; b8 09 00
-    jmp near 041b2h                           ; e9 36 02
+    jmp near 041f8h                           ; e9 36 02
     cmp byte [bp-00808h], 055h                ; 80 be f8 f7 55
-    je short 03f89h                           ; 74 06
+    je short 03fcfh                           ; 74 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    jmp near 041b2h                           ; e9 29 02
+    jmp near 041f8h                           ; e9 29 02
     cmp byte [bp-00807h], 0aah                ; 80 be f9 f7 aa
-    jne short 03f83h                          ; 75 f3
+    jne short 03fc9h                          ; 75 f3
     cmp byte [bp-00806h], 088h                ; 80 be fa f7 88
-    je short 03f9dh                           ; 74 06
+    je short 03fe3h                           ; 74 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    jmp near 041b2h                           ; e9 15 02
+    jmp near 041f8h                           ; e9 15 02
     mov al, byte [bp-00805h]                  ; 8a 86 fb f7
     mov es, [bp-018h]                         ; 8e 46 e8
     mov byte [es:si+001h], al                 ; 26 88 44 01
     cmp byte [bp-00805h], 000h                ; 80 be fb f7 00
-    jne short 03fb6h                          ; 75 07
+    jne short 03ffch                          ; 75 07
     mov byte [es:si+002h], 0e0h               ; 26 c6 44 02 e0
-    jmp short 03fc9h                          ; eb 13
+    jmp short 0400fh                          ; eb 13
     cmp byte [bp-00805h], 004h                ; 80 be fb f7 04
-    jnc short 03fc4h                          ; 73 07
+    jnc short 0400ah                          ; 73 07
     mov byte [es:si+002h], 000h               ; 26 c6 44 02 00
-    jmp short 03fc9h                          ; eb 05
+    jmp short 0400fh                          ; eb 05
     mov byte [es:si+002h], 080h               ; 26 c6 44 02 80
     mov bl, byte [bp-00ch]                    ; 8a 5e f4
     xor bh, bh                                ; 30 ff
@@ -5739,7 +5769,7 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     mov ax, word [bp-00804h]                  ; 8b 86 fc f7
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    jne short 03ff8h                          ; 75 05
+    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
@@ -5748,11 +5778,11 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     mov bx, word [bp-00800h]                  ; 8b 9e 00 f8
     mov word [es:si+00eh], bx                 ; 26 89 5c 0e
     test bx, bx                               ; 85 db
-    je short 0401ah                           ; 74 06
+    je short 04060h                           ; 74 06
     cmp bx, 00400h                            ; 81 fb 00 04
-    jbe short 04020h                          ; 76 06
+    jbe short 04066h                          ; 76 06
     mov ax, strict word 0000ch                ; b8 0c 00
-    jmp near 041b2h                           ; e9 92 01
+    jmp near 041f8h                           ; e9 92 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 +5830,7 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     mov cx, strict word 00009h                ; b9 09 00
     sal ax, 1                                 ; d1 e0
     rcl di, 1                                 ; d1 d7
-    loop 04098h                               ; e2 fa
+    loop 040deh                               ; e2 fa
     push di                                   ; 57
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -5815,47 +5845,47 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     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 040cah                           ; 74 06
+    je short 04110h                           ; 74 06
     mov ax, strict word 0000dh                ; b8 0d 00
-    jmp near 041b2h                           ; e9 e8 00
+    jmp near 041f8h                           ; e9 e8 00
     mov es, [bp-018h]                         ; 8e 46 e8
     mov al, byte [es:si+001h]                 ; 26 8a 44 01
     cmp AL, strict byte 002h                  ; 3c 02
-    jc short 040e2h                           ; 72 0d
-    jbe short 040fdh                          ; 76 26
+    jc short 04128h                           ; 72 0d
+    jbe short 04143h                          ; 76 26
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 0410dh                           ; 74 32
+    je short 04153h                           ; 74 32
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 04105h                           ; 74 26
-    jmp near 0415ah                           ; e9 78 00
+    je short 0414bh                           ; 74 26
+    jmp near 041a0h                           ; e9 78 00
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 0415ah                          ; 75 74
+    jne short 041a0h                          ; 75 74
     mov es, [bp-018h]                         ; 8e 46 e8
     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 0415ah                          ; eb 5d
+    jmp short 041a0h                          ; eb 5d
     mov word [es:si+014h], strict word 00012h ; 26 c7 44 14 12 00
-    jmp short 040efh                          ; eb ea
+    jmp short 04135h                          ; eb ea
     mov word [es:si+014h], strict word 00024h ; 26 c7 44 14 24 00
-    jmp short 040efh                          ; eb e2
+    jmp short 04135h                          ; eb e2
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01652h                               ; e8 3c d5
+    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 word [es:si+014h], ax                 ; 26 89 44 14
     mov dx, 001c4h                            ; ba c4 01
     mov ax, word [bp-010h]                    ; 8b 46 f0
-    call 01652h                               ; e8 28 d5
+    call 01652h                               ; e8 e2 d4
     xor ah, ah                                ; 30 e4
     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 17 d5
+    call 01652h                               ; e8 d1 d4
     xor ah, ah                                ; 30 e4
     add ax, bx                                ; 01 d8
     inc ax                                    ; 40
@@ -5863,38 +5893,38 @@ cdrom_boot_:                                 ; 0xf3dd8 LB 0x43d
     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 02 d5
+    call 01652h                               ; e8 bc d4
     xor ah, ah                                ; 30 e4
     inc ax                                    ; 40
     mov es, [bp-018h]                         ; 8e 46 e8
     mov word [es:si+010h], ax                 ; 26 89 44 10
     mov es, [bp-018h]                         ; 8e 46 e8
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 0419bh                           ; 74 37
+    je short 041e1h                           ; 74 37
     cmp byte [es:si+002h], 000h               ; 26 80 7c 02 00
-    jne short 04183h                          ; 75 18
+    jne short 041c9h                          ; 75 18
     mov dx, strict word 00010h                ; ba 10 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 de d4
+    call 01652h                               ; e8 98 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 04198h                          ; eb 15
+    jmp short 041deh                          ; eb 15
     mov dx, 00304h                            ; ba 04 03
     mov ax, word [bp-01ah]                    ; 8b 46 e6
-    call 01652h                               ; e8 c6 d4
+    call 01652h                               ; e8 80 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 c5 d4
+    call 01660h                               ; e8 7f d4
     mov es, [bp-018h]                         ; 8e 46 e8
     cmp byte [es:si+001h], 000h               ; 26 80 7c 01 00
-    je short 041a9h                           ; 74 04
+    je short 041efh                           ; 74 04
     mov byte [es:si], 001h                    ; 26 c6 04 01
     mov es, [bp-018h]                         ; 8e 46 e8
     mov ah, byte [es:si+002h]                 ; 26 8a 64 02
@@ -5908,12 +5938,12 @@ cdrom_boot_:                                 ; 0xf3dd8 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, 0cch, 045h, 0bch
-    db  042h, 0f1h, 042h, 016h, 043h, 0e6h, 042h, 016h, 043h, 0e6h, 042h, 015h, 045h, 0fbh, 044h, 0cch
-    db  045h, 0cch, 045h, 0fbh, 044h, 0fbh, 044h, 0fbh, 044h, 0fbh, 044h, 0fbh, 044h, 0c3h, 045h, 0fbh
-    db  044h, 0cch, 045h, 0cch, 045h, 0cch, 045h, 0cch, 045h, 0cch, 045h, 0cch, 045h, 0cch, 045h, 0cch
-    db  045h, 0cch, 045h, 0cch, 045h, 0cch, 045h, 0cch, 045h
-_int13_cdemu:                                ; 0xf4215 LB 0x453
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -5921,7 +5951,7 @@ _int13_cdemu:                                ; 0xf4215 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 48 d4
+    call 0166eh                               ; e8 02 d4
     mov di, 00366h                            ; bf 66 03
     mov cx, ax                                ; 89 c1
     mov si, di                                ; 89 fe
@@ -5937,20 +5967,20 @@ _int13_cdemu:                                ; 0xf4215 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 0b d4
+    call 01660h                               ; e8 c5 d3
     mov es, cx                                ; 8e c1
     cmp byte [es:di], 000h                    ; 26 80 3d 00
-    je short 0426ch                           ; 74 0f
+    je short 042b2h                           ; 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 04296h                           ; 74 2a
+    je short 042dch                           ; 74 2a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 bc d6
+    call 01933h                               ; e8 76 d6
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -5962,22 +5992,22 @@ _int13_cdemu:                                ; 0xf4215 LB 0x453
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 e6 d6
+    call 01976h                               ; e8 a0 d6
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 045efh                           ; e9 59 03
+    jmp near 04635h                           ; 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 04313h                         ; 77 71
+    jnbe short 04359h                         ; 77 71
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 041bch                            ; bf bc 41
+    mov di, 04202h                            ; bf 02 42
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+041d9h]               ; 2e 8b 85 d9 41
+    mov ax, word [cs:di+0421fh]               ; 2e 8b 85 1f 42
     mov bx, word [bp+016h]                    ; 8b 5e 16
     xor bh, bh                                ; 30 ff
     jmp ax                                    ; ff e0
@@ -5991,29 +6021,29 @@ _int13_cdemu:                                ; 0xf4215 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 042e3h                           ; 74 09
+    je short 04329h                           ; 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 044fbh                           ; e9 15 02
+    jmp near 04541h                           ; e9 15 02
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
-    jmp near 045f7h                           ; e9 06 03
+    jmp near 0463dh                           ; e9 06 03
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 58 d3
+    call 01652h                               ; e8 12 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 54 d3
+    call 01660h                               ; e8 0e d3
     test cl, cl                               ; 84 c9
-    je short 04375h                           ; 74 65
-    jmp near 04608h                           ; e9 f5 02
-    jmp near 045cch                           ; e9 b6 02
+    je short 043bbh                           ; 74 65
+    jmp near 0464eh                           ; e9 f5 02
+    jmp near 04612h                           ; 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
@@ -6039,20 +6069,20 @@ _int13_cdemu:                                ; 0xf4215 LB 0x453
     xor ch, ch                                ; 30 ed
     mov word [bp-014h], cx                    ; 89 4e ec
     test cx, cx                               ; 85 c9
-    je short 04382h                           ; 74 1d
+    je short 043c8h                           ; 74 1d
     cmp di, word [bp-00ah]                    ; 3b 7e f6
-    jc short 04372h                           ; 72 08
+    jc short 043b8h                           ; 72 08
     cmp ax, dx                                ; 39 d0
-    jnc short 04372h                          ; 73 04
+    jnc short 043b8h                          ; 73 04
     cmp bx, si                                ; 39 f3
-    jnbe short 04378h                         ; 77 06
-    jmp near 045efh                           ; e9 7a 02
-    jmp near 044ffh                           ; e9 87 01
+    jnbe short 043beh                         ; 77 06
+    jmp near 04635h                           ; e9 7a 02
+    jmp near 04545h                           ; 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 04385h                          ; 75 03
-    jmp near 044fbh                           ; e9 76 01
+    jne short 043cbh                          ; 75 03
+    jmp near 04541h                           ; e9 76 01
     mov CL, strict byte 004h                  ; b1 04
     mov dx, word [bp+010h]                    ; 8b 56 10
     shr dx, CL                                ; d3 ea
@@ -6065,13 +6095,13 @@ _int13_cdemu:                                ; 0xf4215 LB 0x453
     mov word [bp-010h], dx                    ; 89 56 f0
     xor dl, dl                                ; 30 d2
     xor cx, cx                                ; 31 c9
-    call 0a010h                               ; e8 6a 5c
+    call 0a050h                               ; e8 64 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 0a010h                               ; e8 5d 5c
+    call 0a050h                               ; e8 57 5c
     mov bx, ax                                ; 89 c3
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     dec ax                                    ; 48
@@ -6106,7 +6136,7 @@ _int13_cdemu:                                ; 0xf4215 LB 0x453
     mov cx, strict word 0000ch                ; b9 0c 00
     mov dx, ss                                ; 8c d2
     lea ax, [bp-030h]                         ; 8d 46 d0
-    call 0a080h                               ; e8 76 5c
+    call 0a0c0h                               ; e8 70 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
@@ -6159,7 +6189,7 @@ _int13_cdemu:                                ; 0xf4215 LB 0x453
     mov cx, strict word 00009h                ; b9 09 00
     sal si, 1                                 ; d1 e6
     rcl di, 1                                 ; d1 d7
-    loop 0448fh                               ; e2 fa
+    loop 044d5h                               ; e2 fa
     push di                                   ; 57
     push si                                   ; 56
     push word [bp-01ah]                       ; ff 76 e6
@@ -6175,11 +6205,11 @@ _int13_cdemu:                                ; 0xf4215 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 044fbh                           ; 74 38
+    je short 04541h                           ; 74 38
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 65 d4
+    call 01933h                               ; e8 1f d4
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6191,19 +6221,19 @@ _int13_cdemu:                                ; 0xf4215 LB 0x453
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 90 d4
+    call 01976h                               ; e8 4a 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 045fah                           ; e9 ff 00
+    jmp near 04640h                           ; 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 56 d1
+    call 01660h                               ; e8 10 d1
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6253,35 +6283,35 @@ _int13_cdemu:                                ; 0xf4215 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 045a5h                           ; 74 1c
+    je short 045ebh                           ; 74 1c
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0459dh                           ; 74 10
+    je short 045e3h                           ; 74 10
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 045aah                          ; 75 19
+    jne short 045f0h                          ; 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 045aah                          ; eb 0d
+    jmp short 045f0h                          ; eb 0d
     or cl, 004h                               ; 80 c9 04
     mov word [bp+010h], cx                    ; 89 4e 10
-    jmp short 045aah                          ; eb 05
+    jmp short 045f0h                          ; eb 05
     or cl, 005h                               ; 80 c9 05
-    jmp short 045a0h                          ; eb f6
+    jmp short 045e6h                          ; eb f6
     mov es, [bp-012h]                         ; 8e 46 ee
     cmp byte [es:si+001h], 004h               ; 26 80 7c 01 04
-    jc short 045b7h                           ; 72 03
-    jmp near 044fbh                           ; e9 44 ff
+    jc short 045fdh                           ; 72 03
+    jmp near 04541h                           ; 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 045b4h                          ; eb f1
+    jmp short 045fah                          ; eb f1
     or bh, 003h                               ; 80 cf 03
     mov word [bp+016h], bx                    ; 89 5e 16
-    jmp near 044ffh                           ; e9 33 ff
+    jmp near 04545h                           ; 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 5c d3
+    call 01933h                               ; e8 16 d3
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6291,7 +6321,7 @@ _int13_cdemu:                                ; 0xf4215 LB 0x453
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 8a d3
+    call 01976h                               ; e8 44 d3
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
@@ -6301,16 +6331,16 @@ _int13_cdemu:                                ; 0xf4215 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 58 d0
+    call 01660h                               ; e8 12 d0
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 0450eh                           ; e9 ff fe
+    jmp near 04554h                           ; 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, 051h, 047h, 096h
-    db  04bh, 013h, 047h, 051h, 047h, 008h, 047h, 051h, 047h, 008h, 047h, 051h, 047h, 096h, 04bh, 051h
-    db  047h, 051h, 047h, 096h, 04bh, 096h, 04bh, 096h, 04bh, 096h, 04bh, 096h, 04bh, 035h, 047h, 096h
-    db  04bh, 051h, 047h, 03eh, 047h, 06fh, 047h, 008h, 047h, 06fh, 047h, 0b8h, 048h, 058h, 049h, 06fh
-    db  047h, 082h, 049h, 0b0h, 04bh, 0b8h, 04bh, 051h, 047h
-_int13_cdrom:                                ; 0xf4668 LB 0x585
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6318,20 +6348,20 @@ _int13_cdrom:                                ; 0xf4668 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 f5 cf
+    call 0166eh                               ; e8 af 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 d1 cf
+    call 01660h                               ; e8 8b cf
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     cmp ax, 000e0h                            ; 3d e0 00
-    jc short 0469eh                           ; 72 05
+    jc short 046e4h                           ; 72 05
     cmp ax, 000f0h                            ; 3d f0 00
-    jc short 046bdh                           ; 72 1f
+    jc short 04703h                           ; 72 1f
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6343,9 +6373,9 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 bf d2
+    call 01976h                               ; e8 79 d2
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 04bceh                           ; e9 11 05
+    jmp near 04c14h                           ; e9 11 05
     mov ax, word [bp+010h]                    ; 8b 46 10
     xor ah, ah                                ; 30 e4
     les bx, [bp-00eh]                         ; c4 5e f2
@@ -6353,59 +6383,59 @@ _int13_cdrom:                                ; 0xf4668 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 046e2h                           ; 72 0e
+    jc short 04728h                           ; 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 046afh                          ; eb cd
+    jmp short 046f5h                          ; 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 04751h                         ; 77 63
+    jnbe short 04797h                         ; 77 63
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0001eh                ; b9 1e 00
-    mov di, 0460fh                            ; bf 0f 46
+    mov di, 04655h                            ; bf 55 46
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0462ch]               ; 2e 8b 85 2c 46
+    mov ax, word [cs:di+04672h]               ; 2e 8b 85 72 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 04bd6h                           ; e9 c3 04
+    jmp near 04c1ch                           ; e9 c3 04
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 36 cf
+    call 01652h                               ; e8 f0 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 32 cf
+    call 01660h                               ; e8 ec ce
     test cl, cl                               ; 84 c9
-    je short 0474eh                           ; 74 1c
-    jmp near 04be7h                           ; e9 b2 04
+    je short 04794h                           ; 74 1c
+    jmp near 04c2dh                           ; e9 b2 04
     or bh, 002h                               ; 80 cf 02
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp near 04bd9h                           ; e9 9b 04
+    jmp near 04c1fh                           ; 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 04b9ah                           ; e9 49 04
+    jmp near 04be0h                           ; 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 d7 d1
+    call 01933h                               ; e8 91 d1
     mov al, byte [bp+019h]                    ; 8a 46 19
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6414,7 +6444,7 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     mov ax, 00333h                            ; b8 33 03
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 047b0h                          ; eb 41
+    jmp short 047f6h                          ; eb 41
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov es, [bp+006h]                         ; 8e 46 06
     mov di, bx                                ; 89 df
@@ -6429,7 +6459,7 @@ _int13_cdrom:                                ; 0xf4668 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 047bah                           ; 74 1b
+    je short 04800h                           ; 74 1b
     mov al, byte [bp+019h]                    ; 8a 46 19
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6439,9 +6469,9 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 c2 d1
+    call 01976h                               ; e8 7c d1
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 04bceh                           ; e9 14 04
+    jmp near 04c14h                           ; 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
@@ -6452,15 +6482,15 @@ _int13_cdrom:                                ; 0xf4668 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 047e2h                           ; 74 05
+    je short 04828h                           ; 74 05
     cmp ax, strict word 00047h                ; 3d 47 00
-    jne short 047e5h                          ; 75 03
-    jmp near 04b96h                           ; e9 b1 03
+    jne short 0482bh                          ; 75 03
+    jmp near 04bdch                           ; 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 0a080h                               ; e8 8e 58
+    call 0a0c0h                               ; e8 88 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
@@ -6493,7 +6523,7 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     mov cx, strict word 0000bh                ; b9 0b 00
     sal bx, 1                                 ; d1 e3
     rcl si, 1                                 ; d1 d6
-    loop 04844h                               ; e2 fa
+    loop 0488ah                               ; e2 fa
     push si                                   ; 56
     push bx                                   ; 53
     xor ax, ax                                ; 31 c0
@@ -6512,15 +6542,15 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     mov cx, strict word 0000bh                ; b9 0b 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 04874h                               ; e2 fa
+    loop 048bah                               ; 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 048deh                           ; 74 57
+    je short 04924h                           ; 74 57
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 a1 d0
+    call 01933h                               ; e8 5b d0
     mov al, byte [bp-016h]                    ; 8a 46 ea
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -6531,14 +6561,14 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 cc d0
+    call 01976h                               ; e8 86 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 04bd6h                           ; e9 1e 03
+    jmp near 04c1ch                           ; e9 1e 03
     cmp bx, strict byte 00002h                ; 83 fb 02
-    jnbe short 04929h                         ; 77 6c
+    jnbe short 0496fh                         ; 77 6c
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6547,21 +6577,21 @@ _int13_cdrom:                                ; 0xf4668 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 04941h                           ; 74 6c
+    je short 04987h                           ; 74 6c
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 04919h                           ; 74 3f
+    je short 0495fh                           ; 74 3f
     test bx, bx                               ; 85 db
-    je short 048e1h                           ; 74 03
-    jmp near 04b96h                           ; e9 b5 02
+    je short 04927h                           ; 74 03
+    jmp near 04bdch                           ; e9 b5 02
     cmp cl, 0ffh                              ; 80 f9 ff
-    jne short 048f8h                          ; 75 12
+    jne short 0493eh                          ; 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 04bd6h                           ; e9 de 02
+    jmp near 04c1ch                           ; e9 de 02
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6575,14 +6605,14 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
     mov word [bp+018h], ax                    ; 89 46 18
-    jmp short 048deh                          ; eb c5
+    jmp short 04924h                          ; eb c5
     test cl, cl                               ; 84 c9
-    jne short 0492ch                          ; 75 0f
+    jne short 04972h                          ; 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 04bd9h                           ; e9 b0 02
-    jmp near 04bceh                           ; e9 a2 02
+    jmp near 04c1fh                           ; e9 b0 02
+    jmp near 04c14h                           ; e9 a2 02
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6593,15 +6623,15 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     add bx, ax                                ; 01 c3
     mov byte [es:bx+025h], cl                 ; 26 88 4f 25
     test cl, cl                               ; 84 c9
-    jne short 04953h                          ; 75 0e
+    jne short 04999h                          ; 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 048deh                          ; eb 8b
+    jmp short 04924h                          ; eb 8b
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 04947h                          ; eb ef
+    jmp short 0498dh                          ; eb ef
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6610,14 +6640,14 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     add si, ax                                ; 01 c6
     mov cl, byte [es:si+025h]                 ; 26 8a 4c 25
     test cl, cl                               ; 84 c9
-    je short 04975h                           ; 74 06
+    je short 049bbh                           ; 74 06
     or bh, 0b1h                               ; 80 cf b1
-    jmp near 04738h                           ; e9 c3 fd
-    je short 0499ch                           ; 74 25
+    jmp near 0477eh                           ; e9 c3 fd
+    je short 049e2h                           ; 74 25
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 0b1h                               ; 80 cc b1
-    jmp near 04bd6h                           ; e9 54 02
+    jmp near 04c1ch                           ; e9 54 02
     mov bx, word [bp+00ch]                    ; 8b 5e 0c
     mov cx, word [bp+006h]                    ; 8b 4e 06
     mov si, bx                                ; 89 de
@@ -6626,10 +6656,10 @@ _int13_cdrom:                                ; 0xf4668 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 0499fh                          ; 73 05
-    jmp short 04929h                          ; eb 8d
-    jmp near 04b96h                           ; e9 f7 01
-    jc short 04a01h                           ; 72 60
+    jnc short 049e5h                          ; 73 05
+    jmp short 0496fh                          ; eb 8d
+    jmp near 04bdch                           ; e9 f7 01
+    jc short 04a47h                           ; 72 60
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -6652,8 +6682,8 @@ _int13_cdrom:                                ; 0xf4668 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 04a0ah                          ; 73 03
-    jmp near 04acah                           ; e9 c0 00
+    jnc short 04a50h                          ; 73 03
+    jmp near 04b10h                           ; 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
@@ -6698,25 +6728,25 @@ _int13_cdrom:                                ; 0xf4668 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 04aaah                          ; eb 05
+    jmp short 04af0h                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 04ac0h                          ; 73 16
+    jnc short 04b06h                          ; 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 98 cb
+    call 01652h                               ; e8 52 cb
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 04aa5h                          ; eb e5
+    jmp short 04aebh                          ; 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 04ad3h                          ; 73 03
-    jmp near 04b96h                           ; e9 c3 00
+    jnc short 04b19h                          ; 73 03
+    jmp near 04bdch                           ; e9 c3 00
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -6736,7 +6766,7 @@ _int13_cdrom:                                ; 0xf4668 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 04b1dh                          ; 75 0c
+    jne short 04b63h                          ; 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
@@ -6745,7 +6775,7 @@ _int13_cdrom:                                ; 0xf4668 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 04b52h                          ; 75 16
+    jne short 04b98h                          ; 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
@@ -6760,9 +6790,9 @@ _int13_cdrom:                                ; 0xf4668 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 04b7dh                          ; eb 05
+    jmp short 04bc3h                          ; eb 05
     cmp ah, 040h                              ; 80 fc 40
-    jnc short 04b8dh                          ; 73 10
+    jnc short 04bd3h                          ; 73 10
     mov bl, ah                                ; 88 e3
     xor bh, bh                                ; 30 ff
     mov es, [bp-00ah]                         ; 8e 46 f6
@@ -6770,7 +6800,7 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     add al, byte [es:bx]                      ; 26 02 07
     db  0feh, 0c4h
     ; inc ah                                    ; fe c4
-    jmp short 04b78h                          ; eb eb
+    jmp short 04bbeh                          ; eb eb
     neg al                                    ; f6 d8
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:si+041h], al                 ; 26 88 44 41
@@ -6778,7 +6808,7 @@ _int13_cdrom:                                ; 0xf4668 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 bb ca
+    call 01660h                               ; e8 75 ca
     and byte [bp+01eh], 0feh                  ; 80 66 1e fe
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -6787,16 +6817,16 @@ _int13_cdrom:                                ; 0xf4668 LB 0x585
     retn                                      ; c3
     or bh, 006h                               ; 80 cf 06
     mov word [bp+018h], bx                    ; 89 5e 18
-    jmp short 04be7h                          ; eb 2f
+    jmp short 04c2dh                          ; eb 2f
     cmp bx, strict byte 00006h                ; 83 fb 06
-    je short 04b96h                           ; 74 d9
+    je short 04bdch                           ; 74 d9
     cmp bx, strict byte 00001h                ; 83 fb 01
-    jc short 04bceh                           ; 72 0c
-    jbe short 04b96h                          ; 76 d2
+    jc short 04c14h                           ; 72 0c
+    jbe short 04bdch                          ; 76 d2
     cmp bx, strict byte 00003h                ; 83 fb 03
-    jc short 04bceh                           ; 72 05
+    jc short 04c14h                           ; 72 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jbe short 04b96h                          ; 76 c8
+    jbe short 04bdch                          ; 76 c8
     mov ax, word [bp+018h]                    ; 8b 46 18
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -6805,32 +6835,32 @@ _int13_cdrom:                                ; 0xf4668 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 79 ca
+    call 01660h                               ; e8 33 ca
     or byte [bp+01eh], 001h                   ; 80 4e 1e 01
-    jmp short 04ba9h                          ; eb bc
-print_boot_device_:                          ; 0xf4bed LB 0x51
+    jmp short 04befh                          ; eb bc
+print_boot_device_:                          ; 0xf4c33 LB 0x51
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
     test al, al                               ; 84 c0
-    je short 04bfah                           ; 74 05
+    je short 04c40h                           ; 74 05
     mov dx, strict word 00002h                ; ba 02 00
-    jmp short 04c14h                          ; eb 1a
+    jmp short 04c5ah                          ; eb 1a
     test dl, dl                               ; 84 d2
-    je short 04c03h                           ; 74 05
+    je short 04c49h                           ; 74 05
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 04c14h                          ; eb 11
+    jmp short 04c5ah                          ; eb 11
     test bl, 080h                             ; f6 c3 80
-    jne short 04c0ch                          ; 75 04
+    jne short 04c52h                          ; 75 04
     xor dh, dh                                ; 30 f6
-    jmp short 04c14h                          ; eb 08
+    jmp short 04c5ah                          ; eb 08
     test bl, 080h                             ; f6 c3 80
-    je short 04c38h                           ; 74 27
+    je short 04c7eh                           ; 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 14 cd
+    call 01933h                               ; e8 ce cc
     mov ax, dx                                ; 89 d0
     mov dx, strict word 0000ah                ; ba 0a 00
     imul dx                                   ; f7 ea
@@ -6840,13 +6870,13 @@ print_boot_device_:                          ; 0xf4bed LB 0x51
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 41 cd
+    call 01976h                               ; e8 fb 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_:                         ; 0xf4c3e LB 0x9f
+print_boot_failure_:                         ; 0xf4c84 LB 0x9f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6856,41 +6886,41 @@ print_boot_failure_:                         ; 0xf4c3e LB 0x9f
     xor ch, ch                                ; 30 ed
     mov si, cx                                ; 89 ce
     test al, al                               ; 84 c0
-    je short 04c70h                           ; 74 1f
+    je short 04cb6h                           ; 74 1f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 d7 cc
+    call 01933h                               ; e8 91 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 0b cd
+    call 01976h                               ; e8 c5 cc
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 04cb8h                          ; eb 48
+    jmp short 04cfeh                          ; eb 48
     test dl, dl                               ; 84 d2
-    je short 04c84h                           ; 74 10
+    je short 04ccah                           ; 74 10
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 b4 cc
+    call 01933h                               ; e8 6e cc
     mov cx, 00de4h                            ; b9 e4 0d
-    jmp short 04c5fh                          ; eb db
+    jmp short 04ca5h                          ; eb db
     test bl, 080h                             ; f6 c3 80
-    je short 04c9ah                           ; 74 11
+    je short 04ce0h                           ; 74 11
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 9f cc
+    call 01933h                               ; e8 59 cc
     push si                                   ; 56
     mov cx, 00dd0h                            ; b9 d0 0d
-    jmp short 04ca9h                          ; eb 0f
+    jmp short 04cefh                          ; eb 0f
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 8e cc
+    call 01933h                               ; e8 48 cc
     push si                                   ; 56
     mov cx, 00dc6h                            ; b9 c6 0d
     push cx                                   ; 51
@@ -6898,25 +6928,25 @@ print_boot_failure_:                         ; 0xf4c3e LB 0x9f
     push cx                                   ; 51
     mov cx, strict word 00004h                ; b9 04 00
     push cx                                   ; 51
-    call 01976h                               ; e8 c1 cc
+    call 01976h                               ; e8 7b cc
     add sp, strict byte 00008h                ; 83 c4 08
     cmp byte [bp+004h], 001h                  ; 80 7e 04 01
-    jne short 04cd5h                          ; 75 17
+    jne short 04d1bh                          ; 75 17
     test dh, dh                               ; 84 f6
-    jne short 04cc7h                          ; 75 05
+    jne short 04d0dh                          ; 75 05
     mov dx, 004d5h                            ; ba d5 04
-    jmp short 04ccah                          ; eb 03
+    jmp short 04d10h                          ; 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 a4 cc
+    call 01976h                               ; e8 5e 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_:                    ; 0xf4cdd LB 0x2a
+print_cdromboot_failure_:                    ; 0xf4d23 LB 0x2a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -6926,13 +6956,13 @@ print_cdromboot_failure_:                    ; 0xf4cdd LB 0x2a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 43 cc
+    call 01933h                               ; e8 fd 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 7a cc
+    call 01976h                               ; e8 34 cc
     add sp, strict byte 00006h                ; 83 c4 06
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -6940,7 +6970,7 @@ print_cdromboot_failure_:                    ; 0xf4cdd LB 0x2a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int19_function:                             ; 0xf4d07 LB 0x28d
+_int19_function:                             ; 0xf4d4d LB 0x28d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -6948,17 +6978,17 @@ _int19_function:                             ; 0xf4d07 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 56 c9
+    call 0166eh                               ; e8 10 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 88 c9
+    call 016aeh                               ; e8 42 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 7b c9
+    call 016aeh                               ; e8 35 c9
     and AL, strict byte 0f0h                  ; 24 f0
     mov byte [bp-010h], al                    ; 88 46 f0
     mov byte [bp-00fh], dh                    ; 88 76 f1
@@ -6968,7 +6998,7 @@ _int19_function:                             ; 0xf4d07 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 61 c9
+    call 016aeh                               ; e8 1b c9
     and AL, strict byte 00fh                  ; 24 0f
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 00ch                  ; b1 0c
@@ -6976,38 +7006,38 @@ _int19_function:                             ; 0xf4d07 LB 0x28d
     or word [bp-00eh], ax                     ; 09 46 f2
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01652h                               ; e8 f2 c8
+    call 01652h                               ; e8 ac c8
     test al, al                               ; 84 c0
-    je short 04d71h                           ; 74 0d
+    je short 04db7h                           ; 74 0d
     mov dx, 0037dh                            ; ba 7d 03
     mov ax, bx                                ; 89 d8
-    call 01652h                               ; e8 e6 c8
+    call 01652h                               ; e8 a0 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 04d88h                          ; 75 11
+    jne short 04dceh                          ; 75 11
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 016aeh                               ; e8 31 c9
+    call 016aeh                               ; e8 eb 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 07d94h                               ; e8 0c 30
+    call 07ddah                               ; e8 0c 30
     cmp byte [bp+004h], 002h                  ; 80 7e 04 02
-    jne short 04d93h                          ; 75 05
+    jne short 04dd9h                          ; 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 04da1h                          ; 75 08
+    jne short 04de7h                          ; 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 04dach                          ; 75 05
+    jne short 04df2h                          ; 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 04db6h                          ; 73 04
+    jnc short 04dfch                          ; 73 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     xor al, al                                ; 30 c0
     mov byte [bp-006h], al                    ; 88 46 fa
@@ -7016,7 +7046,7 @@ _int19_function:                             ; 0xf4d07 LB 0x28d
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 67 cb
+    call 01933h                               ; e8 21 cb
     push word [bp-00eh]                       ; ff 76 f2
     mov al, byte [bp+004h]                    ; 8a 46 04
     xor ah, ah                                ; 30 e4
@@ -7025,42 +7055,42 @@ _int19_function:                             ; 0xf4d07 LB 0x28d
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 96 cb
+    call 01976h                               ; e8 50 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 04dfch                           ; 72 0e
-    jbe short 04e0bh                          ; 76 1b
+    jc short 04e42h                           ; 72 0e
+    jbe short 04e51h                          ; 76 1b
     cmp ax, strict word 00004h                ; 3d 04 00
-    je short 04e28h                           ; 74 33
+    je short 04e6eh                           ; 74 33
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 04e1eh                           ; 74 24
-    jmp short 04e57h                          ; eb 5b
+    je short 04e64h                           ; 74 24
+    jmp short 04e9dh                          ; eb 5b
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 04e57h                          ; 75 56
+    jne short 04e9dh                          ; 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 04e6bh                          ; eb 60
+    jmp short 04eb1h                          ; eb 60
     mov dx, 0037ch                            ; ba 7c 03
     mov ax, di                                ; 89 f8
-    call 01652h                               ; e8 3f c8
+    call 01652h                               ; e8 f9 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 04e6bh                          ; eb 4d
+    jmp short 04eb1h                          ; eb 4d
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     mov byte [bp-008h], 001h                  ; c6 46 f8 01
-    jmp short 04e32h                          ; eb 0a
+    jmp short 04e78h                          ; eb 0a
     mov byte [bp-00ah], 001h                  ; c6 46 f6 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04e6bh                           ; 74 39
-    call 03dd8h                               ; e8 a3 ef
+    je short 04eb1h                           ; 74 39
+    call 03e1eh                               ; e8 a3 ef
     mov bx, ax                                ; 89 c3
     test AL, strict byte 0ffh                 ; a8 ff
-    je short 04e5eh                           ; 74 23
-    call 04cddh                               ; e8 9f fe
+    je short 04ea4h                           ; 74 23
+    call 04d23h                               ; e8 9f fe
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -7070,64 +7100,64 @@ _int19_function:                             ; 0xf4d07 LB 0x28d
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     mov cx, strict word 00001h                ; b9 01 00
-    call 04c3eh                               ; e8 e7 fd
+    call 04c84h                               ; e8 e7 fd
     xor ax, ax                                ; 31 c0
     xor dx, dx                                ; 31 d2
-    jmp near 04f8dh                           ; e9 2f 01
+    jmp near 04fd3h                           ; e9 2f 01
     mov dx, 00372h                            ; ba 72 03
     mov ax, di                                ; 89 f8
-    call 0166eh                               ; e8 08 c8
+    call 0166eh                               ; e8 c2 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 04ec6h                          ; 75 55
+    jne short 04f0ch                          ; 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 04e3eh                          ; 75 bf
+    jne short 04e84h                          ; 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 04e3eh                          ; 75 b1
+    jne short 04e84h                          ; 75 b1
     cmp word [es:si], 05024h                  ; 26 81 3c 24 50
-    jne short 04e3eh                          ; 75 aa
+    jne short 04e84h                          ; 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 04ec8h                          ; 75 24
+    jne short 04f0eh                          ; 75 24
     cmp dx, 07445h                            ; 81 fa 45 74
-    jne short 04ec8h                          ; 75 1e
+    jne short 04f0eh                          ; 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 04bedh                               ; e8 31 fd
+    call 04c33h                               ; 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 04ee7h                          ; eb 21
-    jmp short 04eedh                          ; eb 25
+    jmp short 04f2dh                          ; eb 21
+    jmp short 04f33h                          ; 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 04bedh                               ; e8 13 fd
+    call 04c33h                               ; 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 04e3eh                           ; e9 51 ff
+    jmp near 04e84h                           ; e9 51 ff
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 04f1ah                          ; 75 27
+    jne short 04f60h                          ; 75 27
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    jne short 04f1ah                          ; 75 21
+    jne short 04f60h                          ; 75 21
     mov si, 007c0h                            ; be c0 07
     mov es, si                                ; 8e c6
     mov dl, byte [bp-006h]                    ; 8a 56 fa
@@ -7140,32 +7170,32 @@ _int19_function:                             ; 0xf4d07 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 04f1ah                           ; 74 03
-    jmp near 04e3eh                           ; e9 24 ff
+    je short 04f60h                           ; 74 03
+    jmp near 04e84h                           ; e9 24 ff
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    je short 04f24h                           ; 74 04
+    je short 04f6ah                           ; 74 04
     xor bl, bl                                ; 30 db
-    jmp short 04f26h                          ; eb 02
+    jmp short 04f6ch                          ; eb 02
     mov BL, strict byte 001h                  ; b3 01
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 04f2eh                           ; 74 02
+    je short 04f74h                           ; 74 02
     mov BL, strict byte 001h                  ; b3 01
     xor dx, dx                                ; 31 d2
     mov ax, si                                ; 89 f0
-    call 0166eh                               ; e8 39 c7
+    call 0166eh                               ; e8 f3 c6
     mov di, ax                                ; 89 c7
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, si                                ; 89 f0
-    call 0166eh                               ; e8 2f c7
+    call 0166eh                               ; e8 e9 c6
     cmp di, ax                                ; 39 c7
-    je short 04f54h                           ; 74 11
+    je short 04f9ah                           ; 74 11
     test bl, bl                               ; 84 db
-    jne short 04f6ch                          ; 75 25
+    jne short 04fb2h                          ; 75 25
     mov dx, 001feh                            ; ba fe 01
     mov ax, si                                ; 89 f0
-    call 0166eh                               ; e8 1f c7
+    call 0166eh                               ; e8 d9 c6
     cmp ax, 0aa55h                            ; 3d 55 aa
-    je short 04f6ch                           ; 74 18
+    je short 04fb2h                           ; 74 18
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -7175,14 +7205,14 @@ _int19_function:                             ; 0xf4d07 LB 0x28d
     xor dh, dh                                ; 30 f6
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor cx, cx                                ; 31 c9
-    jmp near 04e54h                           ; e9 e8 fe
+    jmp near 04e9ah                           ; 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 04bedh                               ; e8 6f fc
+    call 04c33h                               ; e8 6f fc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
@@ -7195,7 +7225,7 @@ _int19_function:                             ; 0xf4d07 LB 0x28d
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-keyboard_panic_:                             ; 0xf4f94 LB 0x16
+keyboard_panic_:                             ; 0xf4fda LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push ax                                   ; 50
@@ -7203,12 +7233,12 @@ keyboard_panic_:                             ; 0xf4f94 LB 0x16
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 d3 c9
+    call 01976h                               ; e8 8d c9
     add sp, strict byte 00006h                ; 83 c4 06
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-_keyboard_init:                              ; 0xf4faa LB 0x26a
+_keyboard_init:                              ; 0xf4ff0 LB 0x26a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     mov AL, strict byte 0aah                  ; b0 aa
@@ -7220,44 +7250,44 @@ _keyboard_init:                              ; 0xf4faa LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 04fcdh                           ; 74 0d
+    je short 05013h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04fcdh                          ; 76 08
+    jbe short 05013h                          ; 76 08
     xor al, al                                ; 30 c0
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fb6h                          ; eb e9
+    jmp short 04ffch                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04fd6h                          ; 75 05
+    jne short 0501ch                          ; 75 05
     xor ax, ax                                ; 31 c0
-    call 04f94h                               ; e8 be ff
+    call 04fdah                               ; 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 04ff0h                          ; 75 0d
+    jne short 05036h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 04ff0h                          ; 76 08
+    jbe short 05036h                          ; 76 08
     mov AL, strict byte 001h                  ; b0 01
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 04fd9h                          ; eb e9
+    jmp short 0501fh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 04ffah                          ; 75 06
+    jne short 05040h                          ; 75 06
     mov ax, strict word 00001h                ; b8 01 00
-    call 04f94h                               ; e8 9a ff
+    call 04fdah                               ; 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 0500bh                           ; 74 06
+    je short 05051h                           ; 74 06
     mov ax, 003dfh                            ; b8 df 03
-    call 04f94h                               ; e8 89 ff
+    call 04fdah                               ; e8 89 ff
     mov AL, strict byte 0abh                  ; b0 ab
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7267,44 +7297,44 @@ _keyboard_init:                              ; 0xf4faa LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0502bh                           ; 74 0d
+    je short 05071h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0502bh                          ; 76 08
+    jbe short 05071h                          ; 76 08
     mov AL, strict byte 010h                  ; b0 10
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05014h                          ; eb e9
+    jmp short 0505ah                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05035h                          ; 75 06
+    jne short 0507bh                          ; 75 06
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 04f94h                               ; e8 5f ff
+    call 04fdah                               ; 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 0504fh                          ; 75 0d
+    jne short 05095h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0504fh                          ; 76 08
+    jbe short 05095h                          ; 76 08
     mov AL, strict byte 011h                  ; b0 11
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05038h                          ; eb e9
+    jmp short 0507eh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05059h                          ; 75 06
+    jne short 0509fh                          ; 75 06
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 04f94h                               ; e8 3b ff
+    call 04fdah                               ; 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 05069h                           ; 74 06
+    je short 050afh                           ; 74 06
     mov ax, 003e0h                            ; b8 e0 03
-    call 04f94h                               ; e8 2b ff
+    call 04fdah                               ; e8 2b ff
     mov AL, strict byte 0ffh                  ; b0 ff
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7314,67 +7344,67 @@ _keyboard_init:                              ; 0xf4faa LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05089h                           ; 74 0d
+    je short 050cfh                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05089h                          ; 76 08
+    jbe short 050cfh                          ; 76 08
     mov AL, strict byte 020h                  ; b0 20
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05072h                          ; eb e9
+    jmp short 050b8h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05093h                          ; 75 06
+    jne short 050d9h                          ; 75 06
     mov ax, strict word 00014h                ; b8 14 00
-    call 04f94h                               ; e8 01 ff
+    call 04fdah                               ; 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 050adh                          ; 75 0d
+    jne short 050f3h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 050adh                          ; 76 08
+    jbe short 050f3h                          ; 76 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05096h                          ; eb e9
+    jmp short 050dch                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 050b7h                          ; 75 06
+    jne short 050fdh                          ; 75 06
     mov ax, strict word 00015h                ; b8 15 00
-    call 04f94h                               ; e8 dd fe
+    call 04fdah                               ; 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 050c8h                           ; 74 06
+    je short 0510eh                           ; 74 06
     mov ax, 003e1h                            ; b8 e1 03
-    call 04f94h                               ; e8 cc fe
+    call 04fdah                               ; 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 050dah                          ; 75 08
+    jne short 05120h                          ; 75 08
     mov AL, strict byte 031h                  ; b0 31
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050c8h                          ; eb ee
+    jmp short 0510eh                          ; 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 050f3h                           ; 74 0e
+    je short 05139h                           ; 74 0e
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp ax, 000aah                            ; 3d aa 00
-    je short 050f3h                           ; 74 06
+    je short 05139h                           ; 74 06
     mov ax, 003e2h                            ; b8 e2 03
-    call 04f94h                               ; e8 a1 fe
+    call 04fdah                               ; e8 a1 fe
     mov AL, strict byte 0f5h                  ; b0 f5
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7384,44 +7414,44 @@ _keyboard_init:                              ; 0xf4faa LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05113h                           ; 74 0d
+    je short 05159h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05113h                          ; 76 08
+    jbe short 05159h                          ; 76 08
     mov AL, strict byte 040h                  ; b0 40
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 050fch                          ; eb e9
+    jmp short 05142h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0511dh                          ; 75 06
+    jne short 05163h                          ; 75 06
     mov ax, strict word 00028h                ; b8 28 00
-    call 04f94h                               ; e8 77 fe
+    call 04fdah                               ; 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 05137h                          ; 75 0d
+    jne short 0517dh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05137h                          ; 76 08
+    jbe short 0517dh                          ; 76 08
     mov AL, strict byte 041h                  ; b0 41
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05120h                          ; eb e9
+    jmp short 05166h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 05141h                          ; 75 06
+    jne short 05187h                          ; 75 06
     mov ax, strict word 00029h                ; b8 29 00
-    call 04f94h                               ; e8 53 fe
+    call 04fdah                               ; 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 05152h                           ; 74 06
+    je short 05198h                           ; 74 06
     mov ax, 003e3h                            ; b8 e3 03
-    call 04f94h                               ; e8 42 fe
+    call 04fdah                               ; e8 42 fe
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7431,18 +7461,18 @@ _keyboard_init:                              ; 0xf4faa LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 05172h                           ; 74 0d
+    je short 051b8h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05172h                          ; 76 08
+    jbe short 051b8h                          ; 76 08
     mov AL, strict byte 050h                  ; b0 50
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0515bh                          ; eb e9
+    jmp short 051a1h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 0517ch                          ; 75 06
+    jne short 051c2h                          ; 75 06
     mov ax, strict word 00032h                ; b8 32 00
-    call 04f94h                               ; e8 18 fe
+    call 04fdah                               ; e8 18 fe
     mov AL, strict byte 065h                  ; b0 65
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7452,18 +7482,18 @@ _keyboard_init:                              ; 0xf4faa LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 0519ch                           ; 74 0d
+    je short 051e2h                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 0519ch                          ; 76 08
+    jbe short 051e2h                          ; 76 08
     mov AL, strict byte 060h                  ; b0 60
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 05185h                          ; eb e9
+    jmp short 051cbh                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 051a6h                          ; 75 06
+    jne short 051ech                          ; 75 06
     mov ax, strict word 0003ch                ; b8 3c 00
-    call 04f94h                               ; e8 ee fd
+    call 04fdah                               ; e8 ee fd
     mov AL, strict byte 0f4h                  ; b0 f4
     mov dx, strict word 00060h                ; ba 60 00
     out DX, AL                                ; ee
@@ -7473,53 +7503,53 @@ _keyboard_init:                              ; 0xf4faa LB 0x26a
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 051c6h                           ; 74 0d
+    je short 0520ch                           ; 74 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 051c6h                          ; 76 08
+    jbe short 0520ch                          ; 76 08
     mov AL, strict byte 070h                  ; b0 70
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 051afh                          ; eb e9
+    jmp short 051f5h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 051d0h                          ; 75 06
+    jne short 05216h                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04f94h                               ; e8 c4 fd
+    call 04fdah                               ; 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 051eah                          ; 75 0d
+    jne short 05230h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 051eah                          ; 76 08
+    jbe short 05230h                          ; 76 08
     mov AL, strict byte 071h                  ; b0 71
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 051d3h                          ; eb e9
+    jmp short 05219h                          ; eb e9
     test bx, bx                               ; 85 db
-    jne short 051f4h                          ; 75 06
+    jne short 0523ah                          ; 75 06
     mov ax, strict word 00046h                ; b8 46 00
-    call 04f94h                               ; e8 a0 fd
+    call 04fdah                               ; 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 05205h                           ; 74 06
+    je short 0524bh                           ; 74 06
     mov ax, 003e4h                            ; b8 e4 03
-    call 04f94h                               ; e8 8f fd
+    call 04fdah                               ; 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 06704h                               ; e8 f4 14
+    call 0674ah                               ; e8 f4 14
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-enqueue_key_:                                ; 0xf5214 LB 0x9e
+enqueue_key_:                                ; 0xf525a LB 0x9e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -7531,35 +7561,35 @@ enqueue_key_:                                ; 0xf5214 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 44 c4
+    call 0166eh                               ; e8 fe 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 39 c4
+    call 0166eh                               ; e8 f3 c3
     mov si, ax                                ; 89 c6
     lea cx, [si+002h]                         ; 8d 4c 02
     cmp cx, strict byte 0003eh                ; 83 f9 3e
-    jc short 05242h                           ; 72 03
+    jc short 05288h                           ; 72 03
     mov cx, strict word 0001eh                ; b9 1e 00
     cmp cx, di                                ; 39 f9
-    jne short 0524ah                          ; 75 04
+    jne short 05290h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 05274h                          ; eb 2a
+    jmp short 052bah                          ; 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 08 c4
+    call 01660h                               ; e8 c2 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 fa c3
+    call 01660h                               ; e8 b4 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 0b c4
+    call 0167ch                               ; e8 c5 c3
     mov ax, strict word 00001h                ; b8 01 00
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop di                                    ; 5f
@@ -7568,45 +7598,11 @@ enqueue_key_:                                ; 0xf5214 LB 0x9e
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    aam 0c6h                                  ; d4 c6
-    lds di, [bp+si-04948h]                    ; c5 ba b8 b6
-    stosb                                     ; aa
-    popfw                                     ; 9d
-    push sp                                   ; 54
-    push bx                                   ; 53
-    inc si                                    ; 46
-    inc bp                                    ; 45
-    cmp bh, byte [bx+si]                      ; 3a 38
-    sub bl, byte [ss:di]                      ; 36 2a 1d
-    clc                                       ; f8
-    push bp                                   ; 55
-    mov BL, strict byte 053h                  ; b3 53
-    push bx                                   ; 53
-    push bx                                   ; 53
-    push bx                                   ; 53
-    push bx                                   ; 53
-    inc dx                                    ; 42
-    push sp                                   ; 54
-    and AL, strict byte 053h                  ; 24 53
-    db  0c6h, 054h, 037h, 055h
-    ; mov byte [si+037h], 055h                  ; c6 54 37 55
-    ficom word [di-044h]                      ; de 55 bc
-    push bp                                   ; 55
-    cli                                       ; fa
-    push bx                                   ; 53
-    push bx                                   ; 53
-    push bx                                   ; 53
-    push bx                                   ; 53
-    push bx                                   ; 53
-    test byte [si+044h], dl                   ; 84 54 44
-    push bx                                   ; 53
-    pop SS                                    ; 17
-    push bp                                   ; 55
-    pushfw                                    ; 9c
-    push bp                                   ; 55
-    xlatb                                     ; d7
-    push bp                                   ; 55
-_int09_function:                             ; 0xf52b2 LB 0x4cd
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push di                                   ; 57
@@ -7614,86 +7610,86 @@ _int09_function:                             ; 0xf52b2 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 052dfh                          ; 75 1c
+    jne short 05325h                          ; 75 1c
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 65 c6
+    call 01933h                               ; e8 1f c6
     mov ax, 00587h                            ; b8 87 05
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 9d c6
+    call 01976h                               ; e8 57 c6
     add sp, strict byte 00004h                ; 83 c4 04
-    jmp near 053adh                           ; e9 ce 00
+    jmp near 053f3h                           ; e9 ce 00
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 6a c3
+    call 01652h                               ; e8 24 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 5b c3
+    call 01652h                               ; e8 15 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 4c c3
+    call 01652h                               ; e8 06 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, 0527dh                            ; bf 7d 52
+    mov di, 052c3h                            ; bf c3 52
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+0528eh]               ; 2e 8b 85 8e 52
+    mov ax, word [cs:di+052d4h]               ; 2e 8b 85 d4 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 2a c3
+    call 01660h                               ; e8 e4 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 055cch                           ; e9 88 02
+    jmp near 05612h                           ; 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 055cch                           ; e9 79 02
+    jmp near 05612h                           ; e9 79 02
     test byte [bp-010h], 002h                 ; f6 46 f0 02
-    jne short 0538ch                          ; 75 33
+    jne short 053d2h                          ; 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 05367h                          ; 75 05
+    jne short 053adh                          ; 75 05
     mov bx, strict word 00002h                ; bb 02 00
-    jmp short 0536ah                          ; eb 03
+    jmp short 053b0h                          ; eb 03
     mov bx, strict word 00001h                ; bb 01 00
     test byte [bp-004h], 080h                 ; f6 46 fc 80
-    je short 05379h                           ; 74 09
+    je short 053bfh                           ; 74 09
     mov al, bl                                ; 88 d8
     not al                                    ; f6 d0
     and byte [bp-00eh], al                    ; 20 46 f2
-    jmp short 0537ch                          ; eb 03
+    jmp short 053c2h                          ; 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 d4 c2
+    call 01660h                               ; e8 8e 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 05399h                           ; 74 04
+    je short 053dfh                           ; 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
@@ -7701,13 +7697,13 @@ _int09_function:                             ; 0xf52b2 LB 0x4cd
     mov bx, ax                                ; 89 c3
     mov dx, 00096h                            ; ba 96 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 b3 c2
+    call 01660h                               ; e8 6d 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 0538ch                          ; 75 d3
+    jne short 053d2h                          ; 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
@@ -7715,16 +7711,16 @@ _int09_function:                             ; 0xf52b2 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 92 c2
+    call 01660h                               ; e8 4c c2
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 053e3h                           ; 74 0e
+    je short 05429h                           ; 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 053f2h                          ; eb 0f
+    jmp short 05438h                          ; 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
@@ -7732,10 +7728,10 @@ _int09_function:                             ; 0xf52b2 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 68 c2
-    jmp short 0538ch                          ; eb 92
+    call 01660h                               ; e8 22 c2
+    jmp short 053d2h                          ; eb 92
     test byte [bp-00ah], 001h                 ; f6 46 f6 01
-    jne short 0538ch                          ; 75 8c
+    jne short 053d2h                          ; 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
@@ -7743,16 +7739,16 @@ _int09_function:                             ; 0xf52b2 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 4b c2
+    call 01660h                               ; e8 05 c2
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 0542ah                           ; 74 0e
+    je short 05470h                           ; 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 05439h                          ; eb 0f
+    jmp short 0547fh                          ; 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
@@ -7760,8 +7756,8 @@ _int09_function:                             ; 0xf52b2 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 21 c2
-    jmp near 0538ch                           ; e9 4a ff
+    call 01660h                               ; e8 db c1
+    jmp near 053d2h                           ; 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
@@ -7769,16 +7765,16 @@ _int09_function:                             ; 0xf52b2 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 09 c2
+    call 01660h                               ; e8 c3 c1
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 0546ch                           ; 74 0e
+    je short 054b2h                           ; 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 0547bh                          ; eb 0f
+    jmp short 054c1h                          ; 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
@@ -7786,8 +7782,8 @@ _int09_function:                             ; 0xf52b2 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 df c1
-    jmp near 0538ch                           ; e9 08 ff
+    call 01660h                               ; e8 99 c1
+    jmp near 053d2h                           ; 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
@@ -7795,16 +7791,16 @@ _int09_function:                             ; 0xf52b2 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 c7 c1
+    call 01660h                               ; e8 81 c1
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     test AL, strict byte 002h                 ; a8 02
-    je short 054aeh                           ; 74 0e
+    je short 054f4h                           ; 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 054bdh                          ; eb 0f
+    jmp short 05503h                          ; 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
@@ -7812,10 +7808,10 @@ _int09_function:                             ; 0xf52b2 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 9d c1
-    jmp near 0538ch                           ; e9 c6 fe
+    call 01660h                               ; e8 57 c1
+    jmp near 053d2h                           ; e9 c6 fe
     test byte [bp-00ah], 003h                 ; f6 46 f6 03
-    jne short 054e9h                          ; 75 1d
+    jne short 0552fh                          ; 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
@@ -7823,10 +7819,10 @@ _int09_function:                             ; 0xf52b2 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 7f c1
+    call 01660h                               ; e8 39 c1
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor AL, strict byte 020h                  ; 34 20
-    jmp near 0558ah                           ; e9 a1 00
+    jmp near 055d0h                           ; 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
@@ -7834,20 +7830,20 @@ _int09_function:                             ; 0xf52b2 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 62 c1
+    call 01660h                               ; e8 1c c1
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
-    call 0e034h                               ; e8 2d 8b
+    call 0e034h                               ; e8 e7 8a
     mov dx, strict word 00018h                ; ba 18 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 42 c1
+    call 01652h                               ; e8 fc c0
     test AL, strict byte 008h                 ; a8 08
-    jne short 05507h                          ; 75 f3
-    jmp near 0538ch                           ; e9 75 fe
+    jne short 0554dh                          ; 75 f3
+    jmp near 053d2h                           ; e9 75 fe
     test byte [bp-00ah], 003h                 ; f6 46 f6 03
-    je short 05520h                           ; 74 03
-    jmp near 0538ch                           ; e9 6c fe
+    je short 05566h                           ; 74 03
+    jmp near 053d2h                           ; 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
@@ -7855,21 +7851,21 @@ _int09_function:                             ; 0xf52b2 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 2b c1
-    jmp short 0551dh                          ; eb e6
+    call 01660h                               ; e8 e5 c0
+    jmp short 05563h                          ; eb e6
     test byte [bp-00ah], 002h                 ; f6 46 f6 02
-    je short 05570h                           ; 74 33
+    je short 055b6h                           ; 74 33
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 28 c1
+    call 0166eh                               ; e8 e2 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 2b c1
+    call 0167ch                               ; e8 e5 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 03 c1
+    call 01660h                               ; e8 bd c0
     mov AL, strict byte 0aeh                  ; b0 ae
     mov dx, strict word 00064h                ; ba 64 00
     out DX, AL                                ; ee
@@ -7878,8 +7874,8 @@ _int09_function:                             ; 0xf52b2 LB 0x4cd
     pop bp                                    ; 5d
     xor dx, dx                                ; 31 d2
     xor ax, ax                                ; 31 c0
-    call 05214h                               ; e8 a6 fc
-    jmp short 0551dh                          ; eb ad
+    call 0525ah                               ; e8 a6 fc
+    jmp short 05563h                          ; 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
@@ -7887,7 +7883,7 @@ _int09_function:                             ; 0xf52b2 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 db c0
+    call 01660h                               ; e8 95 c0
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor AL, strict byte 010h                  ; 34 10
     mov byte [bp-00eh], al                    ; 88 46 f2
@@ -7895,11 +7891,11 @@ _int09_function:                             ; 0xf52b2 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 c6 c0
-    jmp short 0551dh                          ; eb 81
+    call 01660h                               ; e8 80 c0
+    jmp short 05563h                          ; eb 81
     test byte [bp-00ah], 002h                 ; f6 46 f6 02
-    je short 055a5h                           ; 74 03
-    jmp near 0538ch                           ; e9 e7 fd
+    je short 055ebh                           ; 74 03
+    jmp near 053d2h                           ; 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
@@ -7907,70 +7903,70 @@ _int09_function:                             ; 0xf52b2 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 a6 c0
-    jmp short 055a2h                          ; eb e6
+    call 01660h                               ; e8 60 c0
+    jmp short 055e8h                          ; eb e6
     mov al, byte [bp-006h]                    ; 8a 46 fa
     test AL, strict byte 004h                 ; a8 04
-    jne short 055a2h                          ; 75 df
+    jne short 055e8h                          ; 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 8b c0
-    jmp short 055a2h                          ; eb cb
+    call 01660h                               ; e8 45 c0
+    jmp short 055e8h                          ; eb cb
     mov al, byte [bp-006h]                    ; 8a 46 fa
     and AL, strict byte 0fbh                  ; 24 fb
-    jmp short 055c5h                          ; eb e7
+    jmp short 0560bh                          ; 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 055f8h                          ; 75 11
+    jne short 0563eh                          ; 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 89 c0
+    call 0167ch                               ; e8 43 c0
     jmp far 0f000h:0e05bh                     ; ea 5b e0 00 f0
     test byte [bp-008h], 008h                 ; f6 46 f8 08
-    je short 0560fh                           ; 74 11
+    je short 05655h                           ; 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 053a7h                           ; e9 98 fd
+    jmp near 053edh                           ; e9 98 fd
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test AL, strict byte 080h                 ; a8 80
-    je short 0564dh                           ; 74 37
+    je short 05693h                           ; 74 37
     cmp AL, strict byte 0fah                  ; 3c fa
-    jne short 0562ch                          ; 75 12
+    jne short 05672h                          ; 75 12
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 2f c0
+    call 01652h                               ; e8 e9 bf
     mov bl, al                                ; 88 c3
     or bl, 010h                               ; 80 cb 10
     xor bh, bh                                ; 30 ff
-    jmp short 05642h                          ; eb 16
+    jmp short 05688h                          ; eb 16
     cmp AL, strict byte 0feh                  ; 3c fe
-    je short 05633h                           ; 74 03
-    jmp near 0538ch                           ; e9 59 fd
+    je short 05679h                           ; 74 03
+    jmp near 053d2h                           ; e9 59 fd
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 16 c0
+    call 01652h                               ; e8 d0 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 15 c0
-    jmp short 05630h                          ; eb e3
+    call 01660h                               ; e8 cf bf
+    jmp short 05676h                          ; eb e3
     cmp byte [bp-004h], 058h                  ; 80 7e fc 58
-    jbe short 05675h                          ; 76 22
+    jbe short 056bbh                          ; 76 22
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 d5 c2
+    call 01933h                               ; e8 8f c2
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -7978,12 +7974,12 @@ _int09_function:                             ; 0xf52b2 LB 0x4cd
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 07 c3
+    call 01976h                               ; e8 c1 c2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 053adh                           ; e9 38 fd
+    jmp near 053f3h                           ; e9 38 fd
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test AL, strict byte 008h                 ; a8 08
-    je short 05696h                           ; 74 1a
+    je short 056dch                           ; 74 1a
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov bx, strict word 0000ah                ; bb 0a 00
@@ -7992,9 +7988,9 @@ _int09_function:                             ; 0xf52b2 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 05748h                           ; e9 b2 00
+    jmp near 0578eh                           ; e9 b2 00
     test AL, strict byte 004h                 ; a8 04
-    je short 056b4h                           ; 74 1a
+    je short 056fah                           ; 74 1a
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -8003,24 +7999,24 @@ _int09_function:                             ; 0xf52b2 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 05748h                           ; e9 94 00
+    jmp near 0578eh                           ; 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 056d7h                          ; 76 1a
+    jbe short 0571dh                          ; 76 1a
     mov al, byte [bp-004h]                    ; 8a 46 fc
     cmp AL, strict byte 047h                  ; 3c 47
-    jc short 056d7h                           ; 72 13
+    jc short 0571dh                           ; 72 13
     cmp AL, strict byte 053h                  ; 3c 53
-    jnbe short 056d7h                         ; 77 0f
+    jnbe short 0571dh                         ; 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 05744h                          ; eb 6d
+    jmp short 0578ah                          ; eb 6d
     test byte [bp-00eh], 003h                 ; f6 46 f2 03
-    je short 05715h                           ; 74 38
+    je short 0575bh                           ; 74 38
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0000ah                ; ba 0a 00
@@ -8031,16 +8027,16 @@ _int09_function:                             ; 0xf52b2 LB 0x4cd
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 05705h                           ; 74 0d
+    je short 0574bh                           ; 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 05710h                          ; eb 0b
+    jmp short 05756h                          ; 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 0574bh                          ; eb 36
+    jmp short 05791h                          ; eb 36
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov bx, strict word 0000ah                ; bb 0a 00
@@ -8051,36 +8047,36 @@ _int09_function:                             ; 0xf52b2 LB 0x4cd
     mov dx, ax                                ; 89 c2
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     test ax, dx                               ; 85 d0
-    je short 0573dh                           ; 74 0d
+    je short 05783h                           ; 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 05748h                          ; eb 0b
+    jmp short 0578eh                          ; 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 05770h                          ; 75 1f
+    jne short 057b6h                          ; 75 1f
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jne short 05770h                          ; 75 19
+    jne short 057b6h                          ; 75 19
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 d1 c1
+    call 01933h                               ; e8 8b c1
     mov ax, 005d8h                            ; b8 d8 05
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 09 c2
+    call 01976h                               ; e8 c3 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 0556bh                           ; e9 ec fd
-dequeue_key_:                                ; 0xf577f LB 0x94
+    jmp near 055b1h                           ; e9 ec fd
+dequeue_key_:                                ; 0xf57c5 LB 0x94
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -8093,36 +8089,36 @@ dequeue_key_:                                ; 0xf577f 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 d5 be
+    call 0166eh                               ; e8 8f 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 ca be
+    call 0166eh                               ; e8 84 be
     cmp bx, ax                                ; 39 c3
-    je short 057e5h                           ; 74 3d
+    je short 0582bh                           ; 74 3d
     mov dx, bx                                ; 89 da
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 a2 be
+    call 01652h                               ; e8 5c be
     mov cl, al                                ; 88 c1
     lea dx, [bx+001h]                         ; 8d 57 01
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 97 be
+    call 01652h                               ; e8 51 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 057e0h                           ; 74 13
+    je short 05826h                           ; 74 13
     inc bx                                    ; 43
     inc bx                                    ; 43
     cmp bx, strict byte 0003eh                ; 83 fb 3e
-    jc short 057d7h                           ; 72 03
+    jc short 0581dh                           ; 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 9c be
+    call 0167ch                               ; e8 56 be
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 057e7h                          ; eb 02
+    jmp short 0582dh                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
@@ -8133,34 +8129,36 @@ dequeue_key_:                                ; 0xf577f 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+di], bl                      ; 00 19
-    pop cx                                    ; 59
-    aam 058h                                  ; d4 58
-    imul bx, word [bx+di-053h], 0c059h        ; 69 59 ad 59 c0
+    add byte [bx+059h], bl                    ; 00 5f 59
+    sbb bl, byte [bx+di-051h]                 ; 1a 59 af
     pop cx                                    ; 59
-    out 059h, ax                              ; e7 59
-    db  0f1h
-    pop cx                                    ; 59
-    pushaw                                    ; 60
+    db  0f3h, 059h
+    ; rep pop cx                                ; f3 59
+    push ES                                   ; 06
     pop dx                                    ; 5a
-    xchg di, ax                               ; 97
+    sub ax, 0375ah                            ; 2d 5a 37
     pop dx                                    ; 5a
-    db  0c7h, 05ah, 0feh, 05ah, 063h
-    ; mov word [bp+si-002h], 0635ah             ; c7 5a fe 5a 63
+    cmpsb                                     ; a6
+    pop dx                                    ; 5a
+    fstp qword [bp+si+00dh]                   ; dd 5a 0d
+    pop bx                                    ; 5b
+    inc sp                                    ; 44
+    pop bx                                    ; 5b
+    db  0a9h
     pop cx                                    ; 59
-_int16_function:                             ; 0xf5813 LB 0x2f6
+_int16_function:                             ; 0xf5859 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 2f be
+    call 01652h                               ; e8 e9 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 22 be
+    call 01652h                               ; e8 dc bd
     mov bl, al                                ; 88 c3
     mov dl, cl                                ; 88 ca
     xor dh, dh                                ; 30 f6
@@ -8171,7 +8169,7 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     xor ah, ah                                ; 30 e4
     xor al, dl                                ; 30 d0
     test ax, ax                               ; 85 c0
-    je short 058b3h                           ; 74 6c
+    je short 058f9h                           ; 74 6c
     cli                                       ; fa
     mov AL, strict byte 0edh                  ; b0 ed
     mov dx, strict word 00060h                ; ba 60 00
@@ -8181,17 +8179,17 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05860h                          ; 75 08
+    jne short 058a6h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0584eh                          ; eb ee
+    jmp short 05894h                          ; 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 058b2h                          ; 75 47
+    jne short 058f8h                          ; 75 47
     and bl, 0c8h                              ; 80 e3 c8
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
@@ -8214,11 +8212,11 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 058a1h                          ; 75 08
+    jne short 058e7h                          ; 75 08
     mov AL, strict byte 021h                  ; b0 21
     mov dx, 00080h                            ; ba 80 00
     out DX, AL                                ; ee
-    jmp short 0588fh                          ; eb ee
+    jmp short 058d5h                          ; eb ee
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -8226,21 +8224,21 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     xor bh, bh                                ; 30 ff
     mov dx, 00097h                            ; ba 97 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 ae bd
+    call 01660h                               ; e8 68 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 05919h                         ; 77 5a
+    jnbe short 0595fh                         ; 77 5a
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 0000ch                ; b9 0c 00
-    mov di, 057f0h                            ; bf f0 57
+    mov di, 05836h                            ; bf 36 58
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di+057fbh]               ; 2e 8b 85 fb 57
+    mov ax, word [cs:di+05841h]               ; 2e 8b 85 41 58
     jmp ax                                    ; ff e0
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
@@ -8248,30 +8246,30 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     lea bx, [bp-006h]                         ; 8d 5e fa
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0577fh                               ; e8 9a fe
+    call 057c5h                               ; e8 9a fe
     test ax, ax                               ; 85 c0
-    jne short 058f7h                          ; 75 0e
+    jne short 0593dh                          ; 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 82 c0
+    call 01976h                               ; e8 3c c0
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 05903h                           ; 74 06
+    je short 05949h                           ; 74 06
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je short 05909h                           ; 74 06
+    je short 0594fh                           ; 74 06
     cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
-    jne short 0590dh                          ; 75 04
+    jne short 05953h                          ; 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 05963h                           ; e9 4a 00
+    jmp near 059a9h                           ; 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 0f c0
+    call 01933h                               ; e8 c9 bf
     mov CL, strict byte 008h                  ; b1 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     shr ax, CL                                ; d3 e8
@@ -8280,12 +8278,12 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 3f c0
+    call 01976h                               ; e8 f9 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 ee bf
+    call 01933h                               ; e8 a8 bf
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     push ax                                   ; 50
     mov ax, word [bp+010h]                    ; 8b 46 10
@@ -8298,7 +8296,7 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 16 c0
+    call 01976h                               ; e8 d0 bf
     add sp, strict byte 0000ch                ; 83 c4 0c
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
@@ -8311,49 +8309,49 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     lea bx, [bp-006h]                         ; 8d 5e fa
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0577fh                               ; e8 01 fe
+    call 057c5h                               ; e8 01 fe
     test ax, ax                               ; 85 c0
-    jne short 05988h                          ; 75 06
+    jne short 059ceh                          ; 75 06
     or word [bp+01ch], strict byte 00040h     ; 83 4e 1c 40
-    jmp short 05963h                          ; eb db
+    jmp short 059a9h                          ; eb db
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    je short 05994h                           ; 74 06
+    je short 059dah                           ; 74 06
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    je short 0599ah                           ; 74 06
+    je short 059e0h                           ; 74 06
     cmp byte [bp-006h], 0e0h                  ; 80 7e fa e0
-    jne short 0599eh                          ; 75 04
+    jne short 059e4h                          ; 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 05963h                          ; eb b6
+    jmp short 059a9h                          ; eb b6
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 9c bc
+    call 01652h                               ; e8 56 bc
     mov dx, word [bp+012h]                    ; 8b 56 12
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
-    jmp short 05963h                          ; eb a3
+    jmp short 059a9h                          ; 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 05214h                               ; e8 43 f8
+    call 0525ah                               ; e8 43 f8
     test ax, ax                               ; 85 c0
-    jne short 059dfh                          ; 75 0a
+    jne short 05a25h                          ; 75 0a
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor al, al                                ; 30 c0
     or AL, strict byte 001h                   ; 0c 01
-    jmp near 05913h                           ; e9 34 ff
+    jmp near 05959h                           ; e9 34 ff
     and word [bp+012h], 0ff00h                ; 81 66 12 00 ff
-    jmp near 05963h                           ; e9 7c ff
+    jmp near 059a9h                           ; 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 05913h                           ; e9 22 ff
+    jmp near 05959h                           ; e9 22 ff
     mov byte [bp-004h], 002h                  ; c6 46 fc 02
     xor cx, cx                                ; 31 c9
     cli                                       ; fa
@@ -8366,40 +8364,40 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 05a18h                          ; 75 0d
+    jne short 05a5eh                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05a18h                          ; 76 08
+    jbe short 05a5eh                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05a01h                          ; eb e9
+    jmp short 05a47h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05a5ah                          ; 76 3e
+    jbe short 05aa0h                          ; 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 05a5ah                          ; 75 33
+    jne short 05aa0h                          ; 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 05a41h                          ; 75 0d
+    jne short 05a87h                          ; 75 0d
     dec bx                                    ; 4b
     test bx, bx                               ; 85 db
-    jbe short 05a41h                          ; 76 08
+    jbe short 05a87h                          ; 76 08
     mov dx, 00080h                            ; ba 80 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 05a2ah                          ; eb e9
+    jmp short 05a70h                          ; eb e9
     test bx, bx                               ; 85 db
-    jbe short 05a51h                          ; 76 0c
+    jbe short 05a97h                          ; 76 0c
     mov bl, ch                                ; 88 eb
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
@@ -8409,31 +8407,31 @@ _int16_function:                             ; 0xf5813 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 05a27h                         ; 77 cd
+    jnbe short 05a6dh                         ; 77 cd
     mov word [bp+00ch], cx                    ; 89 4e 0c
-    jmp near 05963h                           ; e9 03 ff
+    jmp near 059a9h                           ; 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 0577fh                               ; e8 0e fd
+    call 057c5h                               ; e8 0e fd
     test ax, ax                               ; 85 c0
-    jne short 05a83h                          ; 75 0e
+    jne short 05ac9h                          ; 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 f6 be
+    call 01976h                               ; e8 b0 be
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 05a8ch                          ; 75 03
-    jmp near 0590dh                           ; e9 81 fe
+    jne short 05ad2h                          ; 75 03
+    jmp near 05953h                           ; e9 81 fe
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    jne short 05a95h                          ; 75 03
-    jmp near 05909h                           ; e9 74 fe
-    jmp short 05a89h                          ; eb f2
+    jne short 05adbh                          ; 75 03
+    jmp near 0594fh                           ; e9 74 fe
+    jmp short 05acfh                          ; eb f2
     or word [bp+01ch], 00200h                 ; 81 4e 1c 00 02
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
@@ -8441,42 +8439,42 @@ _int16_function:                             ; 0xf5813 LB 0x2f6
     lea bx, [bp-006h]                         ; 8d 5e fa
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 0577fh                               ; e8 d3 fc
+    call 057c5h                               ; e8 d3 fc
     test ax, ax                               ; 85 c0
-    jne short 05ab3h                          ; 75 03
-    jmp near 05982h                           ; e9 cf fe
+    jne short 05af9h                          ; 75 03
+    jmp near 059c8h                           ; e9 cf fe
     cmp byte [bp-008h], 000h                  ; 80 7e f8 00
-    jne short 05abch                          ; 75 03
-    jmp near 0599eh                           ; e9 e2 fe
+    jne short 05b02h                          ; 75 03
+    jmp near 059e4h                           ; e9 e2 fe
     cmp byte [bp-006h], 0f0h                  ; 80 7e fa f0
-    jne short 05ac5h                          ; 75 03
-    jmp near 0599ah                           ; e9 d5 fe
-    jmp short 05ab9h                          ; eb f2
+    jne short 05b0bh                          ; 75 03
+    jmp near 059e0h                           ; e9 d5 fe
+    jmp short 05affh                          ; eb f2
     mov dx, strict word 00017h                ; ba 17 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 82 bb
+    call 01652h                               ; e8 3c 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 71 bb
+    call 01652h                               ; e8 2b 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 63 bb
+    call 01652h                               ; e8 1d 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 059bbh                           ; e9 bd fe
+    jmp near 05a01h                           ; e9 bd fe
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     or ah, 080h                               ; 80 cc 80
-    jmp near 05913h                           ; e9 0a fe
-set_geom_lba_:                               ; 0xf5b09 LB 0xeb
+    jmp near 05959h                           ; e9 0a fe
+set_geom_lba_:                               ; 0xf5b4f LB 0xeb
     push bx                                   ; 53
     push cx                                   ; 51
     push si                                   ; 56
@@ -8494,32 +8492,32 @@ set_geom_lba_:                               ; 0xf5b09 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 0a060h                               ; e8 28 45
+    call 0a0a0h                               ; e8 22 45
     test ax, ax                               ; 85 c0
-    jne short 05b48h                          ; 75 0c
+    jne short 05b8eh                          ; 75 0c
     test bx, bx                               ; 85 db
-    jne short 05b48h                          ; 75 08
+    jne short 05b8eh                          ; 75 08
     test cx, cx                               ; 85 c9
-    jne short 05b48h                          ; 75 04
+    jne short 05b8eh                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 05b4fh                           ; 74 07
+    je short 05b95h                           ; 74 07
     mov bx, strict word 0ffffh                ; bb ff ff
     mov si, bx                                ; 89 de
-    jmp short 05b55h                          ; eb 06
+    jmp short 05b9bh                          ; 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 05b61h                          ; eb 05
+    jmp short 05ba7h                          ; eb 05
     cmp bx, strict byte 00004h                ; 83 fb 04
-    jnl short 05b84h                          ; 7d 23
+    jnl short 05bcah                          ; 7d 23
     mov ax, word [bp-006h]                    ; 8b 46 fa
     cmp si, ax                                ; 39 c6
-    jc short 05b72h                           ; 72 0a
-    jne short 05b7bh                          ; 75 11
+    jc short 05bb8h                           ; 72 0a
+    jne short 05bc1h                          ; 75 11
     mov ax, word [bp-004h]                    ; 8b 46 fc
     cmp ax, word [bp-008h]                    ; 3b 46 f8
-    jnbe short 05b7bh                         ; 77 09
+    jnbe short 05bc1h                         ; 77 09
     mov ax, word [bp-002h]                    ; 8b 46 fe
     inc ax                                    ; 40
     shr ax, 1                                 ; d1 e8
@@ -8527,20 +8525,20 @@ set_geom_lba_:                               ; 0xf5b09 LB 0xeb
     shr word [bp-006h], 1                     ; d1 6e fa
     rcr word [bp-008h], 1                     ; d1 5e f8
     inc bx                                    ; 43
-    jmp short 05b5ch                          ; eb d8
+    jmp short 05ba2h                          ; 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 0a010h                               ; e8 7f 44
+    call 0a050h                               ; e8 79 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 0a030h                               ; e8 93 44
+    call 0a070h                               ; e8 8d 44
     mov word [es:di+002h], ax                 ; 26 89 45 02
     cmp ax, 00400h                            ; 3d 00 04
-    jbe short 05bach                          ; 76 06
+    jbe short 05bf2h                          ; 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
@@ -8552,51 +8550,54 @@ set_geom_lba_:                               ; 0xf5b09 LB 0xeb
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn 00008h                               ; c2 08 00
-    jl short 05c20h                           ; 7c 5c
-    lea bx, [si-04bh]                         ; 8d 5c b5
+    retn 0d35ch                               ; c2 5c d3
     pop sp                                    ; 5c
-    mov CH, strict byte 05ch                  ; b5 5c
-    mov CH, strict byte 05ch                  ; b5 5c
-    mov word [0df5eh], ax                     ; a3 5e df
-    pop di                                    ; 5f
-    fistp word [bx-02dh]                      ; df 5f d3
-    pop si                                    ; 5e
-    mov cx, 0df5fh                            ; b9 5f df
-    pop di                                    ; 5f
-    fistp word [bx-047h]                      ; df 5f b9
-    pop di                                    ; 5f
-    mov cx, 0df5fh                            ; b9 5f df
-    pop di                                    ; 5f
-    fistp word [bx+039h]                      ; df 5f 39
-    pop di                                    ; 5f
-    mov cx, 0df5fh                            ; b9 5f df
+    sti                                       ; fb
+    pop sp                                    ; 5c
+    sti                                       ; fb
+    pop sp                                    ; 5c
+    sti                                       ; fb
+    pop sp                                    ; 5c
+    jmp near 08173h                           ; e9 5e 25
+    pushaw                                    ; 60
+    and ax, 01960h                            ; 25 60 19
     pop di                                    ; 5f
-    fistp word [bx-047h]                      ; df 5f b9
+    call far [bx+025h]                        ; ff 5f 25
+    pushaw                                    ; 60
+    and ax, 0ff60h                            ; 25 60 ff
     pop di                                    ; 5f
-    push strict byte 0005fh                   ; 6a 5f
-    fistp word [bx-021h]                      ; df 5f df
+    call far [bx+025h]                        ; ff 5f 25
+    pushaw                                    ; 60
+    and ax, 07f60h                            ; 25 60 7f
     pop di                                    ; 5f
-    db  0dfh
+    call far [bx+025h]                        ; ff 5f 25
+    pushaw                                    ; 60
+    and ax, 0ff60h                            ; 25 60 ff
     pop di                                    ; 5f
-_int13_harddisk:                             ; 0xf5bf4 LB 0x446
+    mov AL, strict byte 05fh                  ; b0 5f
+    and ax, 02560h                            ; 25 60 25
+    pushaw                                    ; 60
+    db  025h
+    pushaw                                    ; 60
+_int13_harddisk:                             ; 0xf5c3a 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 6b ba
+    call 0166eh                               ; e8 25 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 4c ba
+    call 01660h                               ; e8 06 ba
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 05c23h                           ; 72 05
+    jc short 05c69h                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 05c42h                           ; 72 1f
+    jc short 05c88h                           ; 72 1f
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8608,9 +8609,9 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 3a bd
+    call 01976h                               ; e8 f4 bc
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 05ffah                           ; e9 b8 03
+    jmp near 06040h                           ; e9 b8 03
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     mov es, [bp-004h]                         ; 8e 46 fc
@@ -8619,30 +8620,30 @@ _int13_harddisk:                             ; 0xf5bf4 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 05c69h                           ; 72 0e
+    jc short 05cafh                           ; 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 05c34h                          ; eb cb
+    jmp short 05c7ah                          ; 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 05cb2h                         ; 77 3f
+    jnbe short 05cf8h                         ; 77 3f
     mov bx, ax                                ; 89 c3
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx+05bc2h]                   ; 2e ff a7 c2 5b
+    jmp word [cs:bx+05c08h]                   ; 2e ff a7 08 5c
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jnc short 05c8ah                          ; 73 08
+    jnc short 05cd0h                          ; 73 08
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
-    call 01db8h                               ; e8 2e c1
-    jmp near 05ebch                           ; e9 2f 02
+    call 01db8h                               ; e8 e8 c0
+    jmp near 05f02h                           ; e9 2f 02
     mov dx, strict word 00074h                ; ba 74 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 bc b9
+    call 01652h                               ; e8 76 b9
     mov cl, al                                ; 88 c1
     mov dx, word [bp+016h]                    ; 8b 56 16
     mov dh, al                                ; 88 c6
@@ -8650,11 +8651,11 @@ _int13_harddisk:                             ; 0xf5bf4 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 b5 b9
+    call 01660h                               ; e8 6f b9
     test cl, cl                               ; 84 c9
-    je short 05d11h                           ; 74 62
-    jmp near 06013h                           ; e9 61 03
-    jmp near 05fdfh                           ; e9 2a 03
+    je short 05d57h                           ; 74 62
+    jmp near 06059h                           ; e9 61 03
+    jmp near 06025h                           ; e9 2a 03
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     mov word [bp-00eh], ax                    ; 89 46 f2
@@ -8673,13 +8674,13 @@ _int13_harddisk:                             ; 0xf5bf4 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 05cebh                         ; 77 04
+    jnbe short 05d31h                         ; 77 04
     test ax, ax                               ; 85 c0
-    jne short 05d14h                          ; 75 29
+    jne short 05d5ah                          ; 75 29
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 3d bc
+    call 01933h                               ; e8 f7 bb
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8689,10 +8690,10 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 6b bc
+    call 01976h                               ; e8 25 bc
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05ffah                           ; e9 e9 02
-    jmp near 05ec0h                           ; e9 ac 01
+    jmp near 06040h                           ; e9 e9 02
+    jmp near 05f06h                           ; e9 ac 01
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -8705,15 +8706,15 @@ _int13_harddisk:                             ; 0xf5bf4 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 05d42h                          ; 76 09
+    jbe short 05d88h                          ; 76 09
     cmp cx, word [bp-00ch]                    ; 3b 4e f4
-    jbe short 05d42h                          ; 76 04
+    jbe short 05d88h                          ; 76 04
     cmp di, dx                                ; 39 d7
-    jbe short 05d73h                          ; 76 31
+    jbe short 05db9h                          ; 76 31
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 e6 bb
+    call 01933h                               ; e8 a0 bb
     push di                                   ; 57
     push word [bp-00ch]                       ; ff 76 f4
     push word [bp-00ah]                       ; ff 76 f6
@@ -8728,13 +8729,13 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 09 bc
+    call 01976h                               ; e8 c3 bb
     add sp, strict byte 00010h                ; 83 c4 10
-    jmp near 05ffah                           ; e9 87 02
+    jmp near 06040h                           ; 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 05d9dh                           ; 74 20
+    je short 05de3h                           ; 74 20
     mov al, byte [bp-002h]                    ; 8a 46 fe
     mov dx, strict word 0001ch                ; ba 1c 00
     imul dx                                   ; f7 ea
@@ -8742,25 +8743,25 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     mov bx, si                                ; 89 f3
     add bx, ax                                ; 01 c3
     cmp cx, word [es:bx+030h]                 ; 26 3b 4f 30
-    jne short 05da6h                          ; 75 14
+    jne short 05dech                          ; 75 14
     mov ax, word [es:bx+034h]                 ; 26 8b 47 34
     cmp ax, word [bp-010h]                    ; 3b 46 f0
-    je short 05da0h                           ; 74 05
-    jmp short 05da6h                          ; eb 09
-    jmp near 05ebch                           ; e9 1c 01
+    je short 05de6h                           ; 74 05
+    jmp short 05dech                          ; eb 09
+    jmp near 05f02h                           ; e9 1c 01
     cmp byte [bp-002h], 008h                  ; 80 7e fe 08
-    jc short 05dd5h                           ; 72 2f
+    jc short 05e1bh                           ; 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 0a010h                               ; e8 5e 42
+    call 0a050h                               ; e8 58 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 0a010h                               ; e8 4f 42
+    call 0a050h                               ; e8 49 42
     xor bx, bx                                ; 31 db
     add ax, di                                ; 01 f8
     adc dx, bx                                ; 11 da
@@ -8817,11 +8818,11 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     or bx, ax                                 ; 09 c3
     mov word [bp+016h], bx                    ; 89 5e 16
     test dl, dl                               ; 84 d2
-    je short 05ebch                           ; 74 4a
+    je short 05f02h                           ; 74 4a
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 b6 ba
+    call 01933h                               ; e8 70 ba
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8833,27 +8834,27 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 e1 ba
+    call 01976h                               ; e8 9b 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 06002h                           ; e9 5f 01
+    jmp near 06048h                           ; 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 85 ba
+    call 01933h                               ; e8 3f ba
     mov ax, 0077ah                            ; b8 7a 07
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 bd ba
+    call 01976h                               ; e8 77 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 95 b7
+    call 01660h                               ; e8 4f b7
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
@@ -8896,7 +8897,7 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     xor al, bl                                ; 30 d8
     or ax, dx                                 ; 09 d0
     mov word [bp+012h], ax                    ; 89 46 12
-    jmp short 05ebch                          ; eb 83
+    jmp short 05f02h                          ; eb 83
     mov al, byte [bp-002h]                    ; 8a 46 fe
     cwd                                       ; 99
     db  02bh, 0c2h
@@ -8913,12 +8914,12 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 0c0h                  ; 24 c0
     cmp AL, strict byte 040h                  ; 3c 40
-    jne short 05f5fh                          ; 75 03
-    jmp near 05ebch                           ; e9 5d ff
+    jne short 05fa5h                          ; 75 03
+    jmp near 05f02h                           ; e9 5d ff
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 0aah                               ; 80 cc aa
-    jmp near 06002h                           ; e9 98 00
+    jmp near 06048h                           ; e9 98 00
     mov al, byte [bp-002h]                    ; 8a 46 fe
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -8934,10 +8935,10 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-00ch]                    ; 8b 5e f4
     xor cx, cx                                ; 31 c9
-    call 0a010h                               ; e8 78 40
+    call 0a050h                               ; e8 72 40
     mov bx, di                                ; 89 fb
     xor cx, cx                                ; 31 c9
-    call 0a010h                               ; e8 71 40
+    call 0a050h                               ; e8 6b 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
@@ -8946,11 +8947,11 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     xor ah, ah                                ; 30 e4
     or ah, 003h                               ; 80 cc 03
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp near 05ec0h                           ; e9 07 ff
+    jmp near 05f06h                           ; 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 6f b9
+    call 01933h                               ; e8 29 b9
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -8960,20 +8961,20 @@ _int13_harddisk:                             ; 0xf5bf4 LB 0x446
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 9d b9
+    call 01976h                               ; e8 57 b9
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 05ebch                           ; e9 dd fe
+    jmp near 05f02h                           ; 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 49 b9
+    call 01933h                               ; e8 03 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 05d03h                           ; e9 09 fd
+    jmp near 05d49h                           ; e9 09 fd
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -8982,56 +8983,50 @@ _int13_harddisk:                             ; 0xf5bf4 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 4d b6
+    call 01660h                               ; e8 07 b6
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp near 05ecfh                           ; e9 b5 fe
-    aam 060h                                  ; d4 60
-    pop ES                                    ; 07
+    jmp near 05f15h                           ; e9 b5 fe
+    sbb ah, byte [bx+di+04dh]                 ; 1a 61 4d
     popaw                                     ; 61
-    pop ES                                    ; 07
+    dec bp                                    ; 4d
     popaw                                     ; 61
-    pop ES                                    ; 07
+    dec bp                                    ; 4d
     popaw                                     ; 61
-    sbb word [di+07ch], sp                    ; 19 65 7c
-    bound ax, [bx]                            ; 62 07
+    pop di                                    ; 5f
+    db  065h, 0c2h, 062h, 04dh
+    ; gs retn 04d62h                            ; 65 c2 62 4d
     popaw                                     ; 61
-    db  082h, 062h, 019h, 065h
-    ; and byte [bp+si+019h], 065h               ; 82 62 19 65
-    in AL, DX                                 ; ec
-    pushaw                                    ; 60
-    in AL, DX                                 ; ec
-    pushaw                                    ; 60
-    in AL, DX                                 ; ec
-    pushaw                                    ; 60
-    in AL, DX                                 ; ec
-    pushaw                                    ; 60
-    xor byte [di-014h], ah                    ; 30 65 ec
-    pushaw                                    ; 60
-    in AL, DX                                 ; ec
-    pushaw                                    ; 60
-_int13_harddisk_ext:                         ; 0xf603a LB 0x52b
+    enter 05f62h, 065h                        ; c8 62 5f 65
+    xor ah, byte [bx+di+032h]                 ; 32 61 32
+    popaw                                     ; 61
+    xor ah, byte [bx+di+032h]                 ; 32 61 32
+    popaw                                     ; 61
+    jbe short 060e1h                          ; 76 65
+    xor ah, byte [bx+di+032h]                 ; 32 61 32
+    popaw                                     ; 61
+_int13_harddisk_ext:                         ; 0xf6080 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 25 b6
+    call 0166eh                               ; e8 df 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 19 b6
+    call 0166eh                               ; e8 d3 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 f8 b5
+    call 01660h                               ; e8 b2 b5
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     cmp ax, 00080h                            ; 3d 80 00
-    jc short 06077h                           ; 72 05
+    jc short 060bdh                           ; 72 05
     cmp ax, 00090h                            ; 3d 90 00
-    jc short 06096h                           ; 72 1f
+    jc short 060dch                           ; 72 1f
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9043,9 +9038,9 @@ _int13_harddisk_ext:                         ; 0xf603a LB 0x52b
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 e6 b8
+    call 01976h                               ; e8 a0 b8
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 06546h                           ; e9 b0 04
+    jmp near 0658ch                           ; e9 b0 04
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     xor ah, ah                                ; 30 e4
     les bx, [bp-008h]                         ; c4 5e f8
@@ -9053,41 +9048,41 @@ _int13_harddisk_ext:                         ; 0xf603a 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 060bbh                           ; 72 0e
+    jc short 06101h                           ; 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 06088h                          ; eb cd
+    jmp short 060ceh                          ; 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 060ech                         ; 77 24
+    jnbe short 06132h                         ; 77 24
     sal bx, 1                                 ; d1 e3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
-    jmp word [cs:bx+0601ah]                   ; 2e ff a7 1a 60
+    jmp word [cs:bx+06060h]                   ; 2e ff a7 60 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 0651dh                           ; e9 31 04
+    jmp near 06563h                           ; 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 3c b8
+    call 01933h                               ; e8 f6 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 061a4h                           ; e9 9d 00
+    jmp near 061eah                           ; 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
@@ -9103,7 +9098,7 @@ _int13_harddisk_ext:                         ; 0xf603a LB 0x52b
     xor ax, ax                                ; 31 c0
     xor bx, bx                                ; 31 db
     mov si, strict word 00020h                ; be 20 00
-    call 0a070h                               ; e8 36 3f
+    call 0a0b0h                               ; e8 30 3f
     mov word [bp-00eh], ax                    ; 89 46 f2
     mov word [bp-010h], bx                    ; 89 5e f0
     mov si, dx                                ; 89 d6
@@ -9120,23 +9115,23 @@ _int13_harddisk_ext:                         ; 0xf603a 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 0618ch                         ; 77 22
-    jne short 061b2h                          ; 75 46
+    jnbe short 061d2h                         ; 77 22
+    jne short 061f8h                          ; 75 46
     mov dx, word [bp-010h]                    ; 8b 56 f0
     cmp dx, word [es:bx+03ah]                 ; 26 3b 57 3a
-    jnbe short 0618ch                         ; 77 17
+    jnbe short 061d2h                         ; 77 17
     mov dx, word [bp-010h]                    ; 8b 56 f0
     cmp dx, word [es:bx+03ah]                 ; 26 3b 57 3a
-    jne short 061b2h                          ; 75 34
+    jne short 061f8h                          ; 75 34
     cmp cx, word [es:bx+038h]                 ; 26 3b 4f 38
-    jnbe short 0618ch                         ; 77 08
-    jne short 061b2h                          ; 75 2c
+    jnbe short 061d2h                         ; 77 08
+    jne short 061f8h                          ; 75 2c
     cmp si, word [es:bx+036h]                 ; 26 3b 77 36
-    jc short 061b2h                           ; 72 26
+    jc short 061f8h                           ; 72 26
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 9c b7
+    call 01933h                               ; e8 56 b7
     mov al, byte [bp+017h]                    ; 8a 46 17
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9146,17 +9141,17 @@ _int13_harddisk_ext:                         ; 0xf603a LB 0x52b
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 ca b7
+    call 01976h                               ; e8 84 b7
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 06546h                           ; e9 94 03
+    jmp near 0658ch                           ; 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 061c8h                           ; 74 06
+    je short 0620eh                           ; 74 06
     cmp word [bp-012h], strict byte 00047h    ; 83 7e ee 47
-    jne short 061cbh                          ; 75 03
-    jmp near 06519h                           ; e9 4e 03
+    jne short 06211h                          ; 75 03
+    jmp near 0655fh                           ; 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
@@ -9194,11 +9189,11 @@ _int13_harddisk_ext:                         ; 0xf603a 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 062a0h                           ; 74 54
+    je short 062e6h                           ; 74 54
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 dc b6
+    call 01933h                               ; e8 96 b6
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9209,14 +9204,14 @@ _int13_harddisk_ext:                         ; 0xf603a LB 0x52b
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 08 b7
+    call 01976h                               ; e8 c2 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 0654eh                           ; e9 d2 02
+    jmp near 06594h                           ; e9 d2 02
     or ah, 0b2h                               ; 80 cc b2
-    jmp near 0654eh                           ; e9 cc 02
+    jmp near 06594h                           ; 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
@@ -9226,11 +9221,11 @@ _int13_harddisk_ext:                         ; 0xf603a 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 062a3h                          ; 73 06
-    jmp near 06546h                           ; e9 a6 02
-    jmp near 06519h                           ; e9 76 02
-    jnc short 062a8h                          ; 73 03
-    jmp near 0633bh                           ; e9 93 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
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     mov dx, strict word 0001ch                ; ba 1c 00
@@ -9268,12 +9263,12 @@ _int13_harddisk_ext:                         ; 0xf603a LB 0x52b
     mov bx, word [bp-010h]                    ; 8b 5e f0
     mov dx, si                                ; 89 f2
     mov si, strict word 00020h                ; be 20 00
-    call 0a060h                               ; e8 2f 3d
+    call 0a0a0h                               ; e8 29 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 063adh                           ; 72 6c
+    jc short 063f3h                           ; 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
@@ -9304,22 +9299,22 @@ _int13_harddisk_ext:                         ; 0xf603a LB 0x52b
     add bx, ax                                ; 01 c3
     mov al, byte [es:bx+027h]                 ; 26 8a 47 27
     test al, al                               ; 84 c0
-    jne short 0639eh                          ; 75 04
+    jne short 063e4h                          ; 75 04
     xor si, si                                ; 31 f6
-    jmp short 063a1h                          ; eb 03
+    jmp short 063e7h                          ; 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 063b0h                          ; 75 08
+    jne short 063f6h                          ; 75 08
     mov dx, strict word 00001h                ; ba 01 00
-    jmp short 063b2h                          ; eb 05
-    jmp near 06448h                           ; e9 98 00
+    jmp short 063f8h                          ; eb 05
+    jmp near 0648eh                           ; e9 98 00
     xor dx, dx                                ; 31 d2
     or si, dx                                 ; 09 d6
     cmp AL, strict byte 003h                  ; 3c 03
-    jne short 063bdh                          ; 75 05
+    jne short 06403h                          ; 75 05
     mov ax, strict word 00003h                ; b8 03 00
-    jmp short 063bfh                          ; eb 02
+    jmp short 06405h                          ; eb 02
     xor ax, ax                                ; 31 c0
     or si, ax                                 ; 09 c6
     mov ax, word [bp-022h]                    ; 8b 46 de
@@ -9348,25 +9343,25 @@ _int13_harddisk_ext:                         ; 0xf603a 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 06428h                          ; eb 05
+    jmp short 0646eh                          ; eb 05
     cmp bh, 00fh                              ; 80 ff 0f
-    jnc short 0643eh                          ; 73 16
+    jnc short 06484h                          ; 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 1a b2
+    call 01652h                               ; e8 d4 b1
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 06423h                          ; eb e5
+    jmp short 06469h                          ; 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 06451h                          ; 73 03
-    jmp near 06519h                           ; e9 c8 00
+    jnc short 06497h                          ; 73 03
+    jmp near 0655fh                           ; e9 c8 00
     mov al, byte [bp-004h]                    ; 8a 46 fc
     xor ah, ah                                ; 30 e4
     cwd                                       ; 99
@@ -9386,7 +9381,7 @@ _int13_harddisk_ext:                         ; 0xf603a 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 0649bh                          ; 75 0c
+    jne short 064e1h                          ; 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
@@ -9395,7 +9390,7 @@ _int13_harddisk_ext:                         ; 0xf603a 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 064d0h                          ; 75 16
+    jne short 06516h                          ; 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
@@ -9410,19 +9405,19 @@ _int13_harddisk_ext:                         ; 0xf603a 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 064fbh                          ; eb 05
+    jmp short 06541h                          ; eb 05
     cmp bh, 040h                              ; 80 ff 40
-    jnc short 06510h                          ; 73 15
+    jnc short 06556h                          ; 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 48 b1
+    call 01652h                               ; e8 02 b1
     add bl, al                                ; 00 c3
     db  0feh, 0c7h
     ; inc bh                                    ; fe c7
-    jmp short 064f6h                          ; eb e6
+    jmp short 0653ch                          ; eb e6
     neg bl                                    ; f6 db
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov byte [es:di+041h], bl                 ; 26 88 5d 41
@@ -9430,20 +9425,20 @@ _int13_harddisk_ext:                         ; 0xf603a 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 38 b1
+    call 01660h                               ; e8 f2 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 06519h                           ; 74 e4
+    je short 0655fh                           ; 74 e4
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06546h                           ; 72 0c
-    jbe short 06519h                          ; 76 dd
+    jc short 0658ch                           ; 72 0c
+    jbe short 0655fh                          ; 76 dd
     cmp ax, strict word 00003h                ; 3d 03 00
-    jc short 06546h                           ; 72 05
+    jc short 0658ch                           ; 72 05
     cmp ax, strict word 00004h                ; 3d 04 00
-    jbe short 06519h                          ; 76 d3
+    jbe short 0655fh                          ; 76 d3
     mov ax, word [bp+016h]                    ; 8b 46 16
     xor ah, ah                                ; 30 e4
     or ah, 001h                               ; 80 cc 01
@@ -9452,10 +9447,10 @@ _int13_harddisk_ext:                         ; 0xf603a 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 01 b1
+    call 01660h                               ; e8 bb b0
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 0652ch                          ; eb c7
-_int14_function:                             ; 0xf6565 LB 0x15c
+    jmp short 06572h                          ; eb c7
+_int14_function:                             ; 0xf65ab LB 0x15c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9463,30 +9458,30 @@ _int14_function:                             ; 0xf6565 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 f9 b0
+    call 0166eh                               ; e8 b3 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 cd b0
+    call 01652h                               ; e8 87 b0
     mov cl, al                                ; 88 c1
     cmp word [bp+00eh], strict byte 00004h    ; 83 7e 0e 04
-    jnc short 06591h                          ; 73 04
+    jnc short 065d7h                          ; 73 04
     test si, si                               ; 85 f6
-    jnbe short 06594h                         ; 77 03
-    jmp near 066b7h                           ; e9 23 01
+    jnbe short 065dah                         ; 77 03
+    jmp near 066fdh                           ; e9 23 01
     mov al, byte [bp+013h]                    ; 8a 46 13
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 065a8h                           ; 72 0d
-    jbe short 06608h                          ; 76 6b
+    jc short 065eeh                           ; 72 0d
+    jbe short 0664eh                          ; 76 6b
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 06600h                           ; 74 5f
+    je short 06646h                           ; 74 5f
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 06603h                           ; 74 5e
-    jmp near 066b1h                           ; e9 09 01
+    je short 06649h                           ; 74 5e
+    jmp near 066f7h                           ; e9 09 01
     test al, al                               ; 84 c0
-    jne short 06605h                          ; 75 59
+    jne short 0664bh                          ; 75 59
     lea dx, [bx+003h]                         ; 8d 57 03
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9496,14 +9491,14 @@ _int14_function:                             ; 0xf6565 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 065cbh                          ; 75 0c
+    jne short 06611h                          ; 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 065e2h                          ; eb 17
+    jmp short 06628h                          ; eb 17
     and AL, strict byte 0e0h                  ; 24 e0
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 005h                  ; b1 05
@@ -9530,13 +9525,13 @@ _int14_function:                             ; 0xf6565 LB 0x15c
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 06692h                           ; e9 92 00
-    jmp near 066a0h                           ; e9 9d 00
-    jmp short 06656h                          ; eb 51
-    jmp near 066b1h                           ; e9 a9 00
+    jmp near 066d8h                           ; e9 92 00
+    jmp near 066e6h                           ; e9 9d 00
+    jmp short 0669ch                          ; eb 51
+    jmp near 066f7h                           ; e9 a9 00
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 5d b0
+    call 0166eh                               ; e8 17 b0
     mov si, ax                                ; 89 c6
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
@@ -9544,20 +9539,20 @@ _int14_function:                             ; 0xf6565 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 06638h                           ; 74 17
+    je short 0667eh                           ; 74 17
     test cl, cl                               ; 84 c9
-    je short 06638h                           ; 74 13
+    je short 0667eh                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 40 b0
+    call 0166eh                               ; e8 fa af
     cmp ax, si                                ; 39 f0
-    je short 06613h                           ; 74 e1
+    je short 06659h                           ; 74 e1
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 06613h                          ; eb db
+    jmp short 06659h                          ; eb db
     test cl, cl                               ; 84 c9
-    je short 06642h                           ; 74 06
+    je short 06688h                           ; 74 06
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -9567,33 +9562,33 @@ _int14_function:                             ; 0xf6565 LB 0x15c
     ; sub ah, ah                                ; 2a e4
     mov byte [bp+013h], al                    ; 88 46 13
     test cl, cl                               ; 84 c9
-    jne short 06692h                          ; 75 43
+    jne short 066d8h                          ; 75 43
     or AL, strict byte 080h                   ; 0c 80
     mov byte [bp+013h], al                    ; 88 46 13
-    jmp short 06692h                          ; eb 3c
+    jmp short 066d8h                          ; eb 3c
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 0f b0
+    call 0166eh                               ; e8 c9 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 06682h                          ; 75 17
+    jne short 066c8h                          ; 75 17
     test cl, cl                               ; 84 c9
-    je short 06682h                           ; 74 13
+    je short 066c8h                           ; 74 13
     mov dx, strict word 0006ch                ; ba 6c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 f6 af
+    call 0166eh                               ; e8 b0 af
     cmp ax, si                                ; 39 f0
-    je short 06661h                           ; 74 e5
+    je short 066a7h                           ; 74 e5
     mov si, ax                                ; 89 c6
     db  0feh, 0c9h
     ; dec cl                                    ; fe c9
-    jmp short 06661h                          ; eb df
+    jmp short 066a7h                          ; eb df
     test cl, cl                               ; 84 c9
-    je short 06698h                           ; 74 12
+    je short 066deh                           ; 74 12
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov dx, bx                                ; 89 da
     in AL, DX                                 ; ec
@@ -9601,12 +9596,12 @@ _int14_function:                             ; 0xf6565 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 066bbh                          ; eb 23
+    jmp short 06701h                          ; eb 23
     lea dx, [bx+005h]                         ; 8d 57 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 06651h                          ; eb b1
+    jmp short 06697h                          ; eb b1
     lea dx, [si+005h]                         ; 8d 54 05
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9616,15 +9611,15 @@ _int14_function:                             ; 0xf6565 LB 0x15c
     in AL, DX                                 ; ec
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
-    jmp short 0668fh                          ; eb de
+    jmp short 066d5h                          ; eb de
     or byte [bp+01ch], 001h                   ; 80 4e 1c 01
-    jmp short 066bbh                          ; eb 04
+    jmp short 06701h                          ; 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_:                                 ; 0xf66c1 LB 0x43
+timer_wait_:                                 ; 0xf6707 LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9632,7 +9627,7 @@ timer_wait_:                                 ; 0xf66c1 LB 0x43
     push ax                                   ; 50
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 0a030h                               ; e8 61 39
+    call 0a070h                               ; e8 5b 39
     mov cx, ax                                ; 89 c1
     mov bx, dx                                ; 89 d3
     mov dx, strict word 00061h                ; ba 61 00
@@ -9644,23 +9639,23 @@ timer_wait_:                                 ; 0xf66c1 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 066eeh                          ; 75 05
+    jne short 06734h                          ; 75 05
     cmp cx, strict byte 0ffffh                ; 83 f9 ff
-    je short 066fdh                           ; 74 0f
+    je short 06743h                           ; 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 066eeh                          ; 75 f3
-    jmp short 066deh                          ; eb e1
+    jne short 06734h                          ; 75 f3
+    jmp short 06724h                          ; eb e1
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop cx                                    ; 59
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_enable_a20_:                             ; 0xf6704 LB 0x30
+set_enable_a20_:                             ; 0xf674a LB 0x30
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -9673,16 +9668,16 @@ set_enable_a20_:                             ; 0xf6704 LB 0x30
     ; sub ah, ah                                ; 2a e4
     mov cl, al                                ; 88 c1
     test bx, bx                               ; 85 db
-    je short 0671dh                           ; 74 05
+    je short 06763h                           ; 74 05
     or AL, strict byte 002h                   ; 0c 02
     out DX, AL                                ; ee
-    jmp short 06720h                          ; eb 03
+    jmp short 06766h                          ; eb 03
     and AL, strict byte 0fdh                  ; 24 fd
     out DX, AL                                ; ee
     test cl, 002h                             ; f6 c1 02
-    je short 0672ah                           ; 74 05
+    je short 06770h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0672ch                          ; eb 02
+    jmp short 06772h                          ; eb 02
     xor ax, ax                                ; 31 c0
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop dx                                    ; 5a
@@ -9690,7 +9685,7 @@ set_enable_a20_:                             ; 0xf6704 LB 0x30
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_e820_range_:                             ; 0xf6734 LB 0x88
+set_e820_range_:                             ; 0xf677a LB 0x88
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -9720,10 +9715,10 @@ set_e820_range_:                             ; 0xf6734 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  0c9h, 06ah, 0f8h, 067h, 00ch, 068h, 0a8h, 068h, 0aeh, 068h, 0b3h, 068h, 0b8h, 068h, 060h, 069h
-    db  084h, 069h, 0a1h, 068h, 0a1h, 068h, 04eh, 06ah, 079h, 06ah, 08ch, 06ah, 09bh, 06ah, 0a8h, 068h
-    db  0a4h, 06ah
-_int15_function:                             ; 0xf67bc LB 0x343
+    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
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -9732,15 +9727,15 @@ _int15_function:                             ; 0xf67bc LB 0x343
     xor ah, ah                                ; 30 e4
     mov dx, ax                                ; 89 c2
     cmp ax, 000ech                            ; 3d ec 00
-    jnbe short 06802h                         ; 77 35
+    jnbe short 06848h                         ; 77 35
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00011h                ; b9 11 00
-    mov di, 0678ah                            ; bf 8a 67
+    mov di, 067d0h                            ; bf d0 67
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov si, word [cs:di+0679ah]               ; 2e 8b b5 9a 67
+    mov si, word [cs:di+067e0h]               ; 2e 8b b5 e0 67
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     mov cx, word [bp+018h]                    ; 8b 4e 18
@@ -9753,31 +9748,31 @@ _int15_function:                             ; 0xf67bc LB 0x343
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     cmp ax, 000c0h                            ; 3d c0 00
-    je short 06805h                           ; 74 03
-    jmp near 06ac9h                           ; e9 c4 02
+    je short 0684bh                           ; 74 03
+    jmp near 06b0fh                           ; e9 c4 02
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 06a70h                           ; e9 64 02
+    jmp near 06ab6h                           ; e9 64 02
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 00001h                ; 3d 01 00
-    jc short 06821h                           ; 72 0e
-    jbe short 06835h                          ; 76 20
+    jc short 06867h                           ; 72 0e
+    jbe short 0687bh                          ; 76 20
     cmp ax, strict word 00003h                ; 3d 03 00
-    je short 06866h                           ; 74 4c
+    je short 068ach                           ; 74 4c
     cmp ax, strict word 00002h                ; 3d 02 00
-    je short 06845h                           ; 74 26
-    jmp short 06873h                          ; eb 52
+    je short 0688bh                           ; 74 26
+    jmp short 068b9h                          ; eb 52
     test ax, ax                               ; 85 c0
-    jne short 06873h                          ; 75 4e
+    jne short 068b9h                          ; 75 4e
     xor ax, ax                                ; 31 c0
-    call 06704h                               ; e8 da fe
+    call 0674ah                               ; e8 da fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp near 068a1h                           ; e9 6c 00
+    jmp near 068e7h                           ; e9 6c 00
     mov ax, strict word 00001h                ; b8 01 00
-    call 06704h                               ; e8 c9 fe
+    call 0674ah                               ; e8 c9 fe
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov byte [bp+013h], dh                    ; 88 76 13
-    jmp near 068a1h                           ; e9 5c 00
+    jmp near 068e7h                           ; e9 5c 00
     mov dx, 00092h                            ; ba 92 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -9791,15 +9786,15 @@ _int15_function:                             ; 0xf67bc 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 068a1h                           ; e9 3b 00
+    jmp near 068e7h                           ; 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 068a1h                           ; e9 2e 00
+    jmp near 068e7h                           ; 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 b5 b0
+    call 01933h                               ; e8 6f b0
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -9807,7 +9802,7 @@ _int15_function:                             ; 0xf67bc LB 0x343
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 e7 b0
+    call 01976h                               ; e8 a1 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
@@ -9820,38 +9815,38 @@ _int15_function:                             ; 0xf67bc LB 0x343
     pop bp                                    ; 5d
     retn                                      ; c3
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp near 0695ah                           ; e9 ac 00
+    jmp near 069a0h                           ; e9 ac 00
     mov word [bp+018h], dx                    ; 89 56 18
-    jmp short 068a1h                          ; eb ee
+    jmp short 068e7h                          ; eb ee
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp short 0689eh                          ; eb e6
+    jmp short 068e4h                          ; eb e6
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 0692dh                          ; 75 6f
+    jne short 06973h                          ; 75 6f
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 8b ad
+    call 01652h                               ; e8 45 ad
     test AL, strict byte 001h                 ; a8 01
-    jne short 0692ah                          ; 75 5f
+    jne short 06970h                          ; 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 89 ad
+    call 01660h                               ; e8 43 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 99 ad
+    call 0167ch                               ; e8 53 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 8d ad
+    call 0167ch                               ; e8 47 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 81 ad
+    call 0167ch                               ; e8 3b 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 75 ad
+    call 0167ch                               ; e8 2f ad
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
@@ -9860,26 +9855,26 @@ _int15_function:                             ; 0xf67bc LB 0x343
     and AL, strict byte 0feh                  ; 24 fe
     out DX, AL                                ; ee
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 94 ad
+    call 016aeh                               ; e8 4e 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 a2 ad
-    jmp near 068a1h                           ; e9 77 ff
-    jmp near 06a67h                           ; e9 3a 01
+    call 016c9h                               ; e8 5c ad
+    jmp near 068e7h                           ; e9 77 ff
+    jmp near 06aadh                           ; e9 3a 01
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 0694eh                          ; 75 1c
+    jne short 06994h                          ; 75 1c
     xor bx, bx                                ; 31 db
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01660h                               ; e8 23 ad
+    call 01660h                               ; e8 dd ac
     and byte [bp+018h], 0feh                  ; 80 66 18 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 67 ad
+    call 016aeh                               ; e8 21 ad
     mov dl, al                                ; 88 c2
     and dl, 0bfh                              ; 80 e2 bf
-    jmp short 0691fh                          ; eb d1
+    jmp short 06965h                          ; eb d1
     mov word [bp+018h], dx                    ; 89 56 18
     mov ax, bx                                ; 89 d8
     xor ah, bh                                ; 30 fc
@@ -9887,47 +9882,47 @@ _int15_function:                             ; 0xf67bc LB 0x343
     dec ax                                    ; 48
     or bx, ax                                 ; 09 c3
     mov word [bp+012h], bx                    ; 89 5e 12
-    jmp near 068a1h                           ; e9 41 ff
+    jmp near 068e7h                           ; e9 41 ff
     mov ax, strict word 00031h                ; b8 31 00
-    call 016aeh                               ; e8 48 ad
+    call 016aeh                               ; e8 02 ad
     mov dh, al                                ; 88 c6
     mov ax, strict word 00030h                ; b8 30 00
-    call 016aeh                               ; e8 40 ad
+    call 016aeh                               ; e8 fa ac
     mov dl, al                                ; 88 c2
     mov word [bp+012h], dx                    ; 89 56 12
     cmp dx, strict byte 0ffc0h                ; 83 fa c0
-    jbe short 0697dh                          ; 76 05
+    jbe short 069c3h                          ; 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 068a1h                           ; e9 1d ff
+    jmp near 068e7h                           ; e9 1d ff
     cli                                       ; fa
     mov ax, strict word 00001h                ; b8 01 00
-    call 06704h                               ; e8 79 fd
+    call 0674ah                               ; 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 e2 ac
+    call 0167ch                               ; e8 9c 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 d4 ac
+    call 0167ch                               ; e8 8e 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 a9 ac
+    call 01660h                               ; e8 63 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 9a ac
+    call 01660h                               ; e8 54 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 a8 ac
+    call 0167ch                               ; e8 62 ac
     mov AL, strict byte 011h                  ; b0 11
     mov dx, strict word 00020h                ; ba 20 00
     out DX, AL                                ; ee
@@ -9956,7 +9951,7 @@ _int15_function:                             ; 0xf67bc LB 0x343
     mov dx, 000a1h                            ; ba a1 00
     out DX, AL                                ; ee
     mov si, word [bp+006h]                    ; 8b 76 06
-    call 06a12h                               ; e8 00 00
+    call 06a58h                               ; e8 00 00
     pop di                                    ; 5f
     add di, strict byte 00018h                ; 83 c7 18
     push strict byte 00038h                   ; 6a 38
@@ -9984,73 +9979,77 @@ _int15_function:                             ; 0xf67bc LB 0x343
     push ax                                   ; 50
     push cx                                   ; 51
     retf                                      ; cb
-    jmp near 068a1h                           ; e9 53 fe
+    jmp near 068e7h                           ; 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 da ae
+    call 01933h                               ; e8 94 ae
     mov ax, 0086eh                            ; b8 6e 08
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 12 af
+    call 01976h                               ; e8 cc 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 068a1h                           ; e9 28 fe
+    jmp near 068e7h                           ; 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 068a1h                           ; e9 15 fe
+    jmp near 068e7h                           ; e9 15 fe
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 d9 ab
+    call 0166eh                               ; e8 93 ab
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 0697dh                           ; e9 e2 fe
+    jmp near 069c3h                           ; e9 e2 fe
     mov ax, 0089dh                            ; b8 9d 08
     push ax                                   ; 50
     mov ax, strict word 00008h                ; b8 08 00
-    jmp short 06a60h                          ; eb bc
+    jmp short 06aa6h                          ; eb bc
     test byte [bp+012h], 0ffh                 ; f6 46 12 ff
-    jne short 06ac9h                          ; 75 1f
+    jne short 06b0fh                          ; 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 06ac2h                           ; 72 0b
+    jc short 06b08h                           ; 72 0b
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnbe short 06ac2h                         ; 77 06
+    jnbe short 06b08h                         ; 77 06
     mov word [bp+018h], cx                    ; 89 4e 18
-    jmp near 068a1h                           ; e9 df fd
+    jmp near 068e7h                           ; e9 df fd
     or byte [bp+018h], 001h                   ; 80 4e 18 01
-    jmp near 068a1h                           ; e9 d8 fd
+    jmp near 068e7h                           ; 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 5f ae
+    call 01933h                               ; e8 19 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 91 ae
+    call 01976h                               ; e8 4b ae
     add sp, strict byte 00008h                ; 83 c4 08
-    jmp near 06a67h                           ; e9 7c ff
-    push 0926ch                               ; 68 6c 92
+    jmp near 06aadh                           ; e9 7c ff
+    scasb                                     ; ae
     insb                                      ; 6c
-    jmp far 02f6dh:00f6ch                     ; ea 6c 0f 6d 2f
+    fsubr dword [si+030h]                     ; d8 6c 30
     insw                                      ; 6d
-    dec si                                    ; 4e
+    push bp                                   ; 55
+    insw                                      ; 6d
+    jne short 06ba8h                          ; 75 6d
+    xchg sp, ax                               ; 94
     insw                                      ; 6d
-    je short 06b66h                           ; 74 6d
-    call far 00b6dh:0d76dh                    ; 9a 6d d7 6d 0b
+    mov dx, 0e06dh                            ; ba 6d e0
+    insw                                      ; 6d
+    sbb ax, 0516eh                            ; 1d 6e 51
     outsb                                     ; 6e
-_int15_function32:                           ; 0xf6aff LB 0x39e
+_int15_function32:                           ; 0xf6b45 LB 0x39e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10062,34 +10061,34 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov dx, word [bp+020h]                    ; 8b 56 20
     xor dh, dh                                ; 30 f6
     cmp ax, 000e8h                            ; 3d e8 00
-    je short 06b65h                           ; 74 4a
+    je short 06babh                           ; 74 4a
     cmp ax, 000d0h                            ; 3d d0 00
-    je short 06b32h                           ; 74 12
+    je short 06b78h                           ; 74 12
     cmp ax, 00086h                            ; 3d 86 00
-    jne short 06b63h                          ; 75 3e
+    jne short 06ba9h                          ; 75 3e
     sti                                       ; fb
     mov dx, word [bp+01ch]                    ; 8b 56 1c
     mov ax, word [bp+018h]                    ; 8b 46 18
-    call 066c1h                               ; e8 92 fb
-    jmp near 06ce4h                           ; e9 b2 01
+    call 06707h                               ; e8 92 fb
+    jmp near 06d2ah                           ; e9 b2 01
     cmp dx, strict byte 0004fh                ; 83 fa 4f
-    jne short 06b63h                          ; 75 2c
+    jne short 06ba9h                          ; 75 2c
     cmp word [bp+016h], 05052h                ; 81 7e 16 52 50
-    jne short 06b99h                          ; 75 5b
+    jne short 06bdfh                          ; 75 5b
     cmp word [bp+014h], 04f43h                ; 81 7e 14 43 4f
-    jne short 06b99h                          ; 75 54
+    jne short 06bdfh                          ; 75 54
     cmp word [bp+01eh], 04d4fh                ; 81 7e 1e 4f 4d
-    jne short 06b99h                          ; 75 4d
+    jne short 06bdfh                          ; 75 4d
     cmp word [bp+01ch], 04445h                ; 81 7e 1c 45 44
-    jne short 06b99h                          ; 75 46
+    jne short 06bdfh                          ; 75 46
     mov ax, word [bp+00ah]                    ; 8b 46 0a
     or ax, word [bp+008h]                     ; 0b 46 08
-    jne short 06b99h                          ; 75 3e
+    jne short 06bdfh                          ; 75 3e
     mov ax, word [bp+006h]                    ; 8b 46 06
     or ax, word [bp+004h]                     ; 0b 46 04
-    je short 06b67h                           ; 74 04
-    jmp short 06b99h                          ; eb 34
-    jmp short 06b8fh                          ; eb 28
+    je short 06badh                           ; 74 04
+    jmp short 06bdfh                          ; eb 34
+    jmp short 06bd5h                          ; 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
@@ -10101,28 +10100,28 @@ _int15_function32:                           ; 0xf6aff 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 06ce4h                           ; e9 55 01
+    jmp near 06d2ah                           ; e9 55 01
     cmp dx, strict byte 00020h                ; 83 fa 20
-    je short 06b9fh                           ; 74 0b
+    je short 06be5h                           ; 74 0b
     cmp dx, strict byte 00001h                ; 83 fa 01
-    je short 06b9ch                           ; 74 03
-    jmp near 06cb7h                           ; e9 1b 01
-    jmp near 06e5dh                           ; e9 be 02
+    je short 06be2h                           ; 74 03
+    jmp near 06cfdh                           ; e9 1b 01
+    jmp near 06ea3h                           ; e9 be 02
     cmp word [bp+01ah], 0534dh                ; 81 7e 1a 4d 53
-    jne short 06b99h                          ; 75 f3
+    jne short 06bdfh                          ; 75 f3
     cmp word [bp+018h], 04150h                ; 81 7e 18 50 41
-    jne short 06b99h                          ; 75 ec
+    jne short 06bdfh                          ; 75 ec
     mov ax, strict word 00035h                ; b8 35 00
-    call 016aeh                               ; e8 fb aa
+    call 016aeh                               ; e8 b5 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 06bbch                               ; e2 fa
+    loop 06c02h                               ; e2 fa
     mov ax, strict word 00034h                ; b8 34 00
-    call 016aeh                               ; e8 e6 aa
+    call 016aeh                               ; e8 a0 aa
     xor ah, ah                                ; 30 e4
     mov dx, bx                                ; 89 da
     or dx, ax                                 ; 09 c2
@@ -10130,31 +10129,31 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     add bx, bx                                ; 01 db
     adc dx, 00100h                            ; 81 d2 00 01
     cmp dx, 00100h                            ; 81 fa 00 01
-    jc short 06be2h                           ; 72 06
-    jne short 06c10h                          ; 75 32
+    jc short 06c28h                           ; 72 06
+    jne short 06c56h                          ; 75 32
     test bx, bx                               ; 85 db
-    jnbe short 06c10h                         ; 77 2e
+    jnbe short 06c56h                         ; 77 2e
     mov ax, strict word 00031h                ; b8 31 00
-    call 016aeh                               ; e8 c6 aa
+    call 016aeh                               ; e8 80 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 06bf1h                               ; e2 fa
+    loop 06c37h                               ; e2 fa
     mov ax, strict word 00030h                ; b8 30 00
-    call 016aeh                               ; e8 b1 aa
+    call 016aeh                               ; e8 6b 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 06c04h                               ; e2 fa
+    loop 06c4ah                               ; 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 98 aa
+    call 016aeh                               ; e8 52 aa
     xor ah, ah                                ; 30 e4
     mov word [bp-00ah], ax                    ; 89 46 f6
     xor al, al                                ; 30 c0
@@ -10162,28 +10161,28 @@ _int15_function32:                           ; 0xf6aff 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 06c23h                               ; e2 f8
+    loop 06c69h                               ; e2 f8
     mov ax, strict word 00061h                ; b8 61 00
-    call 016aeh                               ; e8 7d aa
+    call 016aeh                               ; e8 37 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 67 aa
+    call 016aeh                               ; e8 21 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 06cb7h                         ; 77 62
+    jnbe short 06cfdh                         ; 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+06aebh]                   ; 2e ff a4 eb 6a
+    jmp word [cs:si+06b31h]                   ; 2e ff a4 31 6b
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10197,10 +10196,10 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 06734h                               ; e8 af fa
+    call 0677ah                               ; 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 06e42h                           ; e9 b0 01
+    jmp near 06e88h                           ; e9 b0 01
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10214,20 +10213,20 @@ _int15_function32:                           ; 0xf6aff 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 06734h                               ; e8 84 fa
+    call 0677ah                               ; e8 84 fa
     mov word [bp+014h], strict word 00002h    ; c7 46 14 02 00
-    jmp short 06c8ah                          ; eb d3
+    jmp short 06cd0h                          ; eb d3
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 71 ac
+    call 01933h                               ; e8 2b 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 a3 ac
+    call 01976h                               ; e8 5d 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
@@ -10251,9 +10250,9 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0000fh                ; b9 0f 00
-    call 06734h                               ; e8 2d fa
+    call 0677ah                               ; e8 2d fa
     mov word [bp+014h], strict word 00003h    ; c7 46 14 03 00
-    jmp near 06c8ah                           ; e9 7b ff
+    jmp near 06cd0h                           ; e9 7b ff
     mov dx, strict word 00001h                ; ba 01 00
     push dx                                   ; 52
     xor dx, dx                                ; 31 d2
@@ -10265,9 +10264,9 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 00010h                ; b9 10 00
-    call 06734h                               ; e8 0d fa
+    call 0677ah                               ; e8 0d fa
     mov word [bp+014h], strict word 00004h    ; c7 46 14 04 00
-    jmp near 06c8ah                           ; e9 5b ff
+    jmp near 06cd0h                           ; e9 5b ff
     mov si, strict word 00003h                ; be 03 00
     push si                                   ; 56
     xor si, si                                ; 31 f6
@@ -10279,9 +10278,9 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov si, word [bp+024h]                    ; 8b 76 24
     mov bx, ax                                ; 89 c3
     mov ax, si                                ; 89 f0
-    call 06734h                               ; e8 ee f9
+    call 0677ah                               ; e8 ee f9
     mov word [bp+014h], strict word 00005h    ; c7 46 14 05 00
-    jmp near 06c8ah                           ; e9 3c ff
+    jmp near 06cd0h                           ; e9 3c ff
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10295,9 +10294,9 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fec0h                            ; b9 c0 fe
-    call 06734h                               ; e8 c8 f9
+    call 0677ah                               ; e8 c8 f9
     mov word [bp+014h], strict word 00006h    ; c7 46 14 06 00
-    jmp near 06c8ah                           ; e9 16 ff
+    jmp near 06cd0h                           ; e9 16 ff
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10311,9 +10310,9 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, 0fee0h                            ; b9 e0 fe
-    call 06734h                               ; e8 a2 f9
+    call 0677ah                               ; e8 a2 f9
     mov word [bp+014h], strict word 00007h    ; c7 46 14 07 00
-    jmp near 06c8ah                           ; e9 f0 fe
+    jmp near 06cd0h                           ; e9 f0 fe
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10325,19 +10324,19 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     mov cx, strict word 0fffch                ; b9 fc ff
-    call 06734h                               ; e8 82 f9
+    call 0677ah                               ; e8 82 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06dbfh                          ; 75 07
+    jne short 06e05h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06dcfh                           ; 74 10
+    je short 06e15h                           ; 74 10
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06c8ah                           ; e9 c3 fe
+    jmp near 06cd0h                           ; e9 c3 fe
     mov word [bp+014h], strict word 00008h    ; c7 46 14 08 00
-    jmp near 06c8ah                           ; e9 bb fe
+    jmp near 06cd0h                           ; e9 bb fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06e42h                          ; eb 6b
+    jmp short 06e88h                          ; eb 6b
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
     xor ax, ax                                ; 31 c0
@@ -10349,21 +10348,21 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 06734h                               ; e8 46 f9
+    call 0677ah                               ; e8 46 f9
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06dfbh                          ; 75 07
+    jne short 06e41h                          ; 75 07
     mov ax, word [bp-008h]                    ; 8b 46 f8
     test ax, ax                               ; 85 c0
-    je short 06e03h                           ; 74 08
+    je short 06e49h                           ; 74 08
     mov word [bp+014h], strict word 00009h    ; c7 46 14 09 00
-    jmp near 06c8ah                           ; e9 87 fe
+    jmp near 06cd0h                           ; e9 87 fe
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
-    jmp short 06e42h                          ; eb 37
+    jmp short 06e88h                          ; eb 37
     cmp byte [bp-004h], 000h                  ; 80 7e fc 00
-    jne short 06e17h                          ; 75 06
+    jne short 06e5dh                          ; 75 06
     cmp word [bp-008h], strict byte 00000h    ; 83 7e f8 00
-    je short 06e42h                           ; 74 2b
+    je short 06e88h                           ; 74 2b
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
     mov al, byte [bp-006h]                    ; 8a 46 fa
@@ -10379,7 +10378,7 @@ _int15_function32:                           ; 0xf6aff LB 0x39e
     mov ax, word [bp+024h]                    ; 8b 46 24
     xor bx, bx                                ; 31 db
     xor cx, cx                                ; 31 c9
-    call 06734h                               ; e8 fa f8
+    call 0677ah                               ; e8 fa f8
     xor ax, ax                                ; 31 c0
     mov word [bp+014h], ax                    ; 89 46 14
     mov word [bp+016h], ax                    ; 89 46 16
@@ -10388,30 +10387,30 @@ _int15_function32:                           ; 0xf6aff 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 06ce4h                           ; e9 87 fe
+    jmp near 06d2ah                           ; e9 87 fe
     mov word [bp+028h], bx                    ; 89 5e 28
     mov ax, strict word 00031h                ; b8 31 00
-    call 016aeh                               ; e8 48 a8
+    call 016aeh                               ; e8 02 a8
     mov dh, al                                ; 88 c6
     mov ax, strict word 00030h                ; b8 30 00
-    call 016aeh                               ; e8 40 a8
+    call 016aeh                               ; e8 fa a7
     mov dl, al                                ; 88 c2
     mov word [bp+01ch], dx                    ; 89 56 1c
     cmp dx, 03c00h                            ; 81 fa 00 3c
-    jbe short 06e7eh                          ; 76 05
+    jbe short 06ec4h                          ; 76 05
     mov word [bp+01ch], 03c00h                ; c7 46 1c 00 3c
     mov ax, strict word 00035h                ; b8 35 00
-    call 016aeh                               ; e8 2a a8
+    call 016aeh                               ; e8 e4 a7
     mov dh, al                                ; 88 c6
     mov ax, strict word 00034h                ; b8 34 00
-    call 016aeh                               ; e8 22 a8
+    call 016aeh                               ; e8 dc 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 06ce4h                           ; e9 47 fe
-_inv_op_handler:                             ; 0xf6e9d LB 0x18f
+    jmp near 06d2ah                           ; e9 47 fe
+_inv_op_handler:                             ; 0xf6ee3 LB 0x18f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -10420,12 +10419,12 @@ _inv_op_handler:                             ; 0xf6e9d LB 0x18f
     push ax                                   ; 50
     les bx, [bp+018h]                         ; c4 5e 18
     cmp byte [es:bx], 0f0h                    ; 26 80 3f f0
-    jne short 06eb3h                          ; 75 06
+    jne short 06ef9h                          ; 75 06
     inc word [bp+018h]                        ; ff 46 18
-    jmp near 07025h                           ; e9 72 01
+    jmp near 0706bh                           ; e9 72 01
     cmp word [es:bx], 0050fh                  ; 26 81 3f 0f 05
-    je short 06ebdh                           ; 74 03
-    jmp near 07021h                           ; e9 64 01
+    je short 06f03h                           ; 74 03
+    jmp near 07067h                           ; e9 64 01
     mov si, 00800h                            ; be 00 08
     xor ax, ax                                ; 31 c0
     mov word [bp-008h], ax                    ; 89 46 f8
@@ -10454,11 +10453,11 @@ _inv_op_handler:                             ; 0xf6e9d LB 0x18f
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f0eh                               ; e2 fa
+    loop 06f54h                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f1ch                          ; 75 04
+    jne short 06f62h                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f21h                           ; 74 05
+    je short 06f67h                           ; 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
@@ -10469,11 +10468,11 @@ _inv_op_handler:                             ; 0xf6e9d LB 0x18f
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 06f37h                               ; e2 fa
+    loop 06f7dh                               ; e2 fa
     cmp bx, dx                                ; 39 d3
-    jne short 06f45h                          ; 75 04
+    jne short 06f8bh                          ; 75 04
     cmp di, ax                                ; 39 c7
-    je short 06f49h                           ; 74 04
+    je short 06f8fh                           ; 74 04
     or byte [bp-006h], 002h                   ; 80 4e fa 02
     xor ax, ax                                ; 31 c0
     push ax                                   ; 50
@@ -10523,10 +10522,10 @@ _inv_op_handler:                             ; 0xf6e9d 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 06fdeh                            ; 0f 84 02 00
+    je near 07024h                            ; 0f 84 02 00
     mov es, ax                                ; 8e c0
     test cx, strict word 00002h               ; f7 c1 02 00
-    je near 07006h                            ; 0f 84 20 00
+    je near 0704ch                            ; 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
@@ -10543,144 +10542,144 @@ _inv_op_handler:                             ; 0xf6e9d LB 0x18f
     sub sp, strict byte 00006h                ; 83 ec 06
     mov ss, [word ss:00020h]                  ; 36 8e 16 20 00
     iret                                      ; cf
-    jmp short 07025h                          ; eb 04
+    jmp short 0706bh                          ; eb 04
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 07022h                          ; eb fd
+    jmp short 07068h                          ; eb fd
     lea sp, [bp-004h]                         ; 8d 66 fc
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-init_rtc_:                                   ; 0xf702c LB 0x28
+init_rtc_:                                   ; 0xf7072 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 90 a6
+    call 016c9h                               ; e8 4a a6
     mov dx, strict word 00002h                ; ba 02 00
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 87 a6
+    call 016c9h                               ; e8 41 a6
     mov ax, strict word 0000ch                ; b8 0c 00
-    call 016aeh                               ; e8 66 a6
+    call 016aeh                               ; e8 20 a6
     mov ax, strict word 0000dh                ; b8 0d 00
-    call 016aeh                               ; e8 60 a6
+    call 016aeh                               ; e8 1a a6
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-rtc_updating_:                               ; 0xf7054 LB 0x21
+rtc_updating_:                               ; 0xf709a LB 0x21
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
     mov dx, 061a8h                            ; ba a8 61
     dec dx                                    ; 4a
-    je short 0706ch                           ; 74 0e
+    je short 070b2h                           ; 74 0e
     mov ax, strict word 0000ah                ; b8 0a 00
-    call 016aeh                               ; e8 4a a6
+    call 016aeh                               ; e8 04 a6
     test AL, strict byte 080h                 ; a8 80
-    jne short 0705bh                          ; 75 f3
+    jne short 070a1h                          ; 75 f3
     xor ax, ax                                ; 31 c0
-    jmp short 0706fh                          ; eb 03
+    jmp short 070b5h                          ; 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:                             ; 0xf7075 LB 0xbf
+_int70_function:                             ; 0xf70bb 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 2e a6
+    call 016aeh                               ; e8 e8 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 23 a6
+    call 016aeh                               ; e8 dd a5
     mov dl, al                                ; 88 c2
     test bl, 060h                             ; f6 c3 60
-    jne short 07095h                          ; 75 03
-    jmp near 0711bh                           ; e9 86 00
+    jne short 070dbh                          ; 75 03
+    jmp near 07161h                           ; e9 86 00
     test AL, strict byte 020h                 ; a8 20
-    je short 0709dh                           ; 74 04
+    je short 070e3h                           ; 74 04
     sti                                       ; fb
     int 04ah                                  ; cd 4a
     cli                                       ; fa
     test dl, 040h                             ; f6 c2 40
-    je short 07105h                           ; 74 63
+    je short 0714bh                           ; 74 63
     mov dx, 000a0h                            ; ba a0 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 01652h                               ; e8 a7 a5
+    call 01652h                               ; e8 61 a5
     test al, al                               ; 84 c0
-    je short 0711bh                           ; 74 6c
+    je short 07161h                           ; 74 6c
     mov dx, 0009ch                            ; ba 9c 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0168ah                               ; e8 d2 a5
+    call 0168ah                               ; e8 8c a5
     test dx, dx                               ; 85 d2
-    jne short 07107h                          ; 75 4b
+    jne short 0714dh                          ; 75 4b
     cmp ax, 003d1h                            ; 3d d1 03
-    jnc short 07107h                          ; 73 46
+    jnc short 0714dh                          ; 73 46
     mov dx, 00098h                            ; ba 98 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 a4 a5
+    call 0166eh                               ; e8 5e a5
     mov si, ax                                ; 89 c6
     mov dx, 0009ah                            ; ba 9a 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 99 a5
+    call 0166eh                               ; e8 53 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 7e a5
+    call 01660h                               ; e8 38 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 d9 a5
+    call 016c9h                               ; e8 93 a5
     mov dx, cx                                ; 89 ca
     mov ax, si                                ; 89 f0
-    call 01652h                               ; e8 5b a5
+    call 01652h                               ; e8 15 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 5b a5
-    jmp short 0711bh                          ; eb 14
+    call 01660h                               ; e8 15 a5
+    jmp short 07161h                          ; 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 81 a5
-    call 0e030h                               ; e8 12 6f
+    call 0169ch                               ; e8 3b a5
+    call 0e030h                               ; e8 cc 6e
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-    dec dx                                    ; 4a
-    jno short 07198h                          ; 71 71
-    jno short 070bfh                          ; 71 96
-    jno short 070fdh                          ; 71 d2
-    jno short 07151h                          ; 71 24
-    jc short 0718ah                           ; 72 5b
-    jc short 070d3h                           ; 72 a2
-    jc short 07130h                           ; 72 fd
-    db  072h
-_int1a_function:                             ; 0xf7134 LB 0x1d9
+    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
+    db  073h
+_int1a_function:                             ; 0xf717a 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 0719dh                         ; 77 5e
+    jnbe short 071e3h                         ; 77 5e
     mov bl, al                                ; 88 c3
     xor bh, bh                                ; 30 ff
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx+07124h]                   ; 2e ff a7 24 71
+    jmp word [cs:bx+0716ah]                   ; 2e ff a7 6a 71
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10695,7 +10694,7 @@ _int1a_function:                             ; 0xf7134 LB 0x1d9
     mov byte [bp+012h], al                    ; 88 46 12
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
-    jmp short 0719dh                          ; eb 2c
+    jmp short 071e3h                          ; eb 2c
     cli                                       ; fa
     mov bx, 0046eh                            ; bb 6e 04
     xor ax, ax                                ; 31 c0
@@ -10709,23 +10708,23 @@ _int1a_function:                             ; 0xf7134 LB 0x1d9
     mov byte [es:bx], 000h                    ; 26 c6 07 00
     sti                                       ; fb
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    jmp short 0719dh                          ; eb 07
-    call 07054h                               ; e8 bb fe
+    jmp short 071e3h                          ; eb 07
+    call 0709ah                               ; e8 bb fe
     test ax, ax                               ; 85 c0
-    je short 071a0h                           ; 74 03
-    jmp near 071ceh                           ; e9 2e 00
+    je short 071e6h                           ; 74 03
+    jmp near 07214h                           ; e9 2e 00
     xor ax, ax                                ; 31 c0
-    call 016aeh                               ; e8 09 a5
+    call 016aeh                               ; e8 c3 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00002h                ; b8 02 00
-    call 016aeh                               ; e8 00 a5
+    call 016aeh                               ; e8 ba a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00004h                ; b8 04 00
-    call 016aeh                               ; e8 f7 a4
+    call 016aeh                               ; e8 b1 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 ec a4
+    call 016aeh                               ; e8 a6 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
@@ -10733,24 +10732,24 @@ _int1a_function:                             ; 0xf7134 LB 0x1d9
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    call 07054h                               ; e8 7f fe
+    call 0709ah                               ; e8 7f fe
     test ax, ax                               ; 85 c0
-    je short 071dch                           ; 74 03
-    call 0702ch                               ; e8 50 fe
+    je short 07222h                           ; 74 03
+    call 07072h                               ; e8 50 fe
     mov dl, byte [bp+00fh]                    ; 8a 56 0f
     xor dh, dh                                ; 30 f6
     xor ax, ax                                ; 31 c0
-    call 016c9h                               ; e8 e3 a4
+    call 016c9h                               ; e8 9d 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 d8 a4
+    call 016c9h                               ; e8 92 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 cd a4
+    call 016c9h                               ; e8 87 a4
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 ac a4
+    call 016aeh                               ; e8 66 a4
     mov bl, al                                ; 88 c3
     and bl, 060h                              ; 80 e3 60
     or bl, 002h                               ; 80 cb 02
@@ -10760,78 +10759,78 @@ _int1a_function:                             ; 0xf7134 LB 0x1d9
     mov dl, bl                                ; 88 da
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 ae a4
+    call 016c9h                               ; e8 68 a4
     mov byte [bp+013h], 000h                  ; c6 46 13 00
     mov byte [bp+012h], bl                    ; 88 5e 12
-    jmp short 071ceh                          ; eb aa
+    jmp short 07214h                          ; eb aa
     mov byte [bp+013h], 000h                  ; c6 46 13 00
-    call 07054h                               ; e8 29 fe
+    call 0709ah                               ; e8 29 fe
     test ax, ax                               ; 85 c0
-    je short 07231h                           ; 74 02
-    jmp short 071ceh                          ; eb 9d
+    je short 07277h                           ; 74 02
+    jmp short 07214h                          ; eb 9d
     mov ax, strict word 00009h                ; b8 09 00
-    call 016aeh                               ; e8 77 a4
+    call 016aeh                               ; e8 31 a4
     mov byte [bp+010h], al                    ; 88 46 10
     mov ax, strict word 00008h                ; b8 08 00
-    call 016aeh                               ; e8 6e a4
+    call 016aeh                               ; e8 28 a4
     mov byte [bp+00fh], al                    ; 88 46 0f
     mov ax, strict word 00007h                ; b8 07 00
-    call 016aeh                               ; e8 65 a4
+    call 016aeh                               ; e8 1f a4
     mov byte [bp+00eh], al                    ; 88 46 0e
     mov ax, strict word 00032h                ; b8 32 00
-    call 016aeh                               ; e8 5c a4
+    call 016aeh                               ; e8 16 a4
     mov byte [bp+011h], al                    ; 88 46 11
     mov byte [bp+012h], al                    ; 88 46 12
-    jmp near 071ceh                           ; e9 73 ff
-    call 07054h                               ; e8 f6 fd
+    jmp near 07214h                           ; e9 73 ff
+    call 0709ah                               ; e8 f6 fd
     test ax, ax                               ; 85 c0
-    je short 07268h                           ; 74 06
-    call 0702ch                               ; e8 c7 fd
-    jmp near 071ceh                           ; e9 66 ff
+    je short 072aeh                           ; 74 06
+    call 07072h                               ; e8 c7 fd
+    jmp near 07214h                           ; 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 56 a4
+    call 016c9h                               ; e8 10 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 4b a4
+    call 016c9h                               ; e8 05 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 40 a4
+    call 016c9h                               ; e8 fa 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 35 a4
+    call 016c9h                               ; e8 ef a3
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 14 a4
+    call 016aeh                               ; e8 ce a3
     mov bl, al                                ; 88 c3
     and bl, 07fh                              ; 80 e3 7f
-    jmp near 07211h                           ; e9 6f ff
+    jmp near 07257h                           ; e9 6f ff
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 06 a4
+    call 016aeh                               ; e8 c0 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 072b6h                           ; 74 03
-    jmp near 071ceh                           ; e9 18 ff
-    call 07054h                               ; e8 9b fd
+    je short 072fch                           ; 74 03
+    jmp near 07214h                           ; e9 18 ff
+    call 0709ah                               ; e8 9b fd
     test ax, ax                               ; 85 c0
-    je short 072c0h                           ; 74 03
-    call 0702ch                               ; e8 6c fd
+    je short 07306h                           ; 74 03
+    call 07072h                               ; 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 fe a3
+    call 016c9h                               ; e8 b8 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 f3 a3
+    call 016c9h                               ; e8 ad 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 e8 a3
+    call 016c9h                               ; e8 a2 a3
     mov dx, 000a1h                            ; ba a1 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10843,15 +10842,15 @@ _int1a_function:                             ; 0xf7134 LB 0x1d9
     or dl, 020h                               ; 80 ca 20
     xor dh, dh                                ; 30 f6
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016c9h                               ; e8 cf a3
-    jmp near 071ceh                           ; e9 d1 fe
+    call 016c9h                               ; e8 89 a3
+    jmp near 07214h                           ; e9 d1 fe
     mov ax, strict word 0000bh                ; b8 0b 00
-    call 016aeh                               ; e8 ab a3
+    call 016aeh                               ; e8 65 a3
     mov bl, al                                ; 88 c3
     mov dl, al                                ; 88 c2
     and dl, 057h                              ; 80 e2 57
-    jmp near 07213h                           ; e9 06 ff
-send_to_mouse_ctrl_:                         ; 0xf730d LB 0x38
+    jmp near 07259h                           ; e9 06 ff
+send_to_mouse_ctrl_:                         ; 0xf7353 LB 0x38
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10862,14 +10861,14 @@ send_to_mouse_ctrl_:                         ; 0xf730d LB 0x38
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 07330h                           ; 74 12
+    je short 07376h                           ; 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 49 a6
+    call 01976h                               ; e8 03 a6
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 0d4h                  ; b0 d4
     mov dx, strict word 00064h                ; ba 64 00
@@ -10883,7 +10882,7 @@ send_to_mouse_ctrl_:                         ; 0xf730d LB 0x38
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_mouse_data_:                             ; 0xf7345 LB 0x5d
+get_mouse_data_:                             ; 0xf738b LB 0x5d
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10898,9 +10897,9 @@ get_mouse_data_:                             ; 0xf7345 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 07388h                           ; 74 28
+    je short 073ceh                           ; 74 28
     test cx, cx                               ; 85 c9
-    je short 07388h                           ; 74 24
+    je short 073ceh                           ; 74 24
     mov dx, strict word 00061h                ; ba 61 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10917,13 +10916,13 @@ get_mouse_data_:                             ; 0xf7345 LB 0x5d
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     cmp dx, ax                                ; 39 c2
-    je short 0736fh                           ; 74 ea
+    je short 073b5h                           ; 74 ea
     dec cx                                    ; 49
-    jmp short 07352h                          ; eb ca
+    jmp short 07398h                          ; eb ca
     test cx, cx                               ; 85 c9
-    jne short 07390h                          ; 75 04
+    jne short 073d6h                          ; 75 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0739bh                          ; eb 0b
+    jmp short 073e1h                          ; eb 0b
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10935,7 +10934,7 @@ get_mouse_data_:                             ; 0xf7345 LB 0x5d
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-set_kbd_command_byte_:                       ; 0xf73a2 LB 0x36
+set_kbd_command_byte_:                       ; 0xf73e8 LB 0x36
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -10946,14 +10945,14 @@ set_kbd_command_byte_:                       ; 0xf73a2 LB 0x36
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 002h                 ; a8 02
-    je short 073c5h                           ; 74 12
+    je short 0740bh                           ; 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 b4 a5
+    call 01976h                               ; e8 6e a5
     add sp, strict byte 00006h                ; 83 c4 06
     mov AL, strict byte 060h                  ; b0 60
     mov dx, strict word 00064h                ; ba 64 00
@@ -10966,13 +10965,13 @@ set_kbd_command_byte_:                       ; 0xf73a2 LB 0x36
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_int74_function:                             ; 0xf73d8 LB 0xd2
+_int74_function:                             ; 0xf741e 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 87 a2
+    call 0166eh                               ; e8 41 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
@@ -10981,7 +10980,7 @@ _int74_function:                             ; 0xf73d8 LB 0xd2
     ; sub ah, ah                                ; 2a e4
     and AL, strict byte 021h                  ; 24 21
     cmp AL, strict byte 021h                  ; 3c 21
-    jne short 0741ch                          ; 75 22
+    jne short 07462h                          ; 75 22
     mov dx, strict word 00060h                ; ba 60 00
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -10989,15 +10988,15 @@ _int74_function:                             ; 0xf73d8 LB 0xd2
     mov bl, al                                ; 88 c3
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 48 a2
+    call 01652h                               ; e8 02 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 3d a2
+    call 01652h                               ; e8 f7 a1
     mov byte [bp-006h], al                    ; 88 46 fa
     test AL, strict byte 080h                 ; a8 80
-    jne short 0741fh                          ; 75 03
-    jmp near 07496h                           ; e9 77 00
+    jne short 07465h                          ; 75 03
+    jmp near 074dch                           ; 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
@@ -11011,113 +11010,112 @@ _int74_function:                             ; 0xf73d8 LB 0xd2
     mov dx, ax                                ; 89 c2
     add dx, strict byte 00028h                ; 83 c2 28
     mov ax, cx                                ; 89 c8
-    call 01660h                               ; e8 1e a2
+    call 01660h                               ; e8 d8 a1
     mov al, byte [bp-008h]                    ; 8a 46 f8
     cmp al, byte [bp-004h]                    ; 3a 46 fc
-    jc short 07486h                           ; 72 3c
+    jc short 074cch                           ; 72 3c
     mov dx, strict word 00028h                ; ba 28 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 00 a2
+    call 01652h                               ; e8 ba 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 f3 a1
+    call 01652h                               ; e8 ad 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 e6 a1
+    call 01652h                               ; e8 a0 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 07489h                           ; 74 0a
+    je short 074cfh                           ; 74 0a
     mov word [bp+004h], strict word 00001h    ; c7 46 04 01 00
-    jmp short 07489h                          ; eb 03
+    jmp short 074cfh                          ; 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 ca a1
+    call 01660h                               ; e8 84 a1
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-    in AL, DX                                 ; ec
-    je short 07505h                           ; 74 68
-    jne short 07487h                          ; 75 e8
-    jne short 0751eh                          ; 75 7d
-    jbe short 07492h                          ; 76 ef
-    jbe short 074d8h                          ; 76 33
-    jne short 074beh                          ; 75 17
-    jnbe short 0748dh                         ; 77 e4
-    db  077h
-_int15_function_mouse:                       ; 0xf74aa LB 0x3a0
+    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
+    db  078h
+_int15_function_mouse:                       ; 0xf74f0 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 b4 a1
+    call 0166eh                               ; e8 6e a1
     mov cx, ax                                ; 89 c1
     cmp byte [bp+012h], 007h                  ; 80 7e 12 07
-    jbe short 074cdh                          ; 76 0b
+    jbe short 07513h                          ; 76 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 001h                  ; c6 46 13 01
-    jmp near 07844h                           ; e9 77 03
+    jmp near 0788ah                           ; e9 77 03
     mov ax, strict word 00065h                ; b8 65 00
-    call 073a2h                               ; e8 cf fe
+    call 073e8h                               ; 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 07541h                         ; 77 5e
+    jnbe short 07587h                         ; 77 5e
     xor bh, bh                                ; 30 ff
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx+0749ah]                   ; 2e ff a7 9a 74
+    jmp word [cs:bx+074e0h]                   ; 2e ff a7 e0 74
     cmp byte [bp+00dh], 001h                  ; 80 7e 0d 01
-    jnbe short 07544h                         ; 77 52
+    jnbe short 0758ah                         ; 77 52
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 58 a1
+    call 01652h                               ; e8 12 a1
     test AL, strict byte 080h                 ; a8 80
-    jne short 07509h                          ; 75 0b
+    jne short 0754fh                          ; 75 0b
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 005h                  ; c6 46 13 05
-    jmp near 0783eh                           ; e9 35 03
+    jmp near 07884h                           ; e9 35 03
     cmp byte [bp+00dh], 000h                  ; 80 7e 0d 00
-    jne short 07513h                          ; 75 04
+    jne short 07559h                          ; 75 04
     mov AL, strict byte 0f5h                  ; b0 f5
-    jmp short 07515h                          ; eb 02
+    jmp short 0755bh                          ; eb 02
     mov AL, strict byte 0f4h                  ; b0 f4
     xor ah, ah                                ; 30 e4
-    call 0730dh                               ; e8 f3 fd
+    call 07353h                               ; e8 f3 fd
     test al, al                               ; 84 c0
-    jne short 07547h                          ; 75 29
+    jne short 0758dh                          ; 75 29
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 1f fe
+    call 0738bh                               ; e8 1f fe
     test al, al                               ; 84 c0
-    je short 07530h                           ; 74 06
+    je short 07576h                           ; 74 06
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    jne short 07547h                          ; 75 17
-    jmp near 0783eh                           ; e9 0b 03
+    jne short 0758dh                          ; 75 17
+    jmp near 07884h                           ; e9 0b 03
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 0753eh                           ; 72 04
+    jc short 07584h                           ; 72 04
     cmp AL, strict byte 008h                  ; 3c 08
-    jbe short 0754ah                          ; 76 0c
-    jmp near 076e5h                           ; e9 a4 01
-    jmp near 07828h                           ; e9 e4 02
-    jmp near 07836h                           ; e9 ef 02
-    jmp near 077bch                           ; e9 72 02
+    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
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 00 a1
+    call 01652h                               ; e8 ba a0
     mov ah, byte [bp+00dh]                    ; 8a 66 0d
     db  0feh, 0cch
     ; dec ah                                    ; fe cc
@@ -11127,31 +11125,31 @@ _int15_function_mouse:                       ; 0xf74aa LB 0x3a0
     xor bh, bh                                ; 30 ff
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01660h                               ; e8 f8 a0
+    call 01660h                               ; e8 b2 a0
     mov dx, strict word 00026h                ; ba 26 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 e2 a0
+    call 01652h                               ; e8 9c 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 e1 a0
+    call 01660h                               ; e8 9b a0
     mov ax, 000ffh                            ; b8 ff 00
-    call 0730dh                               ; e8 88 fd
+    call 07353h                               ; e8 88 fd
     test al, al                               ; 84 c0
-    jne short 07547h                          ; 75 be
+    jne short 0758dh                          ; 75 be
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07345h                               ; e8 b4 fd
+    call 0738bh                               ; e8 b4 fd
     mov cl, al                                ; 88 c1
     cmp byte [bp-008h], 0feh                  ; 80 7e f8 fe
-    jne short 075a3h                          ; 75 0a
+    jne short 075e9h                          ; 75 0a
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 004h                  ; c6 46 13 04
-    jmp short 07530h                          ; eb 8d
+    jmp short 07576h                          ; eb 8d
     cmp byte [bp-008h], 0fah                  ; 80 7e f8 fa
-    je short 075bdh                           ; 74 14
+    je short 07603h                           ; 74 14
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11159,91 +11157,91 @@ _int15_function_mouse:                       ; 0xf74aa LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 bc a3
+    call 01976h                               ; e8 76 a3
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 07547h                          ; 75 86
+    jne short 0758dh                          ; 75 86
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 7c fd
+    call 0738bh                               ; e8 7c fd
     test al, al                               ; 84 c0
-    jne short 07623h                          ; 75 56
+    jne short 07669h                          ; 75 56
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07345h                               ; e8 70 fd
+    call 0738bh                               ; e8 70 fd
     test al, al                               ; 84 c0
-    jne short 07623h                          ; 75 4a
+    jne short 07669h                          ; 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 0783eh                           ; e9 56 02
+    jmp near 07884h                           ; e9 56 02
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     cmp AL, strict byte 003h                  ; 3c 03
-    jc short 075ffh                           ; 72 10
-    jbe short 0761dh                          ; 76 2c
+    jc short 07645h                           ; 72 10
+    jbe short 07663h                          ; 76 2c
     cmp AL, strict byte 006h                  ; 3c 06
-    je short 07632h                           ; 74 3d
+    je short 07678h                           ; 74 3d
     cmp AL, strict byte 005h                  ; 3c 05
-    je short 0762ch                           ; 74 33
+    je short 07672h                           ; 74 33
     cmp AL, strict byte 004h                  ; 3c 04
-    je short 07626h                           ; 74 29
-    jmp short 07638h                          ; eb 39
+    je short 0766ch                           ; 74 29
+    jmp short 0767eh                          ; eb 39
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 07617h                           ; 74 14
+    je short 0765dh                           ; 74 14
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 07611h                           ; 74 0a
+    je short 07657h                           ; 74 0a
     test al, al                               ; 84 c0
-    jne short 07638h                          ; 75 2d
+    jne short 0767eh                          ; 75 2d
     mov byte [bp-006h], 00ah                  ; c6 46 fa 0a
-    jmp short 0763ch                          ; eb 2b
+    jmp short 07682h                          ; eb 2b
     mov byte [bp-006h], 014h                  ; c6 46 fa 14
-    jmp short 0763ch                          ; eb 25
+    jmp short 07682h                          ; eb 25
     mov byte [bp-006h], 028h                  ; c6 46 fa 28
-    jmp short 0763ch                          ; eb 1f
+    jmp short 07682h                          ; eb 1f
     mov byte [bp-006h], 03ch                  ; c6 46 fa 3c
-    jmp short 0763ch                          ; eb 19
-    jmp near 077bch                           ; e9 96 01
+    jmp short 07682h                          ; eb 19
+    jmp near 07802h                           ; e9 96 01
     mov byte [bp-006h], 050h                  ; c6 46 fa 50
-    jmp short 0763ch                          ; eb 10
+    jmp short 07682h                          ; eb 10
     mov byte [bp-006h], 064h                  ; c6 46 fa 64
-    jmp short 0763ch                          ; eb 0a
+    jmp short 07682h                          ; eb 0a
     mov byte [bp-006h], 0c8h                  ; c6 46 fa c8
-    jmp short 0763ch                          ; eb 04
+    jmp short 07682h                          ; eb 04
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     cmp byte [bp-006h], 000h                  ; 80 7e fa 00
-    jbe short 07672h                          ; 76 30
+    jbe short 076b8h                          ; 76 30
     mov ax, 000f3h                            ; b8 f3 00
-    call 0730dh                               ; e8 c5 fc
+    call 07353h                               ; e8 c5 fc
     test al, al                               ; 84 c0
-    jne short 07667h                          ; 75 1b
+    jne short 076adh                          ; 75 1b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07345h                               ; e8 f1 fc
+    call 0738bh                               ; e8 f1 fc
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
-    call 0730dh                               ; e8 b1 fc
+    call 07353h                               ; e8 b1 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07345h                               ; e8 e1 fc
-    jmp near 0783eh                           ; e9 d7 01
+    call 0738bh                               ; e8 e1 fc
+    jmp near 07884h                           ; 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 0783eh                           ; e9 cc 01
+    jmp near 07884h                           ; 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 0783eh                           ; e9 c1 01
+    jmp near 07884h                           ; e9 c1 01
     cmp byte [bp+00dh], 004h                  ; 80 7e 0d 04
-    jnc short 076e5h                          ; 73 62
+    jnc short 0772bh                          ; 73 62
     mov ax, 000e8h                            ; b8 e8 00
-    call 0730dh                               ; e8 84 fc
+    call 07353h                               ; e8 84 fc
     test al, al                               ; 84 c0
-    jne short 076dbh                          ; 75 4e
+    jne short 07721h                          ; 75 4e
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 b0 fc
+    call 0738bh                               ; e8 b0 fc
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 076afh                           ; 74 14
+    je short 076f5h                           ; 74 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11251,16 +11249,16 @@ _int15_function_mouse:                       ; 0xf74aa LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 ca a2
+    call 01976h                               ; e8 84 a2
     add sp, strict byte 00006h                ; 83 c4 06
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     xor ah, ah                                ; 30 e4
-    call 0730dh                               ; e8 56 fc
+    call 07353h                               ; e8 56 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 86 fc
+    call 0738bh                               ; e8 86 fc
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 07714h                           ; 74 4f
+    je short 0775ah                           ; 74 4f
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11268,46 +11266,46 @@ _int15_function_mouse:                       ; 0xf74aa LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 a0 a2
+    call 01976h                               ; e8 5a a2
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp short 07714h                          ; eb 39
+    jmp short 0775ah                          ; eb 39
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 07714h                          ; eb 2f
+    jmp short 0775ah                          ; eb 2f
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 002h                  ; c6 46 13 02
-    jmp short 07714h                          ; eb 25
+    jmp short 0775ah                          ; eb 25
     mov ax, 000f2h                            ; b8 f2 00
-    call 0730dh                               ; e8 18 fc
+    call 07353h                               ; e8 18 fc
     test al, al                               ; 84 c0
-    jne short 0770ch                          ; 75 13
+    jne short 07752h                          ; 75 13
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 44 fc
+    call 0738bh                               ; e8 44 fc
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07345h                               ; e8 3c fc
-    jmp near 075dfh                           ; e9 d3 fe
+    call 0738bh                               ; e8 3c fc
+    jmp near 07625h                           ; 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 0783eh                           ; e9 27 01
+    jmp near 07884h                           ; e9 27 01
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     test al, al                               ; 84 c0
-    jbe short 07727h                          ; 76 09
+    jbe short 0776dh                          ; 76 09
     cmp AL, strict byte 002h                  ; 3c 02
-    jbe short 07725h                          ; 76 03
-    jmp near 077c6h                           ; e9 a1 00
-    jmp short 07791h                          ; eb 6a
+    jbe short 0776bh                          ; 76 03
+    jmp near 0780ch                           ; e9 a1 00
+    jmp short 077d7h                          ; eb 6a
     mov ax, 000e9h                            ; b8 e9 00
-    call 0730dh                               ; e8 e0 fb
+    call 07353h                               ; e8 e0 fb
     test al, al                               ; 84 c0
-    jne short 0779ah                          ; 75 69
+    jne short 077e0h                          ; 75 69
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 0c fc
+    call 0738bh                               ; e8 0c fc
     mov cl, al                                ; 88 c1
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 07755h                           ; 74 14
+    je short 0779bh                           ; 74 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11315,53 +11313,53 @@ _int15_function_mouse:                       ; 0xf74aa LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 24 a2
+    call 01976h                               ; e8 de a1
     add sp, strict byte 00006h                ; 83 c4 06
     test cl, cl                               ; 84 c9
-    jne short 077bch                          ; 75 63
+    jne short 07802h                          ; 75 63
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 e4 fb
+    call 0738bh                               ; e8 e4 fb
     test al, al                               ; 84 c0
-    jne short 077bch                          ; 75 57
+    jne short 07802h                          ; 75 57
     mov dx, ss                                ; 8c d2
     lea ax, [bp-004h]                         ; 8d 46 fc
-    call 07345h                               ; e8 d8 fb
+    call 0738bh                               ; e8 d8 fb
     test al, al                               ; 84 c0
-    jne short 077bch                          ; 75 4b
+    jne short 07802h                          ; 75 4b
     mov dx, ss                                ; 8c d2
     lea ax, [bp-008h]                         ; 8d 46 f8
-    call 07345h                               ; e8 cc fb
+    call 0738bh                               ; e8 cc fb
     test al, al                               ; 84 c0
-    jne short 077bch                          ; 75 3f
+    jne short 07802h                          ; 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 07714h                          ; eb 83
+    jmp short 0775ah                          ; eb 83
     cmp AL, strict byte 001h                  ; 3c 01
-    jne short 0779ch                          ; 75 07
+    jne short 077e2h                          ; 75 07
     mov ax, 000e6h                            ; b8 e6 00
-    jmp short 0779fh                          ; eb 05
-    jmp short 077bch                          ; eb 20
+    jmp short 077e5h                          ; eb 05
+    jmp short 07802h                          ; eb 20
     mov ax, 000e7h                            ; b8 e7 00
-    call 0730dh                               ; e8 6b fb
+    call 07353h                               ; e8 6b fb
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    jne short 077b8h                          ; 75 10
+    jne short 077feh                          ; 75 10
     mov dx, ss                                ; 8c d2
     lea ax, [bp-006h]                         ; 8d 46 fa
-    call 07345h                               ; e8 95 fb
+    call 0738bh                               ; e8 95 fb
     cmp byte [bp-006h], 0fah                  ; 80 7e fa fa
-    je short 077b8h                           ; 74 02
+    je short 077feh                           ; 74 02
     mov CL, strict byte 001h                  ; b1 01
     test cl, cl                               ; 84 c9
-    je short 07826h                           ; 74 6a
+    je short 0786ch                           ; 74 6a
     or word [bp+018h], strict byte 00001h     ; 83 4e 18 01
     mov byte [bp+013h], 003h                  ; c6 46 13 03
-    jmp short 07826h                          ; eb 60
+    jmp short 0786ch                          ; eb 60
     mov al, byte [bp+00dh]                    ; 8a 46 0d
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -11369,54 +11367,54 @@ _int15_function_mouse:                       ; 0xf74aa LB 0x3a0
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 9f a1
+    call 01976h                               ; e8 59 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 0783eh                          ; eb 5a
+    jmp short 07884h                          ; 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 8b 9e
+    call 0167ch                               ; e8 45 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 80 9e
+    call 0167ch                               ; e8 3a 9e
     mov dx, strict word 00027h                ; ba 27 00
     mov ax, cx                                ; 89 c8
-    call 01652h                               ; e8 4e 9e
+    call 01652h                               ; e8 08 9e
     mov ah, al                                ; 88 c4
     test si, si                               ; 85 f6
-    jne short 07818h                          ; 75 0e
+    jne short 0785eh                          ; 75 0e
     cmp word [bp+014h], strict byte 00000h    ; 83 7e 14 00
-    jne short 07818h                          ; 75 08
+    jne short 0785eh                          ; 75 08
     test AL, strict byte 080h                 ; a8 80
-    je short 0781ah                           ; 74 06
+    je short 07860h                           ; 74 06
     and AL, strict byte 07fh                  ; 24 7f
-    jmp short 0781ah                          ; eb 02
+    jmp short 07860h                          ; 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 3a 9e
-    jmp short 0783eh                          ; eb 16
+    call 01660h                               ; e8 f4 9d
+    jmp short 07884h                          ; 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 43 a1
+    call 01976h                               ; e8 fd 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 073a2h                               ; e8 5e fb
+    call 073e8h                               ; e8 5e fb
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-_int17_function:                             ; 0xf784a LB 0xac
+_int17_function:                             ; 0xf7890 LB 0xac
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -11426,25 +11424,25 @@ _int17_function:                             ; 0xf784a 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 10 9e
+    call 0166eh                               ; e8 ca 9d
     mov bx, ax                                ; 89 c3
     mov si, ax                                ; 89 c6
     cmp byte [bp+013h], 003h                  ; 80 7e 13 03
-    jnc short 07874h                          ; 73 0c
+    jnc short 078bah                          ; 73 0c
     mov ax, word [bp+00eh]                    ; 8b 46 0e
     cmp ax, strict word 00003h                ; 3d 03 00
-    jnc short 07874h                          ; 73 04
+    jnc short 078bah                          ; 73 04
     test bx, bx                               ; 85 db
-    jnbe short 07877h                         ; 77 03
-    jmp near 078ech                           ; e9 75 00
+    jnbe short 078bdh                         ; 77 03
+    jmp near 07932h                           ; 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 d0 9d
+    call 01652h                               ; e8 8a 9d
     mov ch, al                                ; 88 c5
     xor cl, cl                                ; 30 c9
     cmp byte [bp+013h], 000h                  ; 80 7e 13 00
-    jne short 078b8h                          ; 75 2c
+    jne short 078feh                          ; 75 2c
     mov al, byte [bp+012h]                    ; 8a 46 12
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
@@ -11464,13 +11462,13 @@ _int17_function:                             ; 0xf784a LB 0xac
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 040h                 ; a8 40
-    je short 078b8h                           ; 74 07
+    je short 078feh                           ; 74 07
     test cx, cx                               ; 85 c9
-    je short 078b8h                           ; 74 03
+    je short 078feh                           ; 74 03
     dec cx                                    ; 49
-    jmp short 078a7h                          ; eb ef
+    jmp short 078edh                          ; eb ef
     cmp byte [bp+013h], 001h                  ; 80 7e 13 01
-    jne short 078d3h                          ; 75 15
+    jne short 07919h                          ; 75 15
     lea dx, [si+002h]                         ; 8d 54 02
     in AL, DX                                 ; ec
     db  02ah, 0e4h
@@ -11489,16 +11487,16 @@ _int17_function:                             ; 0xf784a LB 0xac
     xor AL, strict byte 048h                  ; 34 48
     mov byte [bp+013h], al                    ; 88 46 13
     test cx, cx                               ; 85 c9
-    jne short 078e6h                          ; 75 04
+    jne short 0792ch                          ; 75 04
     or byte [bp+013h], 001h                   ; 80 4e 13 01
     and byte [bp+01ch], 0feh                  ; 80 66 1c fe
-    jmp short 078f0h                          ; eb 04
+    jmp short 07936h                          ; 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_:                                       ; 0xf78f6 LB 0xb2
+wait_:                                       ; 0xf793c LB 0xb2
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11516,28 +11514,28 @@ wait_:                                       ; 0xf78f6 LB 0xb2
     xor cx, cx                                ; 31 c9
     mov dx, 0046ch                            ; ba 6c 04
     xor ax, ax                                ; 31 c0
-    call 0168ah                               ; e8 71 9d
+    call 0168ah                               ; e8 2b 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 63 9d
+    call 0168ah                               ; e8 1d 9d
     mov word [bp-012h], ax                    ; 89 46 ee
     mov di, dx                                ; 89 d7
     cmp dx, bx                                ; 39 da
-    jnbe short 07937h                         ; 77 07
-    jne short 0793eh                          ; 75 0c
+    jnbe short 0797dh                         ; 77 07
+    jne short 07984h                          ; 75 0c
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jbe short 0793eh                          ; 76 07
+    jbe short 07984h                          ; 76 07
     sub ax, word [bp-00eh]                    ; 2b 46 f2
     sbb dx, bx                                ; 19 da
-    jmp short 07949h                          ; eb 0b
+    jmp short 0798fh                          ; eb 0b
     cmp dx, bx                                ; 39 da
-    jc short 07949h                           ; 72 07
-    jne short 0794dh                          ; 75 09
+    jc short 0798fh                           ; 72 07
+    jne short 07993h                          ; 75 09
     cmp ax, word [bp-00eh]                    ; 3b 46 f2
-    jnc short 0794dh                          ; 73 04
+    jnc short 07993h                          ; 73 04
     sub si, ax                                ; 29 c6
     sbb cx, dx                                ; 19 d1
     mov ax, word [bp-012h]                    ; 8b 46 ee
@@ -11545,13 +11543,13 @@ wait_:                                       ; 0xf78f6 LB 0xb2
     mov bx, di                                ; 89 fb
     mov ax, 00100h                            ; b8 00 01
     int 016h                                  ; cd 16
-    je short 07961h                           ; 74 05
+    je short 079a7h                           ; 74 05
     mov AL, strict byte 001h                  ; b0 01
-    jmp near 07963h                           ; e9 02 00
+    jmp near 079a9h                           ; e9 02 00
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     test al, al                               ; 84 c0
-    je short 0798dh                           ; 74 26
+    je short 079d3h                           ; 74 26
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     int 016h                                  ; cd 16
@@ -11564,17 +11562,17 @@ wait_:                                       ; 0xf78f6 LB 0xb2
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 f6 9f
+    call 01976h                               ; e8 b0 9f
     add sp, strict byte 00006h                ; 83 c4 06
     cmp byte [bp-00ah], 000h                  ; 80 7e f6 00
-    je short 0798dh                           ; 74 04
+    je short 079d3h                           ; 74 04
     mov al, dl                                ; 88 d0
-    jmp short 0799fh                          ; eb 12
+    jmp short 079e5h                          ; eb 12
     test cx, cx                               ; 85 c9
-    jnle short 0791eh                         ; 7f 8d
-    jne short 07997h                          ; 75 04
+    jnle short 07964h                         ; 7f 8d
+    jne short 079ddh                          ; 75 04
     test si, si                               ; 85 f6
-    jnbe short 0791eh                         ; 77 87
+    jnbe short 07964h                         ; 77 87
     mov ax, word [bp-010h]                    ; 8b 46 f0
     push ax                                   ; 50
     popfw                                     ; 9d
@@ -11586,7 +11584,7 @@ wait_:                                       ; 0xf78f6 LB 0xb2
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_byte_:                             ; 0xf79a8 LB 0x16
+read_logo_byte_:                             ; 0xf79ee LB 0x16
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11601,7 +11599,7 @@ read_logo_byte_:                             ; 0xf79a8 LB 0x16
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-read_logo_word_:                             ; 0xf79be LB 0x14
+read_logo_word_:                             ; 0xf7a04 LB 0x14
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push dx                                   ; 52
@@ -11614,7 +11612,7 @@ read_logo_word_:                             ; 0xf79be LB 0x14
     pop dx                                    ; 5a
     pop bp                                    ; 5d
     retn                                      ; c3
-print_detected_harddisks_:                   ; 0xf79d2 LB 0x15a
+print_detected_harddisks_:                   ; 0xf7a18 LB 0x15a
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11624,33 +11622,33 @@ print_detected_harddisks_:                   ; 0xf79d2 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 89 9c
+    call 0166eh                               ; e8 43 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 5c 9c
+    call 01652h                               ; e8 16 9c
     mov byte [bp-00ah], al                    ; 88 46 f6
     xor cl, cl                                ; 30 c9
     cmp cl, byte [bp-00ah]                    ; 3a 4e f6
-    jnc short 07a5eh                          ; 73 5e
+    jnc short 07aa4h                          ; 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 43 9c
+    call 01652h                               ; e8 fd 9b
     mov bl, al                                ; 88 c3
     cmp AL, strict byte 00ch                  ; 3c 0c
-    jc short 07a40h                           ; 72 2b
+    jc short 07a86h                           ; 72 2b
     test ch, ch                               ; 84 ed
-    jne short 07a29h                          ; 75 10
+    jne short 07a6fh                          ; 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 52 9f
+    call 01976h                               ; e8 0c 9f
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
     mov al, cl                                ; 88 c8
@@ -11661,43 +11659,43 @@ print_detected_harddisks_:                   ; 0xf79d2 LB 0x15a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 3c 9f
+    call 01976h                               ; e8 f6 9e
     add sp, strict byte 00006h                ; 83 c4 06
-    jmp near 07af2h                           ; e9 b2 00
+    jmp near 07b38h                           ; e9 b2 00
     cmp AL, strict byte 008h                  ; 3c 08
-    jc short 07a61h                           ; 72 1d
+    jc short 07aa7h                           ; 72 1d
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07a5ch                          ; 75 12
+    jne short 07aa2h                          ; 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 21 9f
+    call 01976h                               ; e8 db 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07a29h                          ; eb cb
-    jmp near 07af7h                           ; e9 96 00
+    jmp short 07a6fh                          ; eb cb
+    jmp near 07b3dh                           ; e9 96 00
     cmp AL, strict byte 004h                  ; 3c 04
-    jnc short 07a7fh                          ; 73 1a
+    jnc short 07ac5h                          ; 73 1a
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 07a7fh                          ; 75 14
+    jne short 07ac5h                          ; 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 00 9f
+    call 01976h                               ; e8 ba 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07a98h                          ; eb 19
+    jmp short 07adeh                          ; eb 19
     cmp bl, 004h                              ; 80 fb 04
-    jc short 07a98h                           ; 72 14
+    jc short 07adeh                           ; 72 14
     test ch, ch                               ; 84 ed
-    jne short 07a98h                          ; 75 10
+    jne short 07adeh                          ; 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 e3 9e
+    call 01976h                               ; e8 9d 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov CH, strict byte 001h                  ; b5 01
     mov al, cl                                ; 88 c8
@@ -11708,10 +11706,10 @@ print_detected_harddisks_:                   ; 0xf79d2 LB 0x15a
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 cd 9e
+    call 01976h                               ; e8 87 9e
     add sp, strict byte 00006h                ; 83 c4 06
     cmp bl, 004h                              ; 80 fb 04
-    jc short 07ab4h                           ; 72 03
+    jc short 07afah                           ; 72 03
     sub bl, 004h                              ; 80 eb 04
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
@@ -11720,14 +11718,14 @@ print_detected_harddisks_:                   ; 0xf79d2 LB 0x15a
     ; sub ax, dx                                ; 2b c2
     sar ax, 1                                 ; d1 f8
     test ax, ax                               ; 85 c0
-    je short 07ac6h                           ; 74 05
+    je short 07b0ch                           ; 74 05
     mov ax, 00a14h                            ; b8 14 0a
-    jmp short 07ac9h                          ; eb 03
+    jmp short 07b0fh                          ; 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 a5 9e
+    call 01976h                               ; e8 5f 9e
     add sp, strict byte 00004h                ; 83 c4 04
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
@@ -11735,34 +11733,34 @@ print_detected_harddisks_:                   ; 0xf79d2 LB 0x15a
     cwd                                       ; 99
     idiv bx                                   ; f7 fb
     test dx, dx                               ; 85 d2
-    je short 07ae7h                           ; 74 05
+    je short 07b2dh                           ; 74 05
     mov ax, 00a28h                            ; b8 28 0a
-    jmp short 07aeah                          ; eb 03
+    jmp short 07b30h                          ; eb 03
     mov ax, 00a2eh                            ; b8 2e 0a
     push ax                                   ; 50
     push bx                                   ; 53
-    call 01976h                               ; e8 87 9e
+    call 01976h                               ; e8 41 9e
     add sp, strict byte 00004h                ; 83 c4 04
     db  0feh, 0c1h
     ; inc cl                                    ; fe c1
-    jmp near 079fbh                           ; e9 04 ff
+    jmp near 07a41h                           ; e9 04 ff
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    jne short 07b15h                          ; 75 18
+    jne short 07b5bh                          ; 75 18
     test ch, ch                               ; 84 ed
-    jne short 07b15h                          ; 75 14
+    jne short 07b5bh                          ; 75 14
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07b15h                          ; 75 0e
+    jne short 07b5bh                          ; 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 64 9e
+    call 01976h                               ; e8 1e 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 56 9e
+    call 01976h                               ; e8 10 9e
     add sp, strict byte 00004h                ; 83 c4 04
     lea sp, [bp-008h]                         ; 8d 66 f8
     pop si                                    ; 5e
@@ -11771,7 +11769,7 @@ print_detected_harddisks_:                   ; 0xf79d2 LB 0x15a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-get_boot_drive_:                             ; 0xf7b2c LB 0x28
+get_boot_drive_:                             ; 0xf7b72 LB 0x28
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11779,12 +11777,12 @@ get_boot_drive_:                             ; 0xf7b2c 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 32 9b
+    call 0166eh                               ; e8 ec 9a
     mov dx, 00304h                            ; ba 04 03
-    call 01652h                               ; e8 10 9b
+    call 01652h                               ; e8 ca 9a
     sub bl, 002h                              ; 80 eb 02
     cmp bl, al                                ; 38 c3
-    jc short 07b4bh                           ; 72 02
+    jc short 07b91h                           ; 72 02
     mov BL, strict byte 0ffh                  ; b3 ff
     mov al, bl                                ; 88 d8
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -11792,7 +11790,7 @@ get_boot_drive_:                             ; 0xf7b2c LB 0x28
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-show_logo_:                                  ; 0xf7b54 LB 0x240
+show_logo_:                                  ; 0xf7b9a LB 0x240
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -11803,7 +11801,7 @@ show_logo_:                                  ; 0xf7b54 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 06 9b
+    call 0166eh                               ; e8 c0 9a
     mov si, ax                                ; 89 c6
     mov byte [bp-00ch], 000h                  ; c6 46 f4 00
     xor cx, cx                                ; 31 c9
@@ -11815,9 +11813,9 @@ show_logo_:                                  ; 0xf7b54 LB 0x240
     out strict byte 040h, AL                  ; e6 40
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 079beh                               ; e8 3b fe
+    call 07a04h                               ; e8 3b fe
     cmp ax, 066bbh                            ; 3d bb 66
-    jne short 07b9ah                          ; 75 12
+    jne short 07be0h                          ; 75 12
     push SS                                   ; 16
     pop ES                                    ; 07
     lea di, [bp-018h]                         ; 8d 7e e8
@@ -11825,125 +11823,125 @@ show_logo_:                                  ; 0xf7b54 LB 0x240
     int 010h                                  ; cd 10
     mov word [es:di], bx                      ; 26 89 1d
     cmp ax, strict word 0004fh                ; 3d 4f 00
-    je short 07b9dh                           ; 74 03
-    jmp near 07c63h                           ; e9 c6 00
+    je short 07be3h                           ; 74 03
+    jmp near 07ca9h                           ; e9 c6 00
     mov al, cl                                ; 88 c8
     add AL, strict byte 004h                  ; 04 04
     xor ah, ah                                ; 30 e4
-    call 079a8h                               ; e8 02 fe
+    call 079eeh                               ; 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 079a8h                               ; e8 f4 fd
+    call 079eeh                               ; 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 079beh                               ; e8 fc fd
+    call 07a04h                               ; 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 079a8h                               ; e8 d8 fd
+    call 079eeh                               ; e8 d8 fd
     mov byte [bp-010h], al                    ; 88 46 f0
     test bl, bl                               ; 84 db
-    jne short 07bdfh                          ; 75 08
+    jne short 07c25h                          ; 75 08
     test bh, bh                               ; 84 ff
-    jne short 07bdfh                          ; 75 04
+    jne short 07c25h                          ; 75 04
     test dx, dx                               ; 85 d2
-    je short 07b9ah                           ; 74 bb
+    je short 07be0h                           ; 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 07c12h                           ; 74 25
+    je short 07c58h                           ; 74 25
     xor cx, cx                                ; 31 c9
-    jmp short 07bf7h                          ; eb 06
+    jmp short 07c3dh                          ; eb 06
     inc cx                                    ; 41
     cmp cx, strict byte 00010h                ; 83 f9 10
-    jnbe short 07c19h                         ; 77 22
+    jnbe short 07c5fh                         ; 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 078f6h                               ; e8 ee fc
+    call 0793ch                               ; e8 ee fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07bf1h                          ; 75 e5
+    jne short 07c37h                          ; 75 e5
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
-    jmp short 07c19h                          ; eb 07
+    jmp short 07c5fh                          ; 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 07c34h                          ; 75 15
+    jne short 07c7ah                          ; 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 078f6h                               ; e8 ca fc
+    call 0793ch                               ; e8 ca fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c34h                          ; 75 04
+    jne short 07c7ah                          ; 75 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    je short 07c63h                           ; 74 29
+    je short 07ca9h                           ; 74 29
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07c63h                          ; 75 23
+    jne short 07ca9h                          ; 75 23
     mov cx, strict word 00010h                ; b9 10 00
-    jmp short 07c4ah                          ; eb 05
+    jmp short 07c90h                          ; eb 05
     dec cx                                    ; 49
     test cx, cx                               ; 85 c9
-    jbe short 07c63h                          ; 76 19
+    jbe short 07ca9h                          ; 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 078f6h                               ; e8 9b fc
+    call 0793ch                               ; e8 9b fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07c45h                          ; 75 e6
+    jne short 07c8bh                          ; 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 f3 99
+    call 01660h                               ; e8 ad 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 07c8dh                           ; 74 14
+    je short 07cd3h                           ; 74 14
     cmp byte [bp-014h], 000h                  ; 80 7e ec 00
-    jne short 07cbbh                          ; 75 3c
+    jne short 07d01h                          ; 75 3c
     cmp byte [bp-012h], 000h                  ; 80 7e ee 00
-    jne short 07cbbh                          ; 75 36
+    jne short 07d01h                          ; 75 36
     cmp word [bp-016h], strict byte 00000h    ; 83 7e ea 00
-    je short 07c90h                           ; 74 05
-    jmp short 07cbbh                          ; eb 2e
-    jmp near 07d77h                           ; e9 e7 00
+    je short 07cd6h                           ; 74 05
+    jmp short 07d01h                          ; eb 2e
+    jmp near 07dbdh                           ; e9 e7 00
     cmp byte [bp-010h], 002h                  ; 80 7e f0 02
-    jne short 07ca4h                          ; 75 0e
+    jne short 07ceah                          ; 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 d5 9c
+    call 01976h                               ; e8 8f 9c
     add sp, strict byte 00004h                ; 83 c4 04
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    jne short 07cbbh                          ; 75 11
+    jne short 07d01h                          ; 75 11
     mov dx, strict word 00001h                ; ba 01 00
     mov ax, 000c0h                            ; b8 c0 00
-    call 078f6h                               ; e8 43 fc
+    call 0793ch                               ; e8 43 fc
     cmp AL, strict byte 086h                  ; 3c 86
-    jne short 07cbbh                          ; 75 04
+    jne short 07d01h                          ; 75 04
     mov byte [bp-00ch], 001h                  ; c6 46 f4 01
     cmp byte [bp-00ch], 000h                  ; 80 7e f4 00
-    je short 07c8dh                           ; 74 cc
+    je short 07cd3h                           ; 74 cc
     mov byte [bp-00eh], 000h                  ; c6 46 f2 00
     mov ax, 00100h                            ; b8 00 01
     mov cx, 01000h                            ; b9 00 10
@@ -11964,59 +11962,59 @@ show_logo_:                                  ; 0xf7b54 LB 0x240
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 89 9c
+    call 01976h                               ; e8 43 9c
     add sp, strict byte 00004h                ; 83 c4 04
-    call 079d2h                               ; e8 df fc
+    call 07a18h                               ; 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 78 9c
+    call 01976h                               ; e8 32 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 078f6h                               ; e8 ec fb
+    call 0793ch                               ; e8 ec fb
     mov cl, al                                ; 88 c1
     test al, al                               ; 84 c0
-    je short 07d01h                           ; 74 f1
+    je short 07d47h                           ; 74 f1
     cmp AL, strict byte 030h                  ; 3c 30
-    je short 07d64h                           ; 74 50
+    je short 07daah                           ; 74 50
     cmp cl, 002h                              ; 80 f9 02
-    jc short 07d3dh                           ; 72 24
+    jc short 07d83h                           ; 72 24
     cmp cl, 009h                              ; 80 f9 09
-    jnbe short 07d3dh                         ; 77 1f
+    jnbe short 07d83h                         ; 77 1f
     mov al, cl                                ; 88 c8
     xor ah, ah                                ; 30 e4
-    call 07b2ch                               ; e8 07 fe
+    call 07b72h                               ; e8 07 fe
     cmp AL, strict byte 0ffh                  ; 3c ff
-    jne short 07d2bh                          ; 75 02
-    jmp short 07d01h                          ; eb d6
+    jne short 07d71h                          ; 75 02
+    jmp short 07d47h                          ; 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 29 99
+    call 01660h                               ; e8 e3 98
     mov byte [bp-00eh], 002h                  ; c6 46 f2 02
-    jmp short 07d64h                          ; eb 27
+    jmp short 07daah                          ; eb 27
     cmp cl, 02eh                              ; 80 f9 2e
-    je short 07d52h                           ; 74 10
+    je short 07d98h                           ; 74 10
     cmp cl, 026h                              ; 80 f9 26
-    je short 07d58h                           ; 74 11
+    je short 07d9eh                           ; 74 11
     cmp cl, 021h                              ; 80 f9 21
-    jne short 07d5eh                          ; 75 12
+    jne short 07da4h                          ; 75 12
     mov byte [bp-00eh], 001h                  ; c6 46 f2 01
-    jmp short 07d64h                          ; eb 12
+    jmp short 07daah                          ; eb 12
     mov byte [bp-00eh], 003h                  ; c6 46 f2 03
-    jmp short 07d64h                          ; eb 0c
+    jmp short 07daah                          ; eb 0c
     mov byte [bp-00eh], 004h                  ; c6 46 f2 04
-    jmp short 07d64h                          ; eb 06
+    jmp short 07daah                          ; eb 06
     cmp byte [bp-00eh], 000h                  ; 80 7e f2 00
-    je short 07d01h                           ; 74 9d
+    je short 07d47h                           ; 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 ef 98
+    call 01660h                               ; e8 a9 98
     mov AL, strict byte 003h                  ; b0 03
     mov AH, strict byte 000h                  ; b4 00
     int 010h                                  ; cd 10
@@ -12029,7 +12027,7 @@ show_logo_:                                  ; 0xf7b54 LB 0x240
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0ede3h                               ; e8 5b 70
+    call 0ede3h                               ; e8 15 70
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -12040,7 +12038,7 @@ show_logo_:                                  ; 0xf7b54 LB 0x240
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-delay_boot_:                                 ; 0xf7d94 LB 0x72
+delay_boot_:                                 ; 0xf7dda LB 0x72
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12050,7 +12048,7 @@ delay_boot_:                                 ; 0xf7d94 LB 0x72
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
     test ax, ax                               ; 85 c0
-    je short 07dfch                           ; 74 5a
+    je short 07e42h                           ; 74 5a
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
     mov AL, strict byte 0d3h                  ; b0 d3
@@ -12062,27 +12060,27 @@ delay_boot_:                                 ; 0xf7d94 LB 0x72
     push ax                                   ; 50
     mov ax, strict word 00002h                ; b8 02 00
     push ax                                   ; 50
-    call 01976h                               ; e8 bc 9b
+    call 01976h                               ; e8 76 9b
     add sp, strict byte 00006h                ; 83 c4 06
     test bx, bx                               ; 85 db
-    jbe short 07ddbh                          ; 76 1a
+    jbe short 07e21h                          ; 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 a9 9b
+    call 01976h                               ; e8 63 9b
     add sp, strict byte 00006h                ; 83 c4 06
     xor dx, dx                                ; 31 d2
     mov ax, strict word 00040h                ; b8 40 00
-    call 078f6h                               ; e8 1e fb
+    call 0793ch                               ; e8 1e fb
     dec bx                                    ; 4b
-    jmp short 07dbdh                          ; eb e2
+    jmp short 07e03h                          ; 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 90 9b
+    call 01976h                               ; e8 4a 9b
     add sp, strict byte 00004h                ; 83 c4 04
     mov AL, strict byte 034h                  ; b0 34
     out strict byte 043h, AL                  ; e6 43
@@ -12093,7 +12091,7 @@ delay_boot_:                                 ; 0xf7d94 LB 0x72
     push bp                                   ; 55
     push DS                                   ; 1e
     mov ds, ax                                ; 8e d8
-    call 0ede3h                               ; e8 e9 6f
+    call 0ede3h                               ; e8 a3 6f
     pop DS                                    ; 1f
     pop bp                                    ; 5d
     lea sp, [bp-00ah]                         ; 8d 66 f6
@@ -12104,7 +12102,7 @@ delay_boot_:                                 ; 0xf7d94 LB 0x72
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-scsi_cmd_data_in_:                           ; 0xf7e06 LB 0xd5
+scsi_cmd_data_in_:                           ; 0xf7e4c LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12120,12 +12118,12 @@ scsi_cmd_data_in_:                           ; 0xf7e06 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07e1ch                          ; 75 f7
+    jne short 07e62h                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07e30h                          ; 75 04
+    jne short 07e76h                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07e32h                          ; eb 02
+    jmp short 07e78h                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
     mov ax, bx                                ; 89 d8
@@ -12133,7 +12131,7 @@ scsi_cmd_data_in_:                           ; 0xf7e06 LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e3ch                               ; e2 fa
+    loop 07e82h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, di                                 ; 09 f9
@@ -12151,29 +12149,29 @@ scsi_cmd_data_in_:                           ; 0xf7e06 LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07e61h                               ; e2 fa
+    loop 07ea7h                               ; 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 07e83h                          ; 73 0e
+    jnc short 07ec9h                          ; 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 07e6ch                          ; eb e9
+    jmp short 07eb2h                          ; 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 07e83h                          ; 75 f7
+    jne short 07ec9h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07e9eh                           ; 74 0e
+    je short 07ee4h                           ; 74 0e
     lea dx, [si+003h]                         ; 8d 54 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12181,12 +12179,12 @@ scsi_cmd_data_in_:                           ; 0xf7e06 LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov di, strict word 00004h                ; bf 04 00
-    jmp short 07ed0h                          ; eb 32
+    jmp short 07f16h                          ; eb 32
     lea dx, [si+001h]                         ; 8d 54 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07eadh                          ; 75 06
+    jne short 07ef3h                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07ec7h                          ; 76 1a
+    jbe short 07f0dh                          ; 76 1a
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -12195,7 +12193,7 @@ scsi_cmd_data_in_:                           ; 0xf7e06 LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07e9eh                          ; eb d7
+    jmp short 07ee4h                          ; eb d7
     mov cx, bx                                ; 89 d9
     les di, [bp+006h]                         ; c4 7e 06
     rep insb                                  ; f3 6c
@@ -12206,7 +12204,7 @@ scsi_cmd_data_in_:                           ; 0xf7e06 LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ah                               ; c2 0a 00
-scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
+scsi_cmd_data_out_:                          ; 0xf7f21 LB 0xd5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12222,12 +12220,12 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07ef1h                          ; 75 f7
+    jne short 07f37h                          ; 75 f7
     mov al, byte [bp+004h]                    ; 8a 46 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 07f05h                          ; 75 04
+    jne short 07f4bh                          ; 75 04
     xor ax, ax                                ; 31 c0
-    jmp short 07f07h                          ; eb 02
+    jmp short 07f4dh                          ; eb 02
     xor ah, ah                                ; 30 e4
     mov si, ax                                ; 89 c6
     mov ax, bx                                ; 89 d8
@@ -12235,7 +12233,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07f11h                               ; e2 fa
+    loop 07f57h                               ; e2 fa
     mov cx, ax                                ; 89 c1
     and cx, 000f0h                            ; 81 e1 f0 00
     or cx, si                                 ; 09 f1
@@ -12253,26 +12251,26 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 07f36h                               ; e2 fa
+    loop 07f7ch                               ; 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 07f58h                          ; 73 0e
+    jnc short 07f9eh                          ; 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 07f41h                          ; eb e9
+    jmp short 07f87h                          ; eb e9
     lea dx, [di+001h]                         ; 8d 55 01
     cmp word [bp+00ch], strict byte 00000h    ; 83 7e 0c 00
-    jne short 07f67h                          ; 75 06
+    jne short 07fadh                          ; 75 06
     cmp bx, 08000h                            ; 81 fb 00 80
-    jbe short 07f82h                          ; 76 1b
+    jbe short 07fc8h                          ; 76 1b
     mov cx, 08000h                            ; b9 00 80
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12282,7 +12280,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+008h], ax                    ; 89 46 08
-    jmp short 07f58h                          ; eb d6
+    jmp short 07f9eh                          ; eb d6
     mov cx, bx                                ; 89 d9
     les si, [bp+006h]                         ; c4 76 06
     db  0f3h, 026h, 06eh
@@ -12292,9 +12290,9 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 07f8ah                          ; 75 f7
+    jne short 07fd0h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 07fa5h                           ; 74 0e
+    je short 07febh                           ; 74 0e
     lea dx, [di+003h]                         ; 8d 55 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12302,14 +12300,14 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 07fa7h                          ; eb 02
+    jmp short 07fedh                          ; 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:                          ; 0xf7fb0 LB 0xe9
+ at scsi_read_sectors:                          ; 0xf7ff6 LB 0xe9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12321,7 +12319,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb 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 07fe0h                          ; 76 15
+    jbe short 08026h                          ; 76 15
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, 00b1eh                            ; b8 1e 0b
@@ -12330,7 +12328,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 99 99
+    call 01976h                               ; e8 53 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
@@ -12371,7 +12369,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb 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 0804bh                               ; e2 f8
+    loop 08091h                               ; 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
@@ -12382,10 +12380,10 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07e06h                               ; e8 95 fd
+    call 07e4ch                               ; e8 95 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 0808ch                          ; 75 15
+    jne short 080d2h                          ; 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
@@ -12399,7 +12397,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at scsi_write_sectors:                         ; 0xf8099 LB 0xe9
+ at scsi_write_sectors:                         ; 0xf80df LB 0xe9
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12411,7 +12409,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb 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 080c9h                          ; 76 15
+    jbe short 0810fh                          ; 76 15
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
     mov ax, 00b4fh                            ; b8 4f 0b
@@ -12420,7 +12418,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 b0 98
+    call 01976h                               ; e8 6a 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
@@ -12461,7 +12459,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb 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 08134h                               ; e2 f8
+    loop 0817ah                               ; 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
@@ -12472,10 +12470,10 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     xor dh, dh                                ; 30 f6
     mov cx, ss                                ; 8c d1
     lea bx, [bp-01ah]                         ; 8d 5e e6
-    call 07edbh                               ; e8 81 fd
+    call 07f21h                               ; e8 81 fd
     mov ah, al                                ; 88 c4
     test al, al                               ; 84 c0
-    jne short 08175h                          ; 75 15
+    jne short 081bbh                          ; 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
@@ -12489,7 +12487,7 @@ scsi_cmd_data_out_:                          ; 0xf7edb LB 0xd5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
+scsi_cmd_packet_:                            ; 0xf81c8 LB 0x170
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -12501,25 +12499,25 @@ scsi_cmd_packet_:                            ; 0xf8182 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 d0 94
+    call 0166eh                               ; e8 8a 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 081cdh                          ; 75 23
+    jne short 08213h                          ; 75 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 7e 97
+    call 01933h                               ; e8 38 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 b2 97
+    call 01976h                               ; e8 6c 97
     add sp, strict byte 00006h                ; 83 c4 06
     mov dx, strict word 00001h                ; ba 01 00
-    jmp near 082e7h                           ; e9 1a 01
+    jmp near 0832dh                           ; e9 1a 01
     sub di, strict byte 00008h                ; 83 ef 08
     sal di, 1                                 ; d1 e7
     sal di, 1                                 ; d1 e7
@@ -12534,7 +12532,7 @@ scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     test AL, strict byte 001h                 ; a8 01
-    jne short 081eah                          ; 75 f7
+    jne short 08230h                          ; 75 f7
     xor dx, bx                                ; 31 da
     mov ax, word [bp+006h]                    ; 8b 46 06
     add ax, word [bp+004h]                    ; 03 46 04
@@ -12550,7 +12548,7 @@ scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
     mov cx, strict word 0000ch                ; b9 0c 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 08215h                               ; e2 fa
+    loop 0825bh                               ; e2 fa
     and ax, 000f0h                            ; 25 f0 00
     mov cl, byte [bp-006h]                    ; 8a 4e fa
     xor ch, ch                                ; 30 ed
@@ -12569,14 +12567,14 @@ scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 0823dh                               ; e2 fa
+    loop 08283h                               ; 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 08262h                          ; 73 11
+    jnc short 082a8h                          ; 73 11
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov di, word [bp-00eh]                    ; 8b 7e f2
     add di, cx                                ; 01 cf
@@ -12584,15 +12582,15 @@ scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
     mov dx, bx                                ; 89 da
     out DX, AL                                ; ee
     inc cx                                    ; 41
-    jmp short 08248h                          ; eb e6
+    jmp short 0828eh                          ; 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 08262h                          ; 75 f7
+    jne short 082a8h                          ; 75 f7
     test AL, strict byte 002h                 ; a8 02
-    je short 0827dh                           ; 74 0e
+    je short 082c3h                           ; 74 0e
     lea dx, [bx+003h]                         ; 8d 57 03
     xor al, al                                ; 30 c0
     out DX, AL                                ; ee
@@ -12600,14 +12598,14 @@ scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     mov dx, strict word 00003h                ; ba 03 00
-    jmp short 082e7h                          ; eb 6a
+    jmp short 0832dh                          ; eb 6a
     mov ax, word [bp+004h]                    ; 8b 46 04
     test ax, ax                               ; 85 c0
-    je short 0828ch                           ; 74 08
+    je short 082d2h                           ; 74 08
     lea dx, [bx+001h]                         ; 8d 57 01
     mov cx, ax                                ; 89 c1
     in AL, DX                                 ; ec
-    loop 08289h                               ; e2 fd
+    loop 082cfh                               ; 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
@@ -12615,9 +12613,9 @@ scsi_cmd_packet_:                            ; 0xf8182 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 082adh                          ; 75 07
+    jne short 082f3h                          ; 75 07
     cmp word [bp+006h], 08000h                ; 81 7e 06 00 80
-    jbe short 082cah                          ; 76 1d
+    jbe short 08310h                          ; 76 1d
     mov dx, ax                                ; 89 c2
     mov cx, 08000h                            ; b9 00 80
     les di, [bp+00ch]                         ; c4 7e 0c
@@ -12627,17 +12625,17 @@ scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
     mov ax, es                                ; 8c c0
     add ax, 00800h                            ; 05 00 08
     mov word [bp+00eh], ax                    ; 89 46 0e
-    jmp short 0829dh                          ; eb d3
+    jmp short 082e3h                          ; 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 082e5h                           ; 74 07
+    je short 0832bh                           ; 74 07
     mov cx, word [es:si+020h]                 ; 26 8b 4c 20
     in AL, DX                                 ; ec
-    loop 082e2h                               ; e2 fd
+    loop 08328h                               ; e2 fd
     xor dx, dx                                ; 31 d2
     mov ax, dx                                ; 89 d0
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -12645,7 +12643,7 @@ scsi_cmd_packet_:                            ; 0xf8182 LB 0x170
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 0000ch                               ; c2 0c 00
-scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
+scsi_enumerate_attached_devices_:            ; 0xf8338 LB 0x4cb
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -12657,19 +12655,19 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     push ax                                   ; 50
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 66 93
+    call 0166eh                               ; e8 20 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 08730h                           ; e9 1a 04
+    jmp near 08776h                           ; e9 1a 04
     cmp AL, strict byte 004h                  ; 3c 04
-    jc short 0831dh                           ; 72 03
-    jmp near 087b3h                           ; e9 96 04
+    jc short 08363h                           ; 72 03
+    jmp near 087f9h                           ; 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 0a080h                               ; e8 56 1d
+    call 0a0c0h                               ; e8 50 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
@@ -12687,16 +12685,16 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     mov cx, ss                                ; 8c d1
     lea bx, [bp-048h]                         ; 8d 5e b8
     mov ax, word [bp-0024ah]                  ; 8b 86 b6 fd
-    call 07e06h                               ; e8 ae fa
+    call 07e4ch                               ; e8 ae fa
     test al, al                               ; 84 c0
-    je short 0836eh                           ; 74 12
+    je short 083b4h                           ; 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 0b 96
+    call 01976h                               ; e8 c5 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
@@ -12728,7 +12726,7 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     mov cx, strict word 00008h                ; b9 08 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 083bch                               ; e2 fa
+    loop 08402h                               ; e2 fa
     or bx, ax                                 ; 09 c3
     or dx, si                                 ; 09 f2
     mov al, byte [bp-0023dh]                  ; 8a 86 c3 fd
@@ -12736,13 +12734,13 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     or bx, ax                                 ; 09 c3
     mov word [bp-01ch], bx                    ; 89 5e e4
     test dx, dx                               ; 85 d2
-    jne short 083dbh                          ; 75 06
+    jne short 08421h                          ; 75 06
     cmp bx, 00200h                            ; 81 fb 00 02
-    je short 083feh                           ; 74 23
+    je short 08444h                           ; 74 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 4d 95
+    call 01933h                               ; e8 07 95
     push dx                                   ; 52
     push word [bp-01ch]                       ; ff 76 e4
     push word [bp-014h]                       ; ff 76 ec
@@ -12750,43 +12748,43 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 7e 95
+    call 01976h                               ; e8 38 95
     add sp, strict byte 0000ah                ; 83 c4 0a
-    jmp near 08724h                           ; e9 26 03
+    jmp near 0876ah                           ; e9 26 03
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     cmp AL, strict byte 001h                  ; 3c 01
-    jc short 08411h                           ; 72 0c
-    jbe short 08419h                          ; 76 12
+    jc short 08457h                           ; 72 0c
+    jbe short 0845fh                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 08421h                           ; 74 16
+    je short 08467h                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 0841dh                           ; 74 0e
-    jmp short 08468h                          ; eb 57
+    je short 08463h                           ; 74 0e
+    jmp short 084aeh                          ; eb 57
     test al, al                               ; 84 c0
-    jne short 08468h                          ; 75 53
+    jne short 084aeh                          ; 75 53
     mov BL, strict byte 090h                  ; b3 90
-    jmp short 08423h                          ; eb 0a
+    jmp short 08469h                          ; eb 0a
     mov BL, strict byte 098h                  ; b3 98
-    jmp short 08423h                          ; eb 06
+    jmp short 08469h                          ; eb 06
     mov BL, strict byte 0a0h                  ; b3 a0
-    jmp short 08423h                          ; eb 02
+    jmp short 08469h                          ; 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 7f 92
+    call 016aeh                               ; e8 39 92
     test al, al                               ; 84 c0
-    je short 08468h                           ; 74 35
+    je short 084aeh                           ; 74 35
     mov al, bl                                ; 88 d8
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 72 92
+    call 016aeh                               ; e8 2c 92
     mov dh, al                                ; 88 c6
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 69 92
+    call 016aeh                               ; e8 23 92
     mov ah, dh                                ; 88 f4
     cwd                                       ; 99
     mov si, ax                                ; 89 c6
@@ -12794,42 +12792,42 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     mov al, bl                                ; 88 d8
     add AL, strict byte 002h                  ; 04 02
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 58 92
+    call 016aeh                               ; e8 12 92
     xor ah, ah                                ; 30 e4
     mov word [bp-028h], ax                    ; 89 46 d8
     mov ax, cx                                ; 89 c8
-    call 016aeh                               ; e8 4e 92
+    call 016aeh                               ; e8 08 92
     xor ah, ah                                ; 30 e4
     mov word [bp-01ah], ax                    ; 89 46 e6
-    jmp near 08555h                           ; e9 ed 00
+    jmp near 0859bh                           ; 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 0a060h                               ; e8 e6 1b
+    call 0a0a0h                               ; e8 e0 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 084a2h                         ; 77 15
-    je short 08492h                           ; 74 03
-    jmp near 08515h                           ; e9 83 00
+    jnbe short 084e8h                         ; 77 15
+    je short 084d8h                           ; 74 03
+    jmp near 0855bh                           ; e9 83 00
     cmp word [bp-022h], strict byte 00000h    ; 83 7e de 00
-    jnbe short 084a2h                         ; 77 0a
-    jne short 0848fh                          ; 75 f5
+    jnbe short 084e8h                         ; 77 0a
+    jne short 084d5h                          ; 75 f5
     cmp word [bp-012h], strict byte 00040h    ; 83 7e ee 40
-    jnbe short 084a2h                         ; 77 02
-    jne short 08515h                          ; 75 73
+    jnbe short 084e8h                         ; 77 02
+    jne short 0855bh                          ; 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 0a060h                               ; e8 a5 1b
+    call 0a0a0h                               ; e8 9f 1b
     mov si, word [bp-018h]                    ; 8b 76 e8
     add si, dx                                ; 01 d6
     mov word [bp-01eh], si                    ; 89 76 e2
@@ -12847,7 +12845,7 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     mov cx, word [bp-036h]                    ; 8b 4e ca
     mov dx, si                                ; 89 f2
     mov si, strict word 00008h                ; be 08 00
-    call 0a060h                               ; e8 75 1b
+    call 0a0a0h                               ; e8 6f 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
@@ -12856,32 +12854,32 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 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 0a060h                               ; e8 5a 1b
+    call 0a0a0h                               ; e8 54 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 08552h                          ; eb 3d
+    jmp short 08598h                          ; eb 3d
     test ax, ax                               ; 85 c0
-    jnbe short 0852bh                         ; 77 12
-    jne short 08537h                          ; 75 1c
+    jnbe short 08571h                         ; 77 12
+    jne short 0857dh                          ; 75 1c
     cmp word [bp-022h], strict byte 00000h    ; 83 7e de 00
-    jnbe short 0852bh                         ; 77 0a
-    jne short 08537h                          ; 75 14
+    jnbe short 08571h                         ; 77 0a
+    jne short 0857dh                          ; 75 14
     cmp word [bp-012h], strict byte 00020h    ; 83 7e ee 20
-    jnbe short 0852bh                         ; 77 02
-    jne short 08537h                          ; 75 0c
+    jnbe short 08571h                         ; 77 02
+    jne short 0857dh                          ; 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 08550h                          ; eb 19
+    jmp short 08596h                          ; 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 0a060h                               ; e8 10 1b
+    call 0a0a0h                               ; e8 0a 1b
     mov si, dx                                ; 89 d6
     mov word [bp-026h], cx                    ; 89 4e da
     mov al, byte [bp-00ch]                    ; 8a 46 f4
@@ -12918,18 +12916,18 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 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 085cch                          ; 75 06
+    jne short 08612h                          ; 75 06
     cmp si, 00400h                            ; 81 fe 00 04
-    jbe short 085dah                          ; 76 0e
+    jbe short 08620h                          ; 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 085e2h                          ; eb 08
+    jmp short 08628h                          ; 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 46 93
+    call 01933h                               ; e8 00 93
     push word [bp-020h]                       ; ff 76 e0
     push word [bp-022h]                       ; ff 76 de
     push word [bp-012h]                       ; ff 76 ee
@@ -12946,7 +12944,7 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 5f 93
+    call 01976h                               ; e8 19 93
     add sp, strict byte 00018h                ; 83 c4 18
     mov al, byte [bp-00eh]                    ; 8a 46 f2
     xor ah, ah                                ; 30 e4
@@ -12975,20 +12973,20 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 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 e5 8f
+    call 01652h                               ; e8 9f 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 e4 8f
+    call 01660h                               ; e8 9e 8f
     inc byte [bp-00ch]                        ; fe 46 f4
-    jmp near 08719h                           ; e9 97 00
+    jmp near 0875fh                           ; 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 a6 92
+    call 01933h                               ; e8 60 92
     push word [bp-014h]                       ; ff 76 ec
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
@@ -12997,15 +12995,15 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 d5 92
+    call 01976h                               ; e8 8f 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 086b8h                           ; 74 05
+    je short 086feh                           ; 74 05
     mov cx, strict word 00001h                ; b9 01 00
-    jmp short 086bah                          ; eb 02
+    jmp short 08700h                          ; eb 02
     xor cx, cx                                ; 31 c9
     mov al, byte [bp-00ch]                    ; 8a 46 f4
     xor ah, ah                                ; 30 e4
@@ -13043,8 +13041,8 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 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 08730h                           ; 7c 03
-    jmp near 087b3h                           ; e9 83 00
+    jl short 08776h                           ; 7c 03
+    jmp near 087f9h                           ; 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
@@ -13066,34 +13064,34 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     mov cx, ss                                ; 8c d1
     lea bx, [bp-048h]                         ; 8d 5e b8
     mov ax, word [bp-0024ah]                  ; 8b 86 b6 fd
-    call 07e06h                               ; e8 9e f6
+    call 07e4ch                               ; e8 9e f6
     test al, al                               ; 84 c0
-    je short 0877eh                           ; 74 12
+    je short 087c4h                           ; 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 fb 91
+    call 01976h                               ; e8 b5 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 0879ah                          ; 75 0a
+    jne short 087e0h                          ; 75 0a
     test byte [bp-00248h], 01fh               ; f6 86 b8 fd 1f
-    jne short 0879ah                          ; 75 03
-    jmp near 08316h                           ; e9 7c fb
+    jne short 087e0h                          ; 75 03
+    jmp near 0835ch                           ; e9 7c fb
     test byte [bp-00248h], 0e0h               ; f6 86 b8 fd e0
-    je short 087a4h                           ; 74 03
-    jmp near 08719h                           ; e9 75 ff
+    je short 087eah                           ; 74 03
+    jmp near 0875fh                           ; 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 087b1h                          ; 75 03
-    jmp near 08682h                           ; e9 d1 fe
-    jmp short 087a1h                          ; eb ee
+    jne short 087f7h                          ; 75 03
+    jmp near 086c8h                           ; e9 d1 fe
+    jmp short 087e7h                          ; eb ee
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -13102,12 +13100,12 @@ scsi_enumerate_attached_devices_:            ; 0xf82f2 LB 0x4cb
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-_scsi_init:                                  ; 0xf87bd LB 0x66
+_scsi_init:                                  ; 0xf8803 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 a5 8e
+    call 0166eh                               ; e8 5f 8e
     mov bx, 00122h                            ; bb 22 01
     mov es, ax                                ; 8e c0
     mov byte [es:bx+0022ch], 000h             ; 26 c6 87 2c 02 00
@@ -13118,12 +13116,12 @@ _scsi_init:                                  ; 0xf87bd LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 087edh                          ; 75 0c
+    jne short 08833h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00433h                            ; ba 33 04
     out DX, AL                                ; ee
     mov ax, 00430h                            ; b8 30 04
-    call 082f2h                               ; e8 05 fb
+    call 08338h                               ; e8 05 fb
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 00436h                            ; ba 36 04
     out DX, AL                                ; ee
@@ -13131,12 +13129,12 @@ _scsi_init:                                  ; 0xf87bd LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 08806h                          ; 75 0c
+    jne short 0884ch                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 00437h                            ; ba 37 04
     out DX, AL                                ; ee
     mov ax, 00434h                            ; b8 34 04
-    call 082f2h                               ; e8 ec fa
+    call 08338h                               ; e8 ec fa
     mov AL, strict byte 055h                  ; b0 55
     mov dx, 0043ah                            ; ba 3a 04
     out DX, AL                                ; ee
@@ -13144,16 +13142,16 @@ _scsi_init:                                  ; 0xf87bd LB 0x66
     db  02ah, 0e4h
     ; sub ah, ah                                ; 2a e4
     cmp AL, strict byte 055h                  ; 3c 55
-    jne short 0881fh                          ; 75 0c
+    jne short 08865h                          ; 75 0c
     xor al, al                                ; 30 c0
     mov dx, 0043bh                            ; ba 3b 04
     out DX, AL                                ; ee
     mov ax, 00438h                            ; b8 38 04
-    call 082f2h                               ; e8 d3 fa
+    call 08338h                               ; e8 d3 fa
     mov sp, bp                                ; 89 ec
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_ctrl_extract_bits_:                     ; 0xf8823 LB 0x1c
+ahci_ctrl_extract_bits_:                     ; 0xf8869 LB 0x1c
     push si                                   ; 56
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -13162,14 +13160,14 @@ ahci_ctrl_extract_bits_:                     ; 0xf8823 LB 0x1c
     and dx, cx                                ; 21 ca
     mov cl, byte [bp+006h]                    ; 8a 4e 06
     xor ch, ch                                ; 30 ed
-    jcxz 0883ah                               ; e3 06
+    jcxz 08880h                               ; e3 06
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 08834h                               ; e2 fa
+    loop 0887ah                               ; e2 fa
     pop bp                                    ; 5d
     pop si                                    ; 5e
     retn 00002h                               ; c2 02 00
-ahci_addr_to_phys_:                          ; 0xf883f LB 0x1e
+ahci_addr_to_phys_:                          ; 0xf8885 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -13180,7 +13178,7 @@ ahci_addr_to_phys_:                          ; 0xf883f LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0884dh                               ; e2 fa
+    loop 08893h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -13188,7 +13186,7 @@ ahci_addr_to_phys_:                          ; 0xf883f LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-ahci_port_cmd_sync_:                         ; 0xf885d LB 0x159
+ahci_port_cmd_sync_:                         ; 0xf88a3 LB 0x159
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13203,8 +13201,8 @@ ahci_port_cmd_sync_:                         ; 0xf885d 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 08880h                          ; 75 03
-    jmp near 089aeh                           ; e9 2e 01
+    jne short 088c6h                          ; 75 03
+    jmp near 089f4h                           ; e9 2e 01
     mov al, byte [es:si+00263h]               ; 26 8a 84 63 02
     xor ah, ah                                ; 30 e4
     xor di, di                                ; 31 ff
@@ -13217,7 +13215,7 @@ ahci_port_cmd_sync_:                         ; 0xf885d 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 0883fh                               ; e8 92 ff
+    call 08885h                               ; 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
@@ -13285,14 +13283,14 @@ ahci_port_cmd_sync_:                         ; 0xf885d LB 0x159
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dh, 040h                             ; f6 c6 40
-    jne short 08940h                          ; 75 04
+    jne short 08986h                          ; 75 04
     test AL, strict byte 001h                 ; a8 01
-    je short 08944h                           ; 74 04
+    je short 0898ah                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08946h                          ; eb 02
+    jmp short 0898ch                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 08912h                           ; 74 c8
+    je short 08958h                           ; 74 c8
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -13349,7 +13347,7 @@ ahci_port_cmd_sync_:                         ; 0xf885d LB 0x159
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_cmd_data_:                              ; 0xf89b6 LB 0x262
+ahci_cmd_data_:                              ; 0xf89fc LB 0x262
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13374,7 +13372,7 @@ ahci_cmd_data_:                              ; 0xf89b6 LB 0x262
     xor bx, bx                                ; 31 db
     mov ax, 00080h                            ; b8 80 00
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0a080h                               ; e8 8c 16
+    call 0a0c0h                               ; e8 86 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
@@ -13392,7 +13390,7 @@ ahci_cmd_data_:                              ; 0xf89b6 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 0a060h                               ; e8 28 16
+    call 0a0a0h                               ; e8 22 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
@@ -13403,7 +13401,7 @@ ahci_cmd_data_:                              ; 0xf89b6 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 0a060h                               ; e8 02 16
+    call 0a0a0h                               ; e8 fc 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
@@ -13415,7 +13413,7 @@ ahci_cmd_data_:                              ; 0xf89b6 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 0a060h                               ; e8 d6 15
+    call 0a0a0h                               ; e8 d0 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
@@ -13426,7 +13424,7 @@ ahci_cmd_data_:                              ; 0xf89b6 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 0a060h                               ; e8 b0 15
+    call 0a0a0h                               ; e8 aa 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
@@ -13437,7 +13435,7 @@ ahci_cmd_data_:                              ; 0xf89b6 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 0a060h                               ; e8 8a 15
+    call 0a0a0h                               ; e8 84 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
@@ -13450,7 +13448,7 @@ ahci_cmd_data_:                              ; 0xf89b6 LB 0x262
     xor dx, dx                                ; 31 d2
     mov bx, word [bp-012h]                    ; 8b 5e ee
     xor cx, cx                                ; 31 c9
-    call 0a010h                               ; e8 08 15
+    call 0a050h                               ; e8 02 15
     push dx                                   ; 52
     push ax                                   ; 50
     mov es, [bp-016h]                         ; 8e 46 ea
@@ -13460,7 +13458,7 @@ ahci_cmd_data_:                              ; 0xf89b6 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 09f5fh                               ; e8 3b 14
+    call 09fa5h                               ; 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
@@ -13484,7 +13482,7 @@ ahci_cmd_data_:                              ; 0xf89b6 LB 0x262
     mov bx, si                                ; 89 f3
     mov ax, word [es:bx+020h]                 ; 26 8b 47 20
     test ax, ax                               ; 85 c0
-    je short 08bb4h                           ; 74 39
+    je short 08bfah                           ; 74 39
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov bl, byte [es:di+00263h]               ; 26 8a 9d 63 02
@@ -13502,35 +13500,35 @@ ahci_cmd_data_:                              ; 0xf89b6 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 08bc1h                          ; 75 06
+    jne short 08c07h                          ; 75 06
     mov byte [bp-008h], 040h                  ; c6 46 f8 40
-    jmp short 08bd8h                          ; eb 17
+    jmp short 08c1eh                          ; eb 17
     cmp AL, strict byte 0a0h                  ; 3c a0
-    jne short 08bd4h                          ; 75 0f
+    jne short 08c1ah                          ; 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 08bd8h                          ; eb 04
+    jmp short 08c1eh                          ; 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 0885dh                               ; e8 73 fc
+    call 088a3h                               ; 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 09fd6h                               ; e8 d7 13
+    call 0a01ch                               ; 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 08c0eh                           ; 74 05
+    je short 08c54h                           ; 74 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 08c10h                          ; eb 02
+    jmp short 08c56h                          ; eb 02
     xor ah, ah                                ; 30 e4
     lea sp, [bp-006h]                         ; 8d 66 fa
     pop di                                    ; 5f
@@ -13538,7 +13536,7 @@ ahci_cmd_data_:                              ; 0xf89b6 LB 0x262
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_deinit_current_:                   ; 0xf8c18 LB 0x183
+ahci_port_deinit_current_:                   ; 0xf8c5e LB 0x183
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -13553,7 +13551,7 @@ ahci_port_deinit_current_:                   ; 0xf8c18 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 08c9bh                           ; 74 61
+    je short 08ce1h                           ; 74 61
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
     sal ax, CL                                ; d3 e0
@@ -13599,28 +13597,28 @@ ahci_port_deinit_current_:                   ; 0xf8c18 LB 0x183
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08c9eh                           ; 74 07
+    je short 08ce4h                           ; 74 07
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08ca0h                          ; eb 05
-    jmp near 08d92h                           ; e9 f4 00
+    jmp short 08ce6h                          ; eb 05
+    jmp near 08dd8h                           ; e9 f4 00
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08c6dh                           ; 74 c9
+    je short 08cb3h                           ; 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 0a080h                               ; e8 cf 13
+    call 0a0c0h                               ; e8 c9 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 0a080h                               ; e8 c0 13
+    call 0a0c0h                               ; e8 ba 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 0a080h                               ; e8 b1 13
+    call 0a0c0h                               ; e8 ab 13
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -13726,7 +13724,7 @@ ahci_port_deinit_current_:                   ; 0xf8c18 LB 0x183
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_port_init_:                             ; 0xf8d9b LB 0x250
+ahci_port_init_:                             ; 0xf8de1 LB 0x250
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -13736,7 +13734,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     mov si, ax                                ; 89 c6
     mov word [bp-00ah], dx                    ; 89 56 f6
     mov byte [bp-008h], bl                    ; 88 5e f8
-    call 08c18h                               ; e8 69 fe
+    call 08c5eh                               ; e8 69 fe
     mov al, bl                                ; 88 d8
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -13787,28 +13785,28 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test ax, 0c011h                           ; a9 11 c0
-    je short 08e22h                           ; 74 04
+    je short 08e68h                           ; 74 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 08e24h                          ; eb 02
+    jmp short 08e6ah                          ; eb 02
     xor al, al                                ; 30 c0
     cmp AL, strict byte 001h                  ; 3c 01
-    je short 08dech                           ; 74 c4
+    je short 08e32h                           ; 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 0a080h                               ; e8 4b 12
+    call 0a0c0h                               ; e8 45 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 0a080h                               ; e8 3c 12
+    call 0a0c0h                               ; e8 36 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 0a080h                               ; e8 2b 12
+    call 0a0c0h                               ; e8 25 12
     mov bl, byte [bp-008h]                    ; 8a 5e f8
     xor bh, bh                                ; 30 ff
     mov CL, strict byte 007h                  ; b1 07
@@ -13827,7 +13825,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     out DX, eax                               ; 66 ef
     mov ax, di                                ; 89 f8
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0883fh                               ; e8 bb f9
+    call 08885h                               ; 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
@@ -13872,7 +13870,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     out DX, eax                               ; 66 ef
     mov ax, si                                ; 89 f0
     mov dx, word [bp-00ah]                    ; 8b 56 f6
-    call 0883fh                               ; e8 4f f9
+    call 08885h                               ; 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
@@ -13977,7 +13975,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
- at ahci_read_sectors:                          ; 0xf8feb LB 0xaa
+ at ahci_read_sectors:                          ; 0xf9031 LB 0xaa
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -13988,7 +13986,7 @@ ahci_port_init_:                             ; 0xf8d9b 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 09016h                          ; 76 13
+    jbe short 0905ch                          ; 76 13
     push di                                   ; 57
     mov ax, 00c62h                            ; b8 62 0c
     push ax                                   ; 50
@@ -13996,7 +13994,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 63 89
+    call 01976h                               ; e8 1d 89
     add sp, strict byte 00008h                ; 83 c4 08
     xor bx, bx                                ; 31 db
     les si, [bp+004h]                         ; c4 76 04
@@ -14010,11 +14008,11 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08d9bh                               ; e8 5a fd
+    call 08de1h                               ; 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 089b6h                               ; e8 6a f9
+    call 089fch                               ; 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
@@ -14044,7 +14042,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
- at ahci_write_sectors:                         ; 0xf9095 LB 0x88
+ at ahci_write_sectors:                         ; 0xf90db LB 0x88
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14056,7 +14054,7 @@ ahci_port_init_:                             ; 0xf8d9b 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 090c3h                          ; 76 13
+    jbe short 09109h                          ; 76 13
     push bx                                   ; 53
     mov ax, 00c93h                            ; b8 93 0c
     push ax                                   ; 50
@@ -14064,7 +14062,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     push ax                                   ; 50
     mov ax, strict word 00007h                ; b8 07 00
     push ax                                   ; 50
-    call 01976h                               ; e8 b6 88
+    call 01976h                               ; e8 70 88
     add sp, strict byte 00008h                ; 83 c4 08
     xor di, di                                ; 31 ff
     mov es, cx                                ; 8e c1
@@ -14078,11 +14076,11 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08d9bh                               ; e8 af fc
+    call 08de1h                               ; e8 af fc
     mov bx, strict word 00035h                ; bb 35 00
     mov ax, si                                ; 89 f0
     mov dx, cx                                ; 89 ca
-    call 089b6h                               ; e8 c0 f8
+    call 089fch                               ; e8 c0 f8
     mov dx, ax                                ; 89 c2
     mov es, cx                                ; 8e c1
     mov ax, word [es:si+00eh]                 ; 26 8b 44 0e
@@ -14097,7 +14095,7 @@ ahci_port_init_:                             ; 0xf8d9b LB 0x250
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-ahci_cmd_packet_:                            ; 0xf911d LB 0x18c
+ahci_cmd_packet_:                            ; 0xf9163 LB 0x18c
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -14109,33 +14107,33 @@ ahci_cmd_packet_:                            ; 0xf911d 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 36 85
+    call 0166eh                               ; e8 f0 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 09167h                          ; 75 23
+    jne short 091adh                          ; 75 23
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 e4 87
+    call 01933h                               ; e8 9e 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 18 88
+    call 01976h                               ; e8 d2 87
     add sp, strict byte 00006h                ; 83 c4 06
     mov ax, strict word 00001h                ; b8 01 00
-    jmp near 092a0h                           ; e9 39 01
+    jmp near 092e6h                           ; e9 39 01
     test byte [bp+004h], 001h                 ; f6 46 04 01
-    jne short 09161h                          ; 75 f4
+    jne short 091a7h                          ; 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 09176h                               ; e2 fa
+    loop 091bch                               ; 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
@@ -14149,7 +14147,7 @@ ahci_cmd_packet_:                            ; 0xf911d LB 0x18c
     mov ax, word [bp+006h]                    ; 8b 46 06
     mov dx, word [bp+008h]                    ; 8b 56 08
     xor cx, cx                                ; 31 c9
-    call 0a030h                               ; e8 81 0e
+    call 0a070h                               ; e8 7b 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
@@ -14167,7 +14165,7 @@ ahci_cmd_packet_:                            ; 0xf911d LB 0x18c
     xor bh, bh                                ; 30 ff
     mov dx, word [es:si+00232h]               ; 26 8b 94 32 02
     xor ax, ax                                ; 31 c0
-    call 08d9bh                               ; e8 af fb
+    call 08de1h                               ; e8 af fb
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     push ax                                   ; 50
@@ -14175,14 +14173,14 @@ ahci_cmd_packet_:                            ; 0xf911d 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 0a090h                               ; e8 8f 0e
+    call 0a0d0h                               ; e8 89 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 0923fh                           ; 74 27
+    je short 09285h                           ; 74 27
     dec ax                                    ; 48
     mov es, [bp-00ah]                         ; 8e 46 f6
     mov word [es:di+0010ch], ax               ; 26 89 85 0c 01
@@ -14195,7 +14193,7 @@ ahci_cmd_packet_:                            ; 0xf911d LB 0x18c
     mov bx, 000a0h                            ; bb a0 00
     mov ax, si                                ; 89 f0
     mov dx, word [bp-008h]                    ; 8b 56 f8
-    call 089b6h                               ; e8 6c f7
+    call 089fch                               ; 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
@@ -14222,16 +14220,16 @@ ahci_cmd_packet_:                            ; 0xf911d 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 0929eh                          ; 75 05
+    jne short 092e4h                          ; 75 05
     mov ax, strict word 00004h                ; b8 04 00
-    jmp short 092a0h                          ; eb 02
+    jmp short 092e6h                          ; 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_:                    ; 0xf92a9 LB 0x4fe
+ahci_port_detect_device_:                    ; 0xf92ef LB 0x4fe
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -14247,10 +14245,10 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     mov byte [bp-01fh], al                    ; 88 46 e1
     mov bx, word [bp-020h]                    ; 8b 5e e0
     mov ax, si                                ; 89 f0
-    call 08d9bh                               ; e8 ce fa
+    call 08de1h                               ; e8 ce fa
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, strict word 00040h                ; b8 40 00
-    call 0166eh                               ; e8 98 83
+    call 0166eh                               ; e8 52 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
@@ -14322,10 +14320,10 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     push bx                                   ; 53
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
-    call 08823h                               ; e8 9f f4
+    call 08869h                               ; e8 9f f4
     test ax, ax                               ; 85 c0
-    jne short 0938bh                          ; 75 03
-    jmp near 0979fh                           ; e9 14 04
+    jne short 093d1h                          ; 75 03
+    jmp near 097e5h                           ; e9 14 04
     mov al, byte [bp-008h]                    ; 8a 46 f8
     xor ah, ah                                ; 30 e4
     mov CL, strict byte 007h                  ; b1 07
@@ -14357,18 +14355,18 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     mov bx, strict word 0000fh                ; bb 0f 00
     xor cx, cx                                ; 31 c9
     mov ax, di                                ; 89 f8
-    call 08823h                               ; e8 4d f4
+    call 08869h                               ; e8 4d f4
     cmp ax, strict word 00001h                ; 3d 01 00
-    je short 0938bh                           ; 74 b0
+    je short 093d1h                           ; 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 08823h                               ; e8 38 f4
+    call 08869h                               ; e8 38 f4
     cmp ax, strict word 00003h                ; 3d 03 00
-    jne short 09388h                          ; 75 98
+    jne short 093ceh                          ; 75 98
     mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00130h                            ; 05 30 01
     cwd                                       ; 99
@@ -14396,8 +14394,8 @@ ahci_port_detect_device_:                    ; 0xf92a9 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 0943ah                           ; 72 03
-    jmp near 0979fh                           ; e9 65 03
+    jc short 09480h                           ; 72 03
+    jmp near 097e5h                           ; e9 65 03
     mov ax, word [bp-016h]                    ; 8b 46 ea
     add ax, 00118h                            ; 05 18 01
     mov es, [bp-010h]                         ; 8e 46 f0
@@ -14449,9 +14447,9 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     mov cl, byte [bp-00ch]                    ; 8a 4e f4
     add cl, 00ch                              ; 80 c1 0c
     test dx, dx                               ; 85 d2
-    jne short 09505h                          ; 75 55
+    jne short 0954bh                          ; 75 55
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne short 09505h                          ; 75 4f
+    jne short 0954bh                          ; 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
@@ -14466,13 +14464,13 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     mov bx, 000ech                            ; bb ec 00
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov dx, es                                ; 8c c2
-    call 089b6h                               ; e8 c0 f4
+    call 089fch                               ; e8 c0 f4
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 09508h                           ; 74 08
+    je short 0954eh                           ; 74 08
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0950ah                          ; eb 05
-    jmp near 096dah                           ; e9 d2 01
+    jmp short 09550h                          ; eb 05
+    jmp near 09720h                           ; e9 d2 01
     xor ax, ax                                ; 31 c0
     mov cl, al                                ; 88 c1
     mov ax, word [bp-00228h]                  ; 8b 86 d8 fd
@@ -14488,9 +14486,9 @@ ahci_port_detect_device_:                    ; 0xf92a9 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 09559h                          ; 75 1f
+    jne short 0959fh                          ; 75 1f
     cmp word [bp-014h], strict byte 0ffffh    ; 83 7e ec ff
-    jne short 09559h                          ; 75 19
+    jne short 0959fh                          ; 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
@@ -14530,62 +14528,62 @@ ahci_port_detect_device_:                    ; 0xf92a9 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 095d6h                           ; 72 0c
-    jbe short 095deh                          ; 76 12
+    jc short 0961ch                           ; 72 0c
+    jbe short 09624h                          ; 76 12
     cmp AL, strict byte 003h                  ; 3c 03
-    je short 095e6h                           ; 74 16
+    je short 0962ch                           ; 74 16
     cmp AL, strict byte 002h                  ; 3c 02
-    je short 095e2h                           ; 74 0e
-    jmp short 09629h                          ; eb 53
+    je short 09628h                           ; 74 0e
+    jmp short 0966fh                          ; eb 53
     test al, al                               ; 84 c0
-    jne short 09629h                          ; 75 4f
+    jne short 0966fh                          ; 75 4f
     mov DL, strict byte 040h                  ; b2 40
-    jmp short 095e8h                          ; eb 0a
+    jmp short 0962eh                          ; eb 0a
     mov DL, strict byte 048h                  ; b2 48
-    jmp short 095e8h                          ; eb 06
+    jmp short 0962eh                          ; eb 06
     mov DL, strict byte 050h                  ; b2 50
-    jmp short 095e8h                          ; eb 02
+    jmp short 0962eh                          ; 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 ba 80
+    call 016aeh                               ; e8 74 80
     test al, al                               ; 84 c0
-    je short 09629h                           ; 74 31
+    je short 0966fh                           ; 74 31
     mov al, dl                                ; 88 d0
     db  0feh, 0c0h
     ; inc al                                    ; fe c0
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 ad 80
+    call 016aeh                               ; e8 67 80
     mov ch, al                                ; 88 c5
     mov al, dl                                ; 88 d0
     xor ah, ah                                ; 30 e4
-    call 016aeh                               ; e8 a4 80
+    call 016aeh                               ; e8 5e 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 96 80
+    call 016aeh                               ; e8 50 80
     xor ah, ah                                ; 30 e4
     mov word [bp-02ah], ax                    ; 89 46 d6
     mov ax, bx                                ; 89 d8
-    call 016aeh                               ; e8 8c 80
+    call 016aeh                               ; e8 46 80
     xor ah, ah                                ; 30 e4
     mov word [bp-026h], ax                    ; 89 46 da
-    jmp short 0963bh                          ; eb 12
+    jmp short 09681h                          ; 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 05b09h                               ; e8 ce c4
+    call 05b4fh                               ; 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 ed 82
+    call 01933h                               ; e8 a7 82
     push word [bp-012h]                       ; ff 76 ee
     push word [bp-01eh]                       ; ff 76 e2
     push di                                   ; 57
@@ -14608,7 +14606,7 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 fc 82
+    call 01976h                               ; e8 b6 82
     add sp, strict byte 0001ch                ; 83 c4 1c
     mov al, byte [bp-00ah]                    ; 8a 46 f6
     xor ah, ah                                ; 30 e4
@@ -14640,19 +14638,19 @@ ahci_port_detect_device_:                    ; 0xf92a9 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 8a 7f
+    call 01652h                               ; e8 44 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 89 7f
-    jmp near 0978eh                           ; e9 b4 00
+    call 01660h                               ; e8 43 7f
+    jmp near 097d4h                           ; e9 b4 00
     cmp dx, 0eb14h                            ; 81 fa 14 eb
-    jne short 09735h                          ; 75 55
+    jne short 0977bh                          ; 75 55
     cmp bx, 00101h                            ; 81 fb 01 01
-    jne short 09735h                          ; 75 4f
+    jne short 0977bh                          ; 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
@@ -14667,13 +14665,13 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     mov bx, 000a1h                            ; bb a1 00
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov dx, es                                ; 8c c2
-    call 089b6h                               ; e8 90 f2
+    call 089fch                               ; e8 90 f2
     mov byte [bp-00ah], cl                    ; 88 4e f6
     test byte [bp-0022ah], 080h               ; f6 86 d6 fd 80
-    je short 09737h                           ; 74 07
+    je short 0977dh                           ; 74 07
     mov cx, strict word 00001h                ; b9 01 00
-    jmp short 09739h                          ; eb 04
-    jmp short 0978eh                          ; eb 57
+    jmp short 0977fh                          ; eb 04
+    jmp short 097d4h                          ; eb 57
     xor cx, cx                                ; 31 c9
     mov bl, byte [bp-00ch]                    ; 8a 5e f4
     xor bh, bh                                ; 30 ff
@@ -14713,7 +14711,7 @@ ahci_port_detect_device_:                    ; 0xf92a9 LB 0x4fe
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_mem_alloc_:                             ; 0xf97a7 LB 0x43
+ahci_mem_alloc_:                             ; 0xf97ed LB 0x43
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14723,25 +14721,25 @@ ahci_mem_alloc_:                             ; 0xf97a7 LB 0x43
     push di                                   ; 57
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0166eh                               ; e8 b7 7e
+    call 0166eh                               ; e8 71 7e
     test ax, ax                               ; 85 c0
-    je short 097e0h                           ; 74 25
+    je short 09826h                           ; 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 097c3h                               ; e2 fa
+    loop 09809h                               ; 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 097d0h                               ; e2 fa
+    loop 09816h                               ; e2 fa
     mov dx, 00413h                            ; ba 13 04
     xor ax, ax                                ; 31 c0
-    call 0167ch                               ; e8 9e 7e
+    call 0167ch                               ; e8 58 7e
     mov ax, si                                ; 89 f0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14751,7 +14749,7 @@ ahci_mem_alloc_:                             ; 0xf97a7 LB 0x43
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-ahci_hba_init_:                              ; 0xf97ea LB 0x16e
+ahci_hba_init_:                              ; 0xf9830 LB 0x16e
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -14763,7 +14761,7 @@ ahci_hba_init_:                              ; 0xf97ea 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 6e 7e
+    call 0166eh                               ; e8 28 7e
     mov bx, 00122h                            ; bb 22 01
     mov di, ax                                ; 89 c7
     mov ax, strict word 00010h                ; b8 10 00
@@ -14780,11 +14778,11 @@ ahci_hba_init_:                              ; 0xf97ea LB 0x16e
     ; mov dx, ax                                ; 8b d0
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
-    call 097a7h                               ; e8 83 ff
+    call 097edh                               ; e8 83 ff
     mov word [bp-010h], ax                    ; 89 46 f0
     test ax, ax                               ; 85 c0
-    jne short 0982eh                          ; 75 03
-    jmp near 09937h                           ; e9 09 01
+    jne short 09874h                          ; 75 03
+    jmp near 0997dh                           ; 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
@@ -14834,7 +14832,7 @@ ahci_hba_init_:                              ; 0xf97ea LB 0x16e
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test AL, strict byte 001h                 ; a8 01
-    jne short 09888h                          ; 75 de
+    jne short 098ceh                          ; 75 de
     xor ax, ax                                ; 31 c0
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14853,33 +14851,33 @@ ahci_hba_init_:                              ; 0xf97ea LB 0x16e
     push bx                                   ; 53
     mov bx, strict word 0001fh                ; bb 1f 00
     xor cx, cx                                ; 31 c9
-    call 08823h                               ; e8 54 ef
+    call 08869h                               ; 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 098fbh                          ; eb 21
+    jmp short 09941h                          ; eb 21
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 098f2h                           ; 74 12
+    je short 09938h                           ; 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 092a9h                               ; e8 bc f9
+    call 092efh                               ; e8 bc f9
     dec byte [bp-00eh]                        ; fe 4e f2
-    je short 09935h                           ; 74 43
+    je short 0997bh                           ; 74 43
     inc byte [bp-00ch]                        ; fe 46 f4
     cmp byte [bp-00ch], 020h                  ; 80 7e f4 20
-    jnc short 09935h                          ; 73 3a
+    jnc short 0997bh                          ; 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 0990dh                               ; e3 06
+    jcxz 09953h                               ; e3 06
     sal bx, 1                                 ; d1 e3
     rcl di, 1                                 ; d1 d7
-    loop 09907h                               ; e2 fa
+    loop 0994dh                               ; e2 fa
     mov ax, strict word 0000ch                ; b8 0c 00
     xor cx, cx                                ; 31 c9
     mov dx, si                                ; 89 f2
@@ -14895,11 +14893,11 @@ ahci_hba_init_:                              ; 0xf97ea LB 0x16e
     shr eax, 010h                             ; 66 c1 e8 10
     xchg dx, ax                               ; 92
     test dx, di                               ; 85 fa
-    jne short 09931h                          ; 75 04
+    jne short 09977h                          ; 75 04
     test ax, bx                               ; 85 d8
-    je short 098dah                           ; 74 a9
+    je short 09920h                           ; 74 a9
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 098dch                          ; eb a7
+    jmp short 09922h                          ; eb a7
     xor ax, ax                                ; 31 c0
     lea sp, [bp-00ah]                         ; 8d 66 f6
     pop di                                    ; 5f
@@ -14909,29 +14907,29 @@ ahci_hba_init_:                              ; 0xf97ea LB 0x16e
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  00bh, 005h, 004h, 003h, 002h, 001h, 000h, 03dh, 09ah, 01bh, 09ah, 021h, 09ah, 027h, 09ah, 02dh
-    db  09ah, 033h, 09ah, 039h, 09ah, 03dh, 09ah
-_ahci_init:                                  ; 0xf9958 LB 0x11a
+    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
     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 09e91h                               ; e8 29 05
+    call 09ed7h                               ; e8 29 05
     mov dx, ax                                ; 89 c2
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    je short 099b8h                           ; 74 49
+    je short 099feh                           ; 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 09e99h                               ; e8 18 05
+    call 09edfh                               ; e8 18 05
     mov cl, al                                ; 88 c1
     test cl, cl                               ; 84 c9
-    je short 099bbh                           ; 74 34
+    je short 09a01h                           ; 74 34
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
     mov al, byte [bp-008h]                    ; 8a 46 f8
@@ -14942,19 +14940,19 @@ _ahci_init:                                  ; 0xf9958 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 09e99h                               ; e8 f3 04
+    call 09edfh                               ; e8 f3 04
     cmp AL, strict byte 012h                  ; 3c 12
-    je short 099bbh                           ; 74 11
+    je short 09a01h                           ; 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 0997eh                          ; eb c6
-    jmp near 09a6ch                           ; e9 b1 00
+    jmp short 099c4h                          ; eb c6
+    jmp near 09ab2h                           ; e9 b1 00
     test cl, cl                               ; 84 c9
-    je short 099b8h                           ; 74 f9
+    je short 099feh                           ; 74 f9
     add cl, 002h                              ; 80 c1 02
     mov bl, cl                                ; 88 cb
     xor bh, bh                                ; 30 ff
@@ -14966,40 +14964,40 @@ _ahci_init:                                  ; 0xf9958 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 09e99h                               ; e8 b8 04
+    call 09edfh                               ; e8 b8 04
     cmp AL, strict byte 010h                  ; 3c 10
-    jne short 099b8h                          ; 75 d3
+    jne short 099feh                          ; 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 09ec0h                               ; e8 c7 04
+    call 09f06h                               ; 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 09a3dh                         ; 77 37
+    jnbe short 09a83h                         ; 77 37
     push CS                                   ; 0e
     pop ES                                    ; 07
     mov cx, strict word 00008h                ; b9 08 00
-    mov di, 09941h                            ; bf 41 99
+    mov di, 09987h                            ; bf 87 99
     repne scasb                               ; f2 ae
     sal cx, 1                                 ; d1 e1
     mov di, cx                                ; 89 cf
-    mov ax, word [cs:di-066b8h]               ; 2e 8b 85 48 99
+    mov ax, word [cs:di-06672h]               ; 2e 8b 85 8e 99
     jmp ax                                    ; ff e0
     mov byte [bp-004h], 010h                  ; c6 46 fc 10
-    jmp short 09a3dh                          ; eb 1c
+    jmp short 09a83h                          ; eb 1c
     mov byte [bp-004h], 014h                  ; c6 46 fc 14
-    jmp short 09a3dh                          ; eb 16
+    jmp short 09a83h                          ; eb 16
     mov byte [bp-004h], 018h                  ; c6 46 fc 18
-    jmp short 09a3dh                          ; eb 10
+    jmp short 09a83h                          ; eb 10
     mov byte [bp-004h], 01ch                  ; c6 46 fc 1c
-    jmp short 09a3dh                          ; eb 0a
+    jmp short 09a83h                          ; eb 0a
     mov byte [bp-004h], 020h                  ; c6 46 fc 20
-    jmp short 09a3dh                          ; eb 04
+    jmp short 09a83h                          ; eb 04
     mov byte [bp-004h], 024h                  ; c6 46 fc 24
     mov CL, strict byte 004h                  ; b1 04
     mov ax, dx                                ; 89 d0
@@ -15009,55 +15007,64 @@ _ahci_init:                                  ; 0xf9958 LB 0x11a
     sal cx, 1                                 ; d1 e1
     mov al, byte [bp-004h]                    ; 8a 46 fc
     test al, al                               ; 84 c0
-    je short 09a6ch                           ; 74 1c
+    je short 09ab2h                           ; 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 09ee5h                               ; e8 84 04
+    call 09f2bh                               ; e8 84 04
     test AL, strict byte 001h                 ; a8 01
-    je short 09a6ch                           ; 74 07
+    je short 09ab2h                           ; 74 07
     and AL, strict byte 0f0h                  ; 24 f0
     add ax, cx                                ; 01 c8
-    call 097eah                               ; e8 7e fd
+    call 09830h                               ; e8 7e fd
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop di                                    ; 5f
     pop bp                                    ; 5d
     retn                                      ; c3
-apm_out_str_:                                ; 0xf9a72 LB 0x39
+apm_out_str_:                                ; 0xf9ab8 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 09a87h                           ; 74 0a
+    je short 09acdh                           ; 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 09a7fh                          ; 75 f8
+    jne short 09ac5h                          ; 75 f8
     lea sp, [bp-002h]                         ; 8d 66 fe
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    int3                                      ; cc
-    call far 09adeh:09b57h                    ; 9a 57 9b de 9a
-    stc                                       ; f9
-    call far 09b24h:09b57h                    ; 9a 57 9b 24 9b
-    push di                                   ; 57
+    adc bl, byte [bp+di-06463h]               ; 12 9b 9d 9b
+    and AL, strict byte 09bh                  ; 24 9b
+    aas                                       ; 3f
     wait                                      ; 9b
-    pop bp                                    ; 5d
+    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
+    wait                                      ; 9b
+    outsw                                     ; 6f
     wait                                      ; 9b
-    sub word [bp+di-064d7h], bx               ; 29 9b 29 9b
-    sub word [bp+di-06464h], bx               ; 29 9b 9c 9b
-    sub word [bp+di-064d7h], bx               ; 29 9b 29 9b
-    xchg bp, ax                               ; 95
+    db  0dbh
     wait                                      ; 9b
-_apm_function:                               ; 0xf9aab LB 0xf6
+_apm_function:                               ; 0xf9af1 LB 0xf6
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15065,23 +15072,23 @@ _apm_function:                               ; 0xf9aab 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 09b29h                         ; 77 6c
+    jnbe short 09b6fh                         ; 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-06573h]                   ; 2e ff a7 8d 9a
+    jmp word [cs:bx-0652dh]                   ; 2e ff a7 d3 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 09b57h                           ; e9 79 00
+    jmp near 09b9dh                           ; e9 79 00
     mov word [bp+012h], 0f000h                ; c7 46 12 00 f0
-    mov word [bp+00ch], 0a104h                ; c7 46 0c 04 a1
+    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 09b57h                           ; e9 5e 00
+    jmp near 09b9dh                           ; 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
@@ -15094,21 +15101,21 @@ _apm_function:                               ; 0xf9aab LB 0xf6
     sal ebx, 010h                             ; 66 c1 e3 10
     mov si, ax                                ; 89 c6
     sal esi, 010h                             ; 66 c1 e6 10
-    jmp near 09b57h                           ; e9 33 00
+    jmp near 09b9dh                           ; e9 33 00
     sti                                       ; fb
     hlt                                       ; f4
-    jmp near 09b57h                           ; e9 2e 00
+    jmp near 09b9dh                           ; 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 ff 7d
+    call 01933h                               ; e8 b9 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 31 7e
+    call 01976h                               ; e8 eb 7d
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+012h]                    ; 8b 46 12
     xor ah, ah                                ; 30 e4
@@ -15120,30 +15127,30 @@ _apm_function:                               ; 0xf9aab LB 0xf6
     pop bp                                    ; 5d
     retn                                      ; c3
     cmp word [bp+010h], strict byte 00003h    ; 83 7e 10 03
-    je short 09b82h                           ; 74 1f
+    je short 09bc8h                           ; 74 1f
     cmp word [bp+010h], strict byte 00002h    ; 83 7e 10 02
-    je short 09b7ah                           ; 74 11
+    je short 09bc0h                           ; 74 11
     cmp word [bp+010h], strict byte 00001h    ; 83 7e 10 01
-    jne short 09b8ah                          ; 75 1b
+    jne short 09bd0h                          ; 75 1b
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d10h                            ; b8 10 0d
-    call 09a72h                               ; e8 fa fe
-    jmp short 09b57h                          ; eb dd
+    call 09ab8h                               ; e8 fa fe
+    jmp short 09b9dh                          ; eb dd
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d18h                            ; b8 18 0d
-    jmp short 09b75h                          ; eb f3
+    jmp short 09bbbh                          ; eb f3
     mov dx, 08900h                            ; ba 00 89
     mov ax, 00d20h                            ; b8 20 0d
-    jmp short 09b75h                          ; eb eb
+    jmp short 09bbbh                          ; 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 09b57h                          ; eb c2
+    jmp short 09b9dh                          ; eb c2
     mov word [bp+012h], 00102h                ; c7 46 12 02 01
-    jmp short 09b57h                          ; eb bb
+    jmp short 09b9dh                          ; eb bb
     or ah, 080h                               ; 80 cc 80
-    jmp short 09b8dh                          ; eb ec
-pci16_select_reg_:                           ; 0xf9ba1 LB 0x24
+    jmp short 09bd3h                          ; eb ec
+pci16_select_reg_:                           ; 0xf9be7 LB 0x24
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
@@ -15160,7 +15167,7 @@ pci16_select_reg_:                           ; 0xf9ba1 LB 0x24
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-pci16_find_device_:                          ; 0xf9bc5 LB 0xf7
+pci16_find_device_:                          ; 0xf9c0b LB 0xf7
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15174,49 +15181,49 @@ pci16_find_device_:                          ; 0xf9bc5 LB 0xf7
     xor bx, bx                                ; 31 db
     mov byte [bp-006h], 000h                  ; c6 46 fa 00
     test bl, 007h                             ; f6 c3 07
-    jne short 09c0dh                          ; 75 2d
+    jne short 09c53h                          ; 75 2d
     mov dx, strict word 0000eh                ; ba 0e 00
     mov ax, bx                                ; 89 d8
-    call 09ba1h                               ; e8 b9 ff
+    call 09be7h                               ; 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 09bfbh                          ; 75 06
+    jne short 09c41h                          ; 75 06
     add bx, strict byte 00008h                ; 83 c3 08
-    jmp near 09c8dh                           ; e9 92 00
+    jmp near 09cd3h                           ; e9 92 00
     test byte [bp-008h], 080h                 ; f6 46 f8 80
-    je short 09c08h                           ; 74 07
+    je short 09c4eh                           ; 74 07
     mov word [bp-00eh], strict word 00001h    ; c7 46 f2 01 00
-    jmp short 09c0dh                          ; eb 05
+    jmp short 09c53h                          ; 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 09c34h                          ; 75 1e
+    jne short 09c7ah                          ; 75 1e
     mov al, bh                                ; 88 f8
     xor ah, ah                                ; 30 e4
     test ax, ax                               ; 85 c0
-    jne short 09c34h                          ; 75 16
+    jne short 09c7ah                          ; 75 16
     mov dx, strict word 0001ah                ; ba 1a 00
     mov ax, bx                                ; 89 d8
-    call 09ba1h                               ; e8 7b ff
+    call 09be7h                               ; 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 09c34h                          ; 76 03
+    jbe short 09c7ah                          ; 76 03
     mov byte [bp-006h], al                    ; 88 46 fa
     test di, di                               ; 85 ff
-    je short 09c3dh                           ; 74 05
+    je short 09c83h                           ; 74 05
     mov dx, strict word 00008h                ; ba 08 00
-    jmp short 09c3fh                          ; eb 02
+    jmp short 09c85h                          ; eb 02
     xor dx, dx                                ; 31 d2
     mov ax, bx                                ; 89 d8
-    call 09ba1h                               ; e8 5d ff
+    call 09be7h                               ; e8 5d ff
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -15227,51 +15234,51 @@ pci16_find_device_:                          ; 0xf9bc5 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 09c6eh                           ; 74 0f
+    je short 09cb4h                           ; 74 0f
     mov cx, strict word 00008h                ; b9 08 00
     shr dx, 1                                 ; d1 ea
     rcr ax, 1                                 ; d1 d8
-    loop 09c62h                               ; e2 fa
+    loop 09ca8h                               ; 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 09c7eh                          ; 75 08
+    jne short 09cc4h                          ; 75 08
     mov ax, word [bp-00ah]                    ; 8b 46 f6
     cmp ax, word [bp-012h]                    ; 3b 46 ee
-    je short 09c84h                           ; 74 06
+    je short 09ccah                           ; 74 06
     cmp word [bp-00ch], strict byte 00000h    ; 83 7e f4 00
-    je short 09c8ah                           ; 74 06
+    je short 09cd0h                           ; 74 06
     dec si                                    ; 4e
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    je short 09c9dh                           ; 74 13
+    je short 09ce3h                           ; 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 09c9dh                         ; 77 03
-    jmp near 09bdbh                           ; e9 3e ff
+    jnbe short 09ce3h                         ; 77 03
+    jmp near 09c21h                           ; e9 3e ff
     cmp si, strict byte 0ffffh                ; 83 fe ff
-    jne short 09ca6h                          ; 75 04
+    jne short 09cech                          ; 75 04
     mov ax, bx                                ; 89 d8
-    jmp short 09ca9h                          ; eb 03
+    jmp short 09cefh                          ; 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
     popfw                                     ; 9d
-    popfw                                     ; 9d
-    mov DH, strict byte 09dh                  ; b6 9d
-    enter 0dc9dh, 09dh                        ; c8 9d dc 9d
-    out DX, AL                                ; ee
-    popfw                                     ; 9d
-    db  001h
+    push CS                                   ; 0e
+    sahf                                      ; 9e
+    and bl, byte [bp-061cch]                  ; 22 9e 34 9e
+    inc di                                    ; 47
     sahf                                      ; 9e
-_pci16_function:                             ; 0xf9cbc LB 0x1d5
+_pci16_function:                             ; 0xf9d02 LB 0x1d5
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15285,73 +15292,73 @@ _pci16_function:                             ; 0xf9cbc 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 09ceeh                           ; 72 13
-    jbe short 09d41h                          ; 76 64
+    jc short 09d34h                           ; 72 13
+    jbe short 09d87h                          ; 76 64
     cmp bx, strict byte 0000eh                ; 83 fb 0e
-    je short 09d49h                           ; 74 67
+    je short 09d8fh                           ; 74 67
     cmp bx, strict byte 00008h                ; 83 fb 08
-    jc short 09cf8h                           ; 72 11
+    jc short 09d3eh                           ; 72 11
     cmp bx, strict byte 0000dh                ; 83 fb 0d
-    jbe short 09d4ch                          ; 76 60
-    jmp short 09cf8h                          ; eb 0a
+    jbe short 09d92h                          ; 76 60
+    jmp short 09d3eh                          ; eb 0a
     cmp bx, strict byte 00002h                ; 83 fb 02
-    je short 09d17h                           ; 74 24
+    je short 09d5dh                           ; 74 24
     cmp bx, strict byte 00001h                ; 83 fb 01
-    je short 09cfbh                           ; 74 03
-    jmp near 09e5ah                           ; e9 5f 01
+    je short 09d41h                           ; 74 03
+    jmp near 09ea0h                           ; 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 09e8ah                           ; e9 73 01
+    jmp near 09ed0h                           ; e9 73 01
     cmp word [bp+018h], strict byte 0ffffh    ; 83 7e 18 ff
-    jne short 09d23h                          ; 75 06
+    jne short 09d69h                          ; 75 06
     or ah, 083h                               ; 80 cc 83
-    jmp near 09e83h                           ; e9 60 01
+    jmp near 09ec9h                           ; 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 09bc5h                               ; e8 94 fe
+    call 09c0bh                               ; e8 94 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09d43h                          ; 75 0d
+    jne short 09d89h                          ; 75 0d
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09e83h                           ; e9 42 01
-    jmp short 09d4eh                          ; eb 0b
+    jmp near 09ec9h                           ; e9 42 01
+    jmp short 09d94h                          ; eb 0b
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09e8ah                           ; e9 41 01
-    jmp near 09e15h                           ; e9 c9 00
-    jmp short 09d73h                          ; eb 25
+    jmp near 09ed0h                           ; e9 41 01
+    jmp near 09e5bh                           ; e9 c9 00
+    jmp short 09db9h                          ; 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 09bc5h                               ; e8 68 fe
+    call 09c0bh                               ; e8 68 fe
     cmp ax, strict word 0ffffh                ; 3d ff ff
-    jne short 09d6dh                          ; 75 0b
+    jne short 09db3h                          ; 75 0b
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
     or ah, 086h                               ; 80 cc 86
-    jmp near 09e83h                           ; e9 16 01
+    jmp near 09ec9h                           ; e9 16 01
     mov word [bp+014h], ax                    ; 89 46 14
-    jmp near 09e8ah                           ; e9 17 01
+    jmp near 09ed0h                           ; e9 17 01
     cmp word [bp+004h], 00100h                ; 81 7e 04 00 01
-    jc short 09d80h                           ; 72 06
+    jc short 09dc6h                           ; 72 06
     or ah, 087h                               ; 80 cc 87
-    jmp near 09e83h                           ; e9 03 01
+    jmp near 09ec9h                           ; e9 03 01
     mov dx, word [bp+004h]                    ; 8b 56 04
     mov ax, word [bp+014h]                    ; 8b 46 14
-    call 09ba1h                               ; e8 18 fe
+    call 09be7h                               ; 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 09dfeh                         ; 77 68
+    jnbe short 09e44h                         ; 77 68
     sal bx, 1                                 ; d1 e3
-    jmp word [cs:bx-06350h]                   ; 2e ff a7 b0 9c
+    jmp word [cs:bx-0630ah]                   ; 2e ff a7 f6 9c
     mov bx, word [bp+01ch]                    ; 8b 5e 1c
     xor bl, bl                                ; 30 db
     mov dx, word [bp+004h]                    ; 8b 56 04
@@ -15362,14 +15369,14 @@ _pci16_function:                             ; 0xf9cbc LB 0x1d5
     ; sub ah, ah                                ; 2a e4
     or bx, ax                                 ; 09 c3
     mov word [bp+01ch], bx                    ; 89 5e 1c
-    jmp short 09dfeh                          ; eb 48
+    jmp short 09e44h                          ; 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 09dfeh                          ; eb 36
+    jmp short 09e44h                          ; eb 36
     mov dx, 00cfch                            ; ba fc 0c
     in eax, DX                                ; 66 ed
     db  08bh, 0d0h
@@ -15378,21 +15385,21 @@ _pci16_function:                             ; 0xf9cbc LB 0x1d5
     xchg dx, ax                               ; 92
     mov word [bp+01ch], ax                    ; 89 46 1c
     mov word [bp+01eh], dx                    ; 89 56 1e
-    jmp short 09dfeh                          ; eb 22
+    jmp short 09e44h                          ; 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 09dfeh                          ; eb 10
+    jmp short 09e44h                          ; 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 09e8ah                           ; e9 89 00
+    jmp near 09ed0h                           ; 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
@@ -15401,20 +15408,20 @@ _pci16_function:                             ; 0xf9cbc LB 0x1d5
     db  08bh, 0c1h
     ; mov ax, cx                                ; 8b c1
     out DX, eax                               ; 66 ef
-    jmp short 09e8ah                          ; eb 75
+    jmp short 09ed0h                          ; 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 09e3bh                          ; 76 11
+    jbe short 09e81h                          ; 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 09e4fh                          ; eb 14
+    jmp short 09e95h                          ; eb 14
     les di, [es:bx+002h]                      ; 26 c4 7f 02
     mov si, 0f2c0h                            ; be c0 f2
     mov dx, ds                                ; 8c da
@@ -15426,11 +15433,11 @@ _pci16_function:                             ; 0xf9cbc 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 09e8ah                          ; eb 30
+    jmp short 09ed0h                          ; eb 30
     mov bx, 00da0h                            ; bb a0 0d
     mov cx, ds                                ; 8c d9
     mov ax, strict word 00004h                ; b8 04 00
-    call 01933h                               ; e8 ce 7a
+    call 01933h                               ; e8 88 7a
     mov ax, word [bp+014h]                    ; 8b 46 14
     push ax                                   ; 50
     mov ax, word [bp+020h]                    ; 8b 46 20
@@ -15439,7 +15446,7 @@ _pci16_function:                             ; 0xf9cbc LB 0x1d5
     push ax                                   ; 50
     mov ax, strict word 00004h                ; b8 04 00
     push ax                                   ; 50
-    call 01976h                               ; e8 fe 7a
+    call 01976h                               ; e8 b8 7a
     add sp, strict byte 00008h                ; 83 c4 08
     mov ax, word [bp+020h]                    ; 8b 46 20
     xor ah, ah                                ; 30 e4
@@ -15451,13 +15458,13 @@ _pci16_function:                             ; 0xf9cbc LB 0x1d5
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_find_classcode_:                         ; 0xf9e91 LB 0x8
+pci_find_classcode_:                         ; 0xf9ed7 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_:                       ; 0xf9e99 LB 0x27
+pci_read_config_byte_:                       ; 0xf9edf LB 0x27
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15480,7 +15487,7 @@ pci_read_config_byte_:                       ; 0xf9e99 LB 0x27
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_word_:                       ; 0xf9ec0 LB 0x25
+pci_read_config_word_:                       ; 0xf9f06 LB 0x25
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15502,7 +15509,7 @@ pci_read_config_word_:                       ; 0xf9ec0 LB 0x25
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-pci_read_config_dword_:                      ; 0xf9ee5 LB 0x3f
+pci_read_config_dword_:                      ; 0xf9f2b LB 0x3f
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push cx                                   ; 51
@@ -15517,7 +15524,7 @@ pci_read_config_dword_:                      ; 0xf9ee5 LB 0x3f
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    jne short 09f15h                          ; 75 14
+    jne short 09f5bh                          ; 75 14
     mov al, byte [bp-006h]                    ; 8a 46 fa
     xor ah, ah                                ; 30 e4
     mov di, ax                                ; 89 c7
@@ -15527,9 +15534,9 @@ pci_read_config_dword_:                      ; 0xf9ee5 LB 0x3f
     mov ax, 0b109h                            ; b8 09 b1
     int 01ah                                  ; cd 1a
     test cx, cx                               ; 85 c9
-    je short 09f1ah                           ; 74 05
+    je short 09f60h                           ; 74 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 09f1ch                          ; eb 02
+    jmp short 09f62h                          ; eb 02
     xor ax, ax                                ; 31 c0
     cwd                                       ; 99
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -15537,7 +15544,7 @@ pci_read_config_dword_:                      ; 0xf9ee5 LB 0x3f
     pop cx                                    ; 59
     pop bp                                    ; 5d
     retn                                      ; c3
-vds_is_present_:                             ; 0xf9f24 LB 0x1d
+vds_is_present_:                             ; 0xf9f6a LB 0x1d
     push bx                                   ; 53
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
@@ -15545,7 +15552,7 @@ vds_is_present_:                             ; 0xf9f24 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 09f3ch                           ; 74 06
+    je short 09f82h                           ; 74 06
     mov ax, strict word 00001h                ; b8 01 00
     pop bp                                    ; 5d
     pop bx                                    ; 5b
@@ -15554,7 +15561,7 @@ vds_is_present_:                             ; 0xf9f24 LB 0x1d
     pop bp                                    ; 5d
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_real_to_lin_:                            ; 0xf9f41 LB 0x1e
+vds_real_to_lin_:                            ; 0xf9f87 LB 0x1e
     push bx                                   ; 53
     push cx                                   ; 51
     push bp                                   ; 55
@@ -15565,7 +15572,7 @@ vds_real_to_lin_:                            ; 0xf9f41 LB 0x1e
     mov cx, strict word 00004h                ; b9 04 00
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 09f4fh                               ; e2 fa
+    loop 09f95h                               ; e2 fa
     xor cx, cx                                ; 31 c9
     add ax, bx                                ; 01 d8
     adc dx, cx                                ; 11 ca
@@ -15573,7 +15580,7 @@ vds_real_to_lin_:                            ; 0xf9f41 LB 0x1e
     pop cx                                    ; 59
     pop bx                                    ; 5b
     retn                                      ; c3
-vds_build_sg_list_:                          ; 0xf9f5f LB 0x77
+vds_build_sg_list_:                          ; 0xf9fa5 LB 0x77
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15587,23 +15594,23 @@ vds_build_sg_list_:                          ; 0xf9f5f 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 09f41h                               ; e8 c3 ff
+    call 09f87h                               ; 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 09f24h                               ; e8 93 ff
+    call 09f6ah                               ; e8 93 ff
     test ax, ax                               ; 85 c0
-    je short 09fa6h                           ; 74 11
+    je short 09fech                           ; 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 09fa3h                           ; 72 02
+    jc short 09fe9h                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
-    jmp short 09fcdh                          ; eb 27
+    jmp short 0a013h                          ; 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
@@ -15620,21 +15627,21 @@ vds_build_sg_list_:                          ; 0xf9f5f LB 0x77
     pop si                                    ; 5e
     pop bp                                    ; 5d
     retn 00004h                               ; c2 04 00
-vds_free_sg_list_:                           ; 0xf9fd6 LB 0x3a
+vds_free_sg_list_:                           ; 0xfa01c LB 0x34
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push bx                                   ; 53
     push di                                   ; 57
     mov bx, ax                                ; 89 c3
-    call 09f24h                               ; e8 44 ff
+    call 09f6ah                               ; e8 44 ff
     test ax, ax                               ; 85 c0
-    je short 09ff5h                           ; 74 11
+    je short 0a03bh                           ; 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 09ff4h                           ; 72 02
+    jc short 0a03ah                           ; 72 02
     db  032h, 0c0h
     ; xor al, al                                ; 32 c0
     cbw                                       ; 98
@@ -15645,8 +15652,8 @@ vds_free_sg_list_:                           ; 0xf9fd6 LB 0x3a
     pop bx                                    ; 5b
     pop bp                                    ; 5d
     retn                                      ; c3
-    times 0xc db 0
-__U4M:                                       ; 0xfa010 LB 0x20
+    times 0x6 db 0
+__U4M:                                       ; 0xfa050 LB 0x20
     pushfw                                    ; 9c
     push si                                   ; 56
     push di                                   ; 57
@@ -15673,7 +15680,7 @@ __U4M:                                       ; 0xfa010 LB 0x20
     popfw                                     ; 9d
     retn                                      ; c3
     times 0x4 db 0
-__U4D:                                       ; 0xfa030 LB 0x30
+__U4D:                                       ; 0xfa070 LB 0x30
     pushfw                                    ; 9c
     push DS                                   ; 1e
     push ES                                   ; 06
@@ -15688,7 +15695,7 @@ __U4D:                                       ; 0xfa030 LB 0x30
     push bx                                   ; 53
     push dx                                   ; 52
     push ax                                   ; 50
-    call 0a115h                               ; e8 d0 00
+    call 0a155h                               ; e8 d0 00
     mov cx, word [bp-002h]                    ; 8b 4e fe
     mov bx, word [bp-004h]                    ; 8b 5e fc
     db  08bh, 0e5h
@@ -15699,27 +15706,27 @@ __U4D:                                       ; 0xfa030 LB 0x30
     popfw                                     ; 9d
     retn                                      ; c3
     times 0xe db 0
-__U8RS:                                      ; 0xfa060 LB 0x10
+__U8RS:                                      ; 0xfa0a0 LB 0x10
     test si, si                               ; 85 f6
-    je short 0a06fh                           ; 74 0b
+    je short 0a0afh                           ; 74 0b
     shr ax, 1                                 ; d1 e8
     rcr bx, 1                                 ; d1 db
     rcr cx, 1                                 ; d1 d9
     rcr dx, 1                                 ; d1 da
     dec si                                    ; 4e
-    jne short 0a064h                          ; 75 f5
+    jne short 0a0a4h                          ; 75 f5
     retn                                      ; c3
-__U8LS:                                      ; 0xfa070 LB 0x10
+__U8LS:                                      ; 0xfa0b0 LB 0x10
     test si, si                               ; 85 f6
-    je short 0a07fh                           ; 74 0b
+    je short 0a0bfh                           ; 74 0b
     sal dx, 1                                 ; d1 e2
     rcl cx, 1                                 ; d1 d1
     rcl bx, 1                                 ; d1 d3
     rcl ax, 1                                 ; d1 d0
     dec si                                    ; 4e
-    jne short 0a074h                          ; 75 f5
+    jne short 0a0b4h                          ; 75 f5
     retn                                      ; c3
-_fmemset_:                                   ; 0xfa080 LB 0x10
+_fmemset_:                                   ; 0xfa0c0 LB 0x10
     push di                                   ; 57
     mov es, dx                                ; 8e c2
     db  08bh, 0f8h
@@ -15730,7 +15737,7 @@ _fmemset_:                                   ; 0xfa080 LB 0x10
     pop di                                    ; 5f
     retn                                      ; c3
     times 0x3 db 0
-_fmemcpy_:                                   ; 0xfa090 LB 0x3a
+_fmemcpy_:                                   ; 0xfa0d0 LB 0x3a
     push bp                                   ; 55
     db  08bh, 0ech
     ; mov bp, sp                                ; 8b ec
@@ -15752,9 +15759,18 @@ _fmemcpy_:                                   ; 0xfa090 LB 0x3a
     ; mov sp, bp                                ; 8b e5
     pop bp                                    ; 5d
     retn                                      ; c3
-    db  000h, 000h, 000h, 000h, 000h, 000h, 0e0h, 0a0h, 0e2h, 0a0h, 0e6h, 0a0h, 0e6h, 0a0h, 0e6h, 0a0h
-    db  0e8h, 0a0h, 0e8h, 0a0h, 0eah, 0a0h, 0eeh, 0a0h, 0eeh, 0a0h, 0f0h, 0a0h, 0f5h, 0a0h, 0f7h, 0a0h
-apm_worker:                                  ; 0xfa0ca LB 0x3a
+    add byte [bx+si], al                      ; 00 00
+    add byte [bx+si], al                      ; 00 00
+    add byte [bx+si], al                      ; 00 00
+    and byte [bx+di-05edeh], ah               ; 20 a1 22 a1
+    mov ax, word [es:0a126h]                  ; 26 a1 26 a1
+    mov ax, word [es:0a128h]                  ; 26 a1 28 a1
+    sub byte [bx+di-05ed6h], ah               ; 28 a1 2a a1
+    mov ax, word [cs:0a12eh]                  ; 2e a1 2e a1
+    xor byte [bx+di-05ecbh], ah               ; 30 a1 35 a1
+    aaa                                       ; 37
+    db  0a1h
+apm_worker:                                  ; 0xfa10a LB 0x3a
     sti                                       ; fb
     push ax                                   ; 50
     db  032h, 0e4h
@@ -15766,29 +15782,29 @@ apm_worker:                                  ; 0xfa0ca LB 0x3a
     cmp AL, strict byte 00dh                  ; 3c 0d
     pop ax                                    ; 58
     mov AH, strict byte 053h                  ; b4 53
-    jnc short 0a100h                          ; 73 25
-    jmp word [cs:bp-05f50h]                   ; 2e ff a6 b0 a0
-    jmp short 0a0feh                          ; eb 1c
+    jnc short 0a140h                          ; 73 25
+    jmp word [cs:bp-05f10h]                   ; 2e ff a6 f0 a0
+    jmp short 0a13eh                          ; eb 1c
     sti                                       ; fb
     hlt                                       ; f4
-    jmp short 0a0feh                          ; eb 18
-    jmp short 0a0feh                          ; eb 16
-    jmp short 0a100h                          ; eb 16
+    jmp short 0a13eh                          ; eb 18
+    jmp short 0a13eh                          ; eb 16
+    jmp short 0a140h                          ; eb 16
     mov AH, strict byte 080h                  ; b4 80
-    jmp short 0a102h                          ; eb 14
-    jmp short 0a100h                          ; eb 10
+    jmp short 0a142h                          ; eb 14
+    jmp short 0a140h                          ; eb 10
     mov ax, 00102h                            ; b8 02 01
-    jmp short 0a0feh                          ; eb 09
-    jmp short 0a0feh                          ; eb 07
+    jmp short 0a13eh                          ; eb 09
+    jmp short 0a13eh                          ; eb 07
     mov BL, strict byte 000h                  ; b3 00
     mov cx, strict word 00000h                ; b9 00 00
-    jmp short 0a0feh                          ; eb 00
+    jmp short 0a13eh                          ; eb 00
     clc                                       ; f8
     retn                                      ; c3
     mov AH, strict byte 009h                  ; b4 09
     stc                                       ; f9
     retn                                      ; c3
-apm_pm16_entry:                              ; 0xfa104 LB 0x11
+apm_pm16_entry:                              ; 0xfa144 LB 0x11
     mov AH, strict byte 002h                  ; b4 02
     push DS                                   ; 1e
     push bp                                   ; 55
@@ -15796,11 +15812,11 @@ apm_pm16_entry:                              ; 0xfa104 LB 0x11
     pop bp                                    ; 5d
     add bp, strict byte 00008h                ; 83 c5 08
     mov ds, bp                                ; 8e dd
-    call 0a0cah                               ; e8 b8 ff
+    call 0a10ah                               ; e8 b8 ff
     pop bp                                    ; 5d
     pop DS                                    ; 1f
     retf                                      ; cb
-_DoUInt32Div:                                ; 0xfa115 LB 0x26b
+_DoUInt32Div:                                ; 0xfa155 LB 0x26b
     push bp                                   ; 55
     mov bp, sp                                ; 89 e5
     push si                                   ; 56
@@ -15818,12 +15834,12 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     mov si, bx                                ; 89 de
     mov [bp-006h], ds                         ; 8c 5e fa
     cmp word [bx+002h], strict byte 00000h    ; 83 7f 02 00
-    jne short 0a165h                          ; 75 22
+    jne short 0a1a5h                          ; 75 22
     mov ax, word [bx]                         ; 8b 07
     test ax, ax                               ; 85 c0
-    je short 0a162h                           ; 74 19
+    je short 0a1a2h                           ; 74 19
     cmp ax, strict word 00001h                ; 3d 01 00
-    jne short 0a165h                          ; 75 17
+    jne short 0a1a5h                          ; 75 17
     xor ax, ax                                ; 31 c0
     mov word [bp+00ah], ax                    ; 89 46 0a
     mov word [bp+008h], ax                    ; 89 46 08
@@ -15831,37 +15847,37 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     mov word [bp+004h], ax                    ; 89 46 04
     mov ax, word [bp-01ah]                    ; 8b 46 e6
     mov word [bp+006h], ax                    ; 89 46 06
-    jmp near 0a36dh                           ; e9 08 02
+    jmp near 0a3adh                           ; e9 08 02
     lds bx, [bp-00ch]                         ; c5 5e f4
     mov ax, word [bx+002h]                    ; 8b 47 02
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    je short 0a18bh                           ; 74 18
+    je short 0a1cbh                           ; 74 18
     mov ds, [bp-00ah]                         ; 8e 5e f6
     mov ax, word [bx+002h]                    ; 8b 47 02
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    jbe short 0a186h                          ; 76 05
+    jbe short 0a1c6h                          ; 76 05
     mov ax, strict word 00001h                ; b8 01 00
-    jmp short 0a1ach                          ; eb 26
+    jmp short 0a1ech                          ; eb 26
     mov ax, strict word 0ffffh                ; b8 ff ff
-    jmp short 0a1ach                          ; eb 21
+    jmp short 0a1ech                          ; eb 21
     mov ds, [bp-00ah]                         ; 8e 5e f6
     mov ax, word [bx]                         ; 8b 07
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si]                         ; 3b 04
-    je short 0a1aah                           ; 74 13
+    je short 0a1eah                           ; 74 13
     mov ds, [bp-00ah]                         ; 8e 5e f6
     mov ax, word [bx]                         ; 8b 07
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si]                         ; 3b 04
-    jbe short 0a1a5h                          ; 76 02
-    jmp short 0a181h                          ; eb dc
+    jbe short 0a1e5h                          ; 76 02
+    jmp short 0a1c1h                          ; eb dc
     mov ax, strict word 0ffffh                ; b8 ff ff
-    jmp short 0a1ach                          ; eb 02
+    jmp short 0a1ech                          ; eb 02
     xor ax, ax                                ; 31 c0
     test ax, ax                               ; 85 c0
-    jnl short 0a1ceh                          ; 7d 1e
+    jnl short 0a20eh                          ; 7d 1e
     lds bx, [bp-00ch]                         ; c5 5e f4
     mov ax, word [bx]                         ; 8b 07
     mov dx, word [bx+002h]                    ; 8b 57 02
@@ -15871,47 +15887,47 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     lds bx, [bp-010h]                         ; c5 5e f0
     mov word [bx+002h], strict word 00000h    ; c7 47 02 00 00
     mov word [bx], strict word 00000h         ; c7 07 00 00
-    jmp short 0a162h                          ; eb 94
-    jne short 0a1e5h                          ; 75 15
+    jmp short 0a1a2h                          ; eb 94
+    jne short 0a225h                          ; 75 15
     mov ds, [bp-008h]                         ; 8e 5e f8
     mov word [di+002h], ax                    ; 89 45 02
     mov word [di], ax                         ; 89 05
     lds bx, [bp-010h]                         ; c5 5e f0
     mov word [bx], strict word 00001h         ; c7 07 01 00
     mov word [bx+002h], ax                    ; 89 47 02
-    jmp near 0a36dh                           ; e9 88 01
+    jmp near 0a3adh                           ; e9 88 01
     lds bx, [bp-00ch]                         ; c5 5e f4
     mov ax, word [bx+002h]                    ; 8b 47 02
     test ax, ax                               ; 85 c0
-    je short 0a200h                           ; 74 11
+    je short 0a240h                           ; 74 11
     push ax                                   ; 50
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a380h                               ; e8 88 01
+    call 0a3c0h                               ; e8 88 01
     add sp, strict byte 00002h                ; 83 c4 02
     add ax, strict word 00010h                ; 05 10 00
-    jmp short 0a20dh                          ; eb 0d
+    jmp short 0a24dh                          ; eb 0d
     push word [bx]                            ; ff 37
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a380h                               ; e8 76 01
+    call 0a3c0h                               ; e8 76 01
     add sp, strict byte 00002h                ; 83 c4 02
     mov word [bp-014h], ax                    ; 89 46 ec
     mov ds, [bp-006h]                         ; 8e 5e fa
     mov ax, word [si+002h]                    ; 8b 44 02
     test ax, ax                               ; 85 c0
-    je short 0a22bh                           ; 74 11
+    je short 0a26bh                           ; 74 11
     push ax                                   ; 50
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a380h                               ; e8 5d 01
+    call 0a3c0h                               ; e8 5d 01
     add sp, strict byte 00002h                ; 83 c4 02
     add ax, strict word 00010h                ; 05 10 00
-    jmp short 0a238h                          ; eb 0d
+    jmp short 0a278h                          ; eb 0d
     push word [si]                            ; ff 34
     mov ax, 0f000h                            ; b8 00 f0
     mov ds, ax                                ; 8e d8
-    call 0a380h                               ; e8 4b 01
+    call 0a3c0h                               ; e8 4b 01
     add sp, strict byte 00002h                ; 83 c4 02
     mov dx, word [bp-014h]                    ; 8b 56 ec
     sub dx, ax                                ; 29 c2
@@ -15922,42 +15938,42 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     mov ax, word [si+002h]                    ; 8b 44 02
     mov word [bp-016h], ax                    ; 89 46 ea
     test dx, dx                               ; 85 d2
-    je short 0a2a8h                           ; 74 56
+    je short 0a2e8h                           ; 74 56
     mov cx, dx                                ; 89 d1
     xor ch, dh                                ; 30 f5
     and cl, 01fh                              ; 80 e1 1f
     mov ax, word [si]                         ; 8b 04
     mov dx, word [si+002h]                    ; 8b 54 02
-    jcxz 0a266h                               ; e3 06
+    jcxz 0a2a6h                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0a260h                               ; e2 fa
+    loop 0a2a0h                               ; e2 fa
     mov word [bp-018h], ax                    ; 89 46 e8
     mov word [bp-016h], dx                    ; 89 56 ea
     mov ax, word [bp-016h]                    ; 8b 46 ea
     lds bx, [bp-00ch]                         ; c5 5e f4
     cmp ax, word [bx+002h]                    ; 3b 47 02
-    jnbe short 0a286h                         ; 77 0f
+    jnbe short 0a2c6h                         ; 77 0f
     mov ax, word [bp-016h]                    ; 8b 46 ea
     cmp ax, word [bx+002h]                    ; 3b 47 02
-    jne short 0a28ah                          ; 75 0b
+    jne short 0a2cah                          ; 75 0b
     mov ax, word [bp-018h]                    ; 8b 46 e8
     cmp ax, word [bx]                         ; 3b 07
-    jbe short 0a28ah                          ; 76 04
+    jbe short 0a2cah                          ; 76 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a28ch                          ; eb 02
+    jmp short 0a2cch                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a2b3h                           ; 74 23
+    je short 0a2f3h                           ; 74 23
     shr word [bp-016h], 1                     ; d1 6e ea
     rcr word [bp-018h], 1                     ; d1 5e e8
     dec word [bp-012h]                        ; ff 4e ee
-    jmp short 0a2b3h                          ; eb 18
+    jmp short 0a2f3h                          ; eb 18
     mov cx, strict word 0001fh                ; b9 1f 00
     sal word [bp-018h], 1                     ; d1 66 e8
     rcl word [bp-016h], 1                     ; d1 56 ea
-    loop 0a29eh                               ; e2 f8
-    jmp short 0a296h                          ; eb ee
+    loop 0a2deh                               ; e2 f8
+    jmp short 0a2d6h                          ; eb ee
     mov ax, word [si]                         ; 8b 04
     mov word [bp-018h], ax                    ; 89 46 e8
     mov ax, word [si+002h]                    ; 8b 44 02
@@ -15974,29 +15990,29 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     mov dx, word [di]                         ; 8b 15
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    jnbe short 0a2dfh                         ; 77 06
-    jne short 0a2e3h                          ; 75 08
+    jnbe short 0a31fh                         ; 77 06
+    jne short 0a323h                          ; 75 08
     cmp dx, word [si]                         ; 3b 14
-    jc short 0a2e3h                           ; 72 04
+    jc short 0a323h                           ; 72 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a2e5h                          ; eb 02
+    jmp short 0a325h                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a34ah                           ; 74 61
+    je short 0a38ah                           ; 74 61
     mov ds, [bp-008h]                         ; 8e 5e f8
     mov ax, word [di+002h]                    ; 8b 45 02
     cmp ax, word [bp-016h]                    ; 3b 46 ea
-    jnbe short 0a300h                         ; 77 0c
+    jnbe short 0a340h                         ; 77 0c
     cmp ax, word [bp-016h]                    ; 3b 46 ea
-    jne short 0a304h                          ; 75 0b
+    jne short 0a344h                          ; 75 0b
     mov ax, word [di]                         ; 8b 05
     cmp ax, word [bp-018h]                    ; 3b 46 e8
-    jc short 0a304h                           ; 72 04
+    jc short 0a344h                           ; 72 04
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a306h                          ; eb 02
+    jmp short 0a346h                          ; eb 02
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a330h                           ; 74 26
+    je short 0a370h                           ; 74 26
     mov ax, word [bp-018h]                    ; 8b 46 e8
     mov ds, [bp-008h]                         ; 8e 5e f8
     sub word [di], ax                         ; 29 05
@@ -16005,10 +16021,10 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     mov ax, strict word 00001h                ; b8 01 00
     xor dx, dx                                ; 31 d2
     mov cx, word [bp-012h]                    ; 8b 4e ee
-    jcxz 0a328h                               ; e3 06
+    jcxz 0a368h                               ; e3 06
     sal ax, 1                                 ; d1 e0
     rcl dx, 1                                 ; d1 d2
-    loop 0a322h                               ; e2 fa
+    loop 0a362h                               ; e2 fa
     lds bx, [bp-010h]                         ; c5 5e f0
     or word [bx], ax                          ; 09 07
     or word [bx+002h], dx                     ; 09 57 02
@@ -16017,26 +16033,26 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     mov ax, word [di+002h]                    ; 8b 45 02
     mov ds, [bp-006h]                         ; 8e 5e fa
     cmp ax, word [si+002h]                    ; 3b 44 02
-    jc short 0a346h                           ; 72 06
-    jne short 0a34ch                          ; 75 0a
+    jc short 0a386h                           ; 72 06
+    jne short 0a38ch                          ; 75 0a
     cmp dx, word [si]                         ; 3b 14
-    jnc short 0a34ch                          ; 73 06
+    jnc short 0a38ch                          ; 73 06
     mov AL, strict byte 001h                  ; b0 01
-    jmp short 0a34eh                          ; eb 04
-    jmp short 0a36dh                          ; eb 21
+    jmp short 0a38eh                          ; eb 04
+    jmp short 0a3adh                          ; eb 21
     xor al, al                                ; 30 c0
     test al, al                               ; 84 c0
-    je short 0a361h                           ; 74 0f
-    jmp short 0a36dh                          ; eb 19
+    je short 0a3a1h                           ; 74 0f
+    jmp short 0a3adh                          ; eb 19
     mov cx, strict word 0001fh                ; b9 1f 00
     sal word [bp-018h], 1                     ; d1 66 e8
     rcl word [bp-016h], 1                     ; d1 56 ea
-    loop 0a357h                               ; e2 f8
-    jmp short 0a367h                          ; eb 06
+    loop 0a397h                               ; e2 f8
+    jmp short 0a3a7h                          ; eb 06
     shr word [bp-016h], 1                     ; d1 6e ea
     rcr word [bp-018h], 1                     ; d1 5e e8
     dec word [bp-012h]                        ; ff 4e ee
-    jmp near 0a2e9h                           ; e9 7c ff
+    jmp near 0a329h                           ; e9 7c ff
     mov ax, word [bp-01ch]                    ; 8b 46 e4
     mov dx, word [bp-01ah]                    ; 8b 56 e6
     lea sp, [bp-004h]                         ; 8d 66 fc
@@ -16045,25 +16061,25 @@ _DoUInt32Div:                                ; 0xfa115 LB 0x26b
     pop bp                                    ; 5d
     retn                                      ; c3
     times 0x6 db 0
-_ASMBitLastSetU16:                           ; 0xfa380 LB 0x18
+_ASMBitLastSetU16:                           ; 0xfa3c0 LB 0x18
     push bp                                   ; 55
     db  08bh, 0ech
     ; mov bp, sp                                ; 8b ec
     mov cx, word [bp+004h]                    ; 8b 4e 04
     test cx, cx                               ; 85 c9
-    je short 0a394h                           ; 74 0a
+    je short 0a3d4h                           ; 74 0a
     mov ax, strict word 00010h                ; b8 10 00
     sal cx, 1                                 ; d1 e1
-    jc short 0a396h                           ; 72 05
+    jc short 0a3d6h                           ; 72 05
     dec ax                                    ; 48
-    jmp short 0a38dh                          ; eb f9
+    jmp short 0a3cdh                          ; eb f9
     db  033h, 0c0h
     ; xor ax, ax                                ; 33 c0
     pop bp                                    ; 5d
     retn                                      ; c3
 
-  ; Padding 0x3668 bytes at 0xfa398
-  times 13928 db 0
+  ; Padding 0x3628 bytes at 0xfa3d8
+  times 13864 db 0
 
 section BIOS32 progbits vstart=0xda00 align=1 ; size=0x3cb class=CODE group=AUTO
 bios32_service:                              ; 0xfda00 LB 0x26
@@ -16110,7 +16126,7 @@ apm_pm32_entry:                              ; 0xfda40 LB 0x21
     pop bp                                    ; 5d
     add bp, strict byte 00008h                ; 83 c5 08
     push ebp                                  ; 66 55
-    mov bp, 0a106h                            ; bd 06 a1
+    mov bp, 0a146h                            ; bd 46 a1
     add byte [bx+si], al                      ; 00 00
     push ebp                                  ; 66 55
     mov AH, strict byte 003h                  ; b4 03
@@ -16717,7 +16733,7 @@ normal_post:                                 ; 0xfe0c0 LB 0x1f3
     mov ax, 0c000h                            ; b8 00 c0
     mov dx, 0c800h                            ; ba 00 c8
     call 01600h                               ; e8 f0 33
-    call 04faah                               ; e8 97 6d
+    call 04ff0h                               ; e8 dd 6d
     pop DS                                    ; 1f
     mov ax, 0ff53h                            ; b8 53 ff
     mov word [0003ch], ax                     ; a3 3c 00
@@ -16840,8 +16856,8 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     cld                                       ; fc
     call 01cc5h                               ; e8 89 39
     call 02154h                               ; e8 15 3e
-    call 09958h                               ; e8 16 b6
-    call 087bdh                               ; e8 78 a4
+    call 0999eh                               ; e8 5c b6
+    call 08803h                               ; e8 be a4
     call 0ed4ch                               ; e8 04 0a
     call 0e2d2h                               ; e8 87 ff
     push CS                                   ; 0e
@@ -16851,7 +16867,7 @@ hard_drive_post:                             ; 0xfe2d2 LB 0xbd
     mov dx, 0f000h                            ; ba 00 f0
     call 01600h                               ; e8 a9 32
     call 01799h                               ; e8 3f 34
-    call 03bc4h                               ; e8 67 58
+    call 03c0ah                               ; e8 ad 58
     sti                                       ; fb
     int 019h                                  ; cd 19
     sti                                       ; fb
@@ -16960,7 +16976,7 @@ biosorg_check_at_0E739h:                     ; 0xfe739 LB 0x36
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06565h                               ; e8 1c 7e
+    call 065abh                               ; e8 62 7e
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17064,7 +17080,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x4b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05813h                               ; e8 ca 6f
+    call 05859h                               ; e8 10 70
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17088,7 +17104,7 @@ biosorg_check_at_0E82Eh:                     ; 0xfe82e LB 0x4b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 05813h                               ; e8 a5 6f
+    call 05859h                               ; e8 eb 6f
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17147,7 +17163,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x78
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 052b2h                               ; e8 e2 68
+    call 052f8h                               ; e8 28 69
     pop ES                                    ; 07
     pop di                                    ; 5f
     pop si                                    ; 5e
@@ -17177,7 +17193,7 @@ biosorg_check_at_0E987h:                     ; 0xfe987 LB 0x78
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 06e9dh                               ; e8 a9 84
+    call 06ee3h                               ; e8 ef 84
     pop DS                                    ; 1f
     pop ES                                    ; 07
     pop di                                    ; 5f
@@ -17213,7 +17229,7 @@ int13_relocated:                             ; 0xfec5b LB 0x1f
     pop DS                                    ; 1f
     cld                                       ; fc
     push word [cs:0ec7ah]                     ; 2e ff 36 7a ec
-    jmp near 03c08h                           ; e9 8e 4f
+    jmp near 03c4eh                           ; e9 d4 4f
 jmp_call_ret_int13_out:                      ; 0xfec7a LB 0x4a
     db  0ffh
     in AL, DX                                 ; ec
@@ -17222,10 +17238,10 @@ jmp_call_ret_int13_out:                      ; 0xfec7a LB 0x4a
     push bx                                   ; 53
     push cx                                   ; 51
     push dx                                   ; 52
-    call 03bdch                               ; e8 58 4f
+    call 03c22h                               ; e8 9e 4f
     cmp AL, strict byte 000h                  ; 3c 00
     je short 0ecbfh                           ; 74 37
-    call 03bf2h                               ; e8 67 4f
+    call 03c38h                               ; e8 ad 4f
     pop dx                                    ; 5a
     push dx                                   ; 52
     db  03ah, 0c2h
@@ -17250,7 +17266,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 04215h                           ; e9 6a 55
+    jmp near 0425bh                           ; e9 b0 55
     and dl, 0e0h                              ; 80 e2 e0
     db  03ah, 0c2h
     ; cmp al, dl                                ; 3a c2
@@ -17290,22 +17306,22 @@ int13_legacy:                                ; 0xfecc8 LB 0x16
     test dl, 080h                             ; f6 c2 80
     jne short 0ecdeh                          ; 75 08
     push word [cs:0ec7ah]                     ; 2e ff 36 7a ec
-    jmp near 0320fh                           ; e9 31 45
+    jmp near 0322dh                           ; e9 4f 45
 int13_notfloppy:                             ; 0xfecde LB 0x14
     cmp dl, 0e0h                              ; 80 fa e0
     jc short 0ecf2h                           ; 72 0f
     shr ebx, 010h                             ; 66 c1 eb 10
     push bx                                   ; 53
-    call 04668h                               ; e8 7d 59
+    call 046aeh                               ; e8 c3 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 05bf4h                               ; e8 fa 6e
+    call 05c3ah                               ; e8 40 6f
     jmp short 0ecffh                          ; eb 03
-    call 0603ah                               ; e8 3b 73
+    call 06080h                               ; e8 81 73
 int13_out:                                   ; 0xfecff LB 0xb
     pop DS                                    ; 1f
     pop ES                                    ; 07
@@ -17539,7 +17555,7 @@ int17_handler:                               ; 0xfefd4 LB 0x1b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 0784ah                               ; e8 66 88
+    call 07890h                               ; e8 ac 88
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17597,28 +17613,28 @@ int19_relocated:                             ; 0xff0ac LB 0x95
     ; mov bp, sp                                ; 8b ec
     mov ax, strict word 00001h                ; b8 01 00
     push ax                                   ; 50
-    call 04d07h                               ; e8 37 5c
+    call 04d4dh                               ; e8 7d 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 04d07h                               ; e8 2a 5c
+    call 04d4dh                               ; e8 70 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 04d07h                               ; e8 1d 5c
+    call 04d4dh                               ; e8 63 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 04d07h                               ; e8 10 5c
+    call 04d4dh                               ; e8 56 5c
     inc sp                                    ; 44
     inc sp                                    ; 44
     test ax, ax                               ; 85 c0
@@ -17921,7 +17937,7 @@ int15_handler:                               ; 0xff859 LB 0x3c
     je short 0f890h                           ; 74 15
     cmp ah, 0c2h                              ; 80 fc c2
     je short 0f895h                           ; 74 15
-    call 067bch                               ; e8 39 6f
+    call 06802h                               ; e8 7f 6f
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17934,10 +17950,10 @@ int15_handler:                               ; 0xff859 LB 0x3c
     pop DS                                    ; 1f
     popfw                                     ; 9d
     jmp short 0f8afh                          ; eb 1f
-    call 09aabh                               ; e8 18 a2
+    call 09af1h                               ; e8 5e a2
     jmp short 0f883h                          ; eb ee
 int15_handler_mouse:                         ; 0xff895 LB 0x5
-    call 074aah                               ; e8 12 7c
+    call 074f0h                               ; e8 58 7c
     jmp short 0f883h                          ; eb e9
 int15_handler32:                             ; 0xff89a LB 0x15
     push ax                                   ; 50
@@ -17948,7 +17964,7 @@ int15_handler32:                             ; 0xff89a LB 0x15
     push bp                                   ; 55
     push si                                   ; 56
     push di                                   ; 57
-    call 06affh                               ; e8 5a 72
+    call 06b45h                               ; e8 a0 72
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -17994,7 +18010,7 @@ int74_handler:                               ; 0xff8c3 LB 0x3a
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 073d8h                               ; e8 fd 7a
+    call 0741eh                               ; e8 43 7b
     pop cx                                    ; 59
     jcxz 0f8ebh                               ; e3 0d
     db  033h, 0c0h
@@ -18042,7 +18058,7 @@ int70_handler:                               ; 0xff90f LB 0x2d
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07075h                               ; e8 56 77
+    call 070bbh                               ; e8 9c 77
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -18145,7 +18161,7 @@ biosorg_check_at_0FE6Eh:                     ; 0xffe6e LB 0x1b
     push CS                                   ; 0e
     pop DS                                    ; 1f
     cld                                       ; fc
-    call 07134h                               ; e8 b6 72
+    call 0717ah                               ; e8 fc 72
     pop di                                    ; 5f
     pop si                                    ; 5e
     pop bp                                    ; 5d
@@ -18257,4 +18273,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, 04bh
+    db  030h, 036h, 02fh, 032h, 033h, 02fh, 039h, 039h, 000h, 0fbh, 037h
diff --git a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
index df201cc..66af268 100644
--- a/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
+++ b/src/VBox/Devices/PC/BIOS/VBoxBiosAlternative8086.md5sum
@@ -1 +1 @@
-054d96b31388917aaa057b74cc4153b3 *VBoxPcBios8086.rom
+330a9aa8398ed5ec4c2d8ab184d0b782 *VBoxPcBios8086.rom
diff --git a/src/VBox/Devices/PC/BIOS/floppy.c b/src/VBox/Devices/PC/BIOS/floppy.c
index c0184c2..3f27bf5 100644
--- a/src/VBox/Devices/PC/BIOS/floppy.c
+++ b/src/VBox/Devices/PC/BIOS/floppy.c
@@ -121,7 +121,7 @@ uint8_t floppy_wait_for_interrupt_or_timeout(void)
 
 #endif /* !VBOX_WITH_FLOPPY_IRQ_POLLING */
 
-void floppy_reset_controller(void)
+void floppy_reset_controller(uint16_t drive)
 {
     uint8_t     val8;
 
@@ -134,6 +134,12 @@ void floppy_reset_controller(void)
     do {
         val8 = inb(0x3f4);
     } while ( (val8 & 0xc0) != 0x80 );
+
+    // Mark media in drive as unknown
+    val8 = read_byte(0x0040, 0x0090 + drive);
+    val8 &= ~0x10;
+    write_byte(0x0040, 0x90 + drive, val8);
+
 }
 
 void floppy_prepare_controller(uint16_t drive)
@@ -522,6 +528,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
 
         // see if drive exists
         if (floppy_drive_exists(drive) == 0) {
+            BX_DEBUG_INT13_FL("failed (not ready)\n");
             SET_AH(0x80); // not responding
             set_diskette_ret_status(0x80);
             SET_AL(0); // no sectors read
@@ -532,6 +539,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
         // see if media in drive, and type is known
         if (floppy_media_known(drive) == 0) {
             if (floppy_media_sense(drive) == 0) {
+                BX_DEBUG_INT13_FL("media not found\n");
                 SET_AH(0x0C); // Media type not found
                 set_diskette_ret_status(0x0C);
                 SET_AL(0); // no sectors read
@@ -583,7 +591,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
             outb(0x0005, base_count);
             outb(0x0005, base_count>>8);
             BX_DEBUG_INT13_FL("xfer buf %x bytes at %x:%x\n",
-                              base_count, page, base_address);
+                              base_count + 1, page, base_address);
 
             // port 0b: DMA-1 Mode Register
             mode_register = 0x46; // single mode, increment, autoinit disable,
@@ -613,6 +621,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
             outb(0x03f5, sector + num_sectors - 1); // last sector to read on track
             outb(0x03f5, 0); // Gap length
             outb(0x03f5, 0xff); // Gap length
+            BX_DEBUG_INT13_FL("read initiated\n");
 
 #ifdef VBOX_WITH_FLOPPY_IRQ_POLLING
             // turn on interrupts
@@ -622,7 +631,8 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
             do {
                 val8 = read_byte(0x0040, 0x0040);
                 if (val8 == 0) {
-                    floppy_reset_controller();
+                    BX_DEBUG_INT13_FL("failed (not ready)\n");
+                    floppy_reset_controller(drive);
                     SET_AH(0x80); // drive not ready (timeout)
                     set_diskette_ret_status(0x80);
                     SET_AL(0); // no sectors read
@@ -644,7 +654,8 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
 #else
             val8 = floppy_wait_for_interrupt_or_timeout();
             if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
-                floppy_reset_controller();
+                BX_DEBUG_INT13_FL("failed (not ready)\n");
+                floppy_reset_controller(drive);
                 SET_AH(0x80); // drive not ready (timeout)
                 set_diskette_ret_status(0x80);
                 SET_AL(0); // no sectors read
@@ -665,6 +676,8 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
             }
 
             if ( (return_status[0] & 0xc0) != 0 ) {
+                BX_DEBUG_INT13_FL("failed (FDC failure)\n");
+                floppy_reset_controller(drive);
                 SET_AH(0x20);
                 set_diskette_ret_status(0x20);
                 SET_AL(0); // no sectors read
@@ -675,6 +688,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
 #ifdef DMA_WORKAROUND
             rep_movsw(ES :> BX, ES :> BX, num_sectors * 512 / 2);
 #endif
+            BX_DEBUG_INT13_FL("success!\n");
             // ??? should track be new val from return_status[3] ?
             set_diskette_current_cyl(drive, track);
             // AL = number of sectors read (same value as passed)
@@ -759,7 +773,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
             do {
                 val8 = read_byte(0x0040, 0x0040);
                 if (val8 == 0) {
-                    floppy_reset_controller();
+                    floppy_reset_controller(drive);
                     SET_AH(0x80); // drive not ready (timeout)
                     set_diskette_ret_status(0x80);
                     SET_AL(0); // no sectors written
@@ -780,7 +794,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
 #else
             val8 = floppy_wait_for_interrupt_or_timeout();
             if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
-                floppy_reset_controller();
+                floppy_reset_controller(drive);
                 SET_AH(0x80); // drive not ready (timeout)
                 set_diskette_ret_status(0x80);
                 SET_AL(0); // no sectors written
@@ -926,7 +940,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
         do {
             val8 = read_byte(0x0040, 0x0040);
             if (val8 == 0) {
-                floppy_reset_controller();
+                floppy_reset_controller(drive);
                 SET_AH(0x80); // drive not ready (timeout)
                 set_diskette_ret_status(0x80);
                 SET_CF(); // error occurred
@@ -946,7 +960,7 @@ void BIOSCALL int13_diskette_function(disk_regs_t r)
 #else
         val8 = floppy_wait_for_interrupt_or_timeout();
         if (val8 == 0) { /* Note! Interrupts enabled in this branch. */
-            floppy_reset_controller();
+            floppy_reset_controller(drive);
             SET_AH(0x80); // drive not ready (timeout)
             set_diskette_ret_status(0x80);
             SET_CF(); // error occurred
diff --git a/src/VBox/Devices/USB/DrvVUSBRootHub.cpp b/src/VBox/Devices/USB/DrvVUSBRootHub.cpp
index 42b77fe..83bf109 100644
--- a/src/VBox/Devices/USB/DrvVUSBRootHub.cpp
+++ b/src/VBox/Devices/USB/DrvVUSBRootHub.cpp
@@ -278,8 +278,7 @@ static DECLCALLBACK(int) vusbPDMHubAttachDevice(PPDMDRVINS pDrvIns, PPDMUSBINS p
         RTMemFree(pDev->paIfStates);
         pUsbIns->pvVUsbDev2 = NULL;
     }
-    vusbDevDestroy(pDev);
-    RTMemFree(pDev);
+    vusbDevRelease(pDev);
     return rc;
 }
 
@@ -289,9 +288,20 @@ static DECLCALLBACK(int) vusbPDMHubDetachDevice(PPDMDRVINS pDrvIns, PPDMUSBINS p
 {
     PVUSBDEV pDev = (PVUSBDEV)pUsbIns->pvVUsbDev2;
     Assert(pDev);
-    vusbDevDestroy(pDev);
-    RTMemFree(pDev);
-    pUsbIns->pvVUsbDev2 = NULL;
+
+    /*
+     * Deal with pending async reset.
+     * (anything but reset)
+     */
+    vusbDevSetStateCmp(pDev, VUSB_DEVICE_STATE_DEFAULT, VUSB_DEVICE_STATE_RESET);
+
+    /*
+     * Detach and free resources.
+     */
+    if (pDev->pHub)
+        vusbDevDetach(pDev);
+
+    vusbDevRelease(pDev);
     return VINF_SUCCESS;
 }
 
@@ -321,10 +331,20 @@ static const PDMUSBHUBREG g_vusbHubReg =
 static PVUSBDEV vusbRhFindDevByAddress(PVUSBROOTHUB pRh, uint8_t Address)
 {
     unsigned iHash = vusbHashAddress(Address);
-    for (PVUSBDEV pDev = pRh->apAddrHash[iHash]; pDev; pDev = pDev->pNextHash)
-        if (pDev->u8Address == Address)
-            return pDev;
-    return NULL;
+    PVUSBDEV pDev = NULL;
+
+    RTCritSectEnter(&pRh->CritSectDevices);
+    for (PVUSBDEV pCur = pRh->apAddrHash[iHash]; pCur; pCur = pCur->pNextHash)
+        if (pCur->u8Address == Address)
+        {
+            pDev = pCur;
+            break;
+        }
+
+    if (pDev)
+        vusbDevRetain(pDev);
+    RTCritSectLeave(&pRh->CritSectDevices);
+    return pDev;
 }
 
 
@@ -354,7 +374,12 @@ static DECLCALLBACK(void) vusbRhFreeUrb(PVUSBURB pUrb)
 
     /* The URB comes from the roothub if there is no device (invalid address). */
     if (pUrb->pVUsb->pDev)
+    {
+        PVUSBDEV pDev = pUrb->pVUsb->pDev;
+
         vusbUrbPoolFree(&pUrb->pVUsb->pDev->UrbPool, pUrb);
+        vusbDevRelease(pDev);
+    }
     else
         vusbUrbPoolFree(&pRh->Hub.Dev.UrbPool, pUrb);
 }
@@ -370,6 +395,8 @@ static PVUSBURB vusbRhNewUrb(PVUSBROOTHUB pRh, uint8_t DstAddress, PVUSBDEV pDev
 
     if (!pDev)
         pDev = vusbRhFindDevByAddress(pRh, DstAddress);
+    else
+        vusbDevRetain(pDev);
 
     if (pDev)
         pUrbPool = &pDev->UrbPool;
@@ -467,7 +494,8 @@ static void vusbRhR3FrameRateCalcNew(PVUSBROOTHUB pThis, bool fIdle)
         }
     }
 
-    if (uNewFrameRate != pThis->uFrameRate)
+    if (   uNewFrameRate != pThis->uFrameRate
+        && uNewFrameRate)
     {
         LogFlow(("Frame rate changed from %u to %u\n", pThis->uFrameRate, uNewFrameRate));
         vusbRhR3CalcTimerIntervals(pThis, uNewFrameRate);
@@ -552,6 +580,14 @@ static DECLCALLBACK(int) vusbRhR3PeriodFrameWorker(PPDMDRVINS pDrvIns, PPDMTHREA
 
             rc = RTSemEventMultiWait(pThis->hSemEventPeriodFrame, RT_INDEFINITE_WAIT);
             RTSemEventMultiReset(pThis->hSemEventPeriodFrame);
+
+            /*
+             * Notify the device above about the frame rate changed if we are supposed to
+             * process frames.
+             */
+            uint32_t uFrameRate = ASMAtomicReadU32(&pThis->uFrameRateDefault);
+            if (uFrameRate)
+                vusbRhR3CalcTimerIntervals(pThis, uFrameRate);
         }
 
         AssertLogRelMsgReturn(RT_SUCCESS(rc) || rc == VERR_TIMEOUT, ("%Rrc\n", rc), rc);
@@ -696,6 +732,7 @@ static DECLCALLBACK(int) vusbRhSubmitUrb(PVUSBIROOTHUBCONNECTOR pInterface, PVUS
     }
     else
     {
+        vusbDevRetain(&pRh->Hub.Dev);
         pUrb->pVUsb->pDev = &pRh->Hub.Dev;
         Log(("vusb: pRh=%p: SUBMIT: Address %i not found!!!\n", pRh, pUrb->DstAddress));
 
@@ -1225,6 +1262,7 @@ static DECLCALLBACK(int) vusbRhConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfg, uin
     pThis->Hub.Dev.u8Address            = VUSB_INVALID_ADDRESS;
     pThis->Hub.Dev.u8NewAddress         = VUSB_INVALID_ADDRESS;
     pThis->Hub.Dev.i16Port              = -1;
+    pThis->Hub.Dev.cRefs                = 1;
     pThis->Hub.Dev.IDevice.pfnReset     = vusbRhDevReset;
     pThis->Hub.Dev.IDevice.pfnPowerOn   = vusbRhDevPowerOn;
     pThis->Hub.Dev.IDevice.pfnPowerOff  = vusbRhDevPowerOff;
diff --git a/src/VBox/Devices/USB/VUSBDevice.cpp b/src/VBox/Devices/USB/VUSBDevice.cpp
index 60a7077..1bc73e6 100644
--- a/src/VBox/Devices/USB/VUSBDevice.cpp
+++ b/src/VBox/Devices/USB/VUSBDevice.cpp
@@ -965,6 +965,7 @@ static void vusbDevAddressUnHash(PVUSBDEV pDev)
     pDev->u8Address = VUSB_INVALID_ADDRESS;
     pDev->u8NewAddress = VUSB_INVALID_ADDRESS;
 
+    RTCritSectEnter(&pDev->pHub->pRootHub->CritSectDevices);
     PVUSBDEV pCur = pDev->pHub->pRootHub->apAddrHash[u8Hash];
     if (pCur == pDev)
     {
@@ -988,6 +989,7 @@ static void vusbDevAddressUnHash(PVUSBDEV pDev)
             }
         }
     }
+    RTCritSectLeave(&pDev->pHub->pRootHub->CritSectDevices);
 }
 
 /**
@@ -1263,23 +1265,12 @@ int vusbDevDetach(PVUSBDEV pDev)
  * Destroys a device, detaching it from the hub if necessary.
  *
  * @param   pDev    The device.
- * @thread  EMT
+ * @thread any.
  */
 void vusbDevDestroy(PVUSBDEV pDev)
 {
     LogFlow(("vusbDevDestroy: pDev=%p[%s] enmState=%d\n", pDev, pDev->pUsbIns->pszName, pDev->enmState));
 
-    /*
-     * Deal with pending async reset.
-     * (anything but reset)
-     */
-    vusbDevSetStateCmp(pDev, VUSB_DEVICE_STATE_DEFAULT, VUSB_DEVICE_STATE_RESET);
-
-    /*
-     * Detach and free resources.
-     */
-    if (pDev->pHub)
-        vusbDevDetach(pDev);
     RTMemFree(pDev->paIfStates);
     TMR3TimerDestroy(pDev->pResetTimer);
     pDev->pResetTimer = NULL;
@@ -1306,6 +1297,8 @@ void vusbDevDestroy(PVUSBDEV pDev)
     RTCritSectDelete(&pDev->CritSectAsyncUrbs);
     /* Not using vusbDevSetState() deliberately here because it would assert on the state. */
     pDev->enmState = VUSB_DEVICE_STATE_DESTROYED;
+    pDev->pUsbIns->pvVUsbDev2 = NULL;
+    RTMemFree(pDev);
 }
 
 
@@ -1765,6 +1758,7 @@ int vusbDevInit(PVUSBDEV pDev, PPDMUSBINS pUsbIns, const char *pszCaptureFilenam
     pDev->pNextHash = NULL;
     pDev->pHub = NULL;
     pDev->enmState = VUSB_DEVICE_STATE_DETACHED;
+    pDev->cRefs = 1;
     pDev->u8Address = VUSB_INVALID_ADDRESS;
     pDev->u8NewAddress = VUSB_INVALID_ADDRESS;
     pDev->i16Port = -1;
diff --git a/src/VBox/Devices/USB/VUSBInternal.h b/src/VBox/Devices/USB/VUSBInternal.h
index d949870..c399019 100644
--- a/src/VBox/Devices/USB/VUSBInternal.h
+++ b/src/VBox/Devices/USB/VUSBInternal.h
@@ -226,6 +226,8 @@ typedef struct VUSBDEV
     PVUSBHUB            pHub;
     /** The device state. */
     VUSBDEVICESTATE volatile enmState;
+    /** Reference counter to protect the device structure from going away. */
+    uint32_t volatile        cRefs;
 
     /** The device address. */
     uint8_t             u8Address;
@@ -253,10 +255,6 @@ typedef struct VUSBDEV
     RTCRITSECT          CritSectAsyncUrbs;
     /** List of active async URBs. */
     RTLISTANCHOR        LstAsyncUrbs;
-#if HC_ARCH_BITS == 32
-    /** Align the size to a 8 byte boundary. */
-    uint32_t            u32Alignment0;
-#endif
 
     /** Dumper state. */
     union VUSBDEVURBDUMPERSTATE
@@ -749,6 +747,38 @@ DECLINLINE(bool) vusbDevSetStateCmp(PVUSBDEV pDev, VUSBDEVICESTATE enmStateNew,
     return ASMAtomicCmpXchgU32((volatile uint32_t *)&pDev->enmState, enmStateNew, enmStateOld);
 }
 
+/**
+ * Retains the given VUSB device pointer.
+ *
+ * @returns New reference count.
+ * @param   pThis          The VUSB device pointer.
+ */
+DECLINLINE(uint32_t) vusbDevRetain(PVUSBDEV pThis)
+{
+    AssertPtrReturn(pThis, UINT32_MAX);
+
+    uint32_t cRefs = ASMAtomicIncU32(&pThis->cRefs);
+    AssertMsg(cRefs > 1 && cRefs < _1M, ("%#x %p\n", cRefs, pThis));
+    return cRefs;
+}
+
+/**
+ * Releases the given VUSB device pointer.
+ *
+ * @returns New reference count.
+ * @retval 0 if no onw is holding a reference anymore causing the device to be destroyed.
+ */
+DECLINLINE(uint32_t) vusbDevRelease(PVUSBDEV pThis)
+{
+    AssertPtrReturn(pThis, UINT32_MAX);
+
+    uint32_t cRefs = ASMAtomicDecU32(&pThis->cRefs);
+    AssertMsg(cRefs < _1M, ("%#x %p\n", cRefs, pThis));
+    if (cRefs == 0)
+        vusbDevDestroy(pThis);
+    return cRefs;
+}
+
 /** Strings for the CTLSTAGE enum values. */
 extern const char * const g_apszCtlStates[4];
 /** Default message pipe. */
diff --git a/src/VBox/Frontends/VirtualBox/Makefile.kmk b/src/VBox/Frontends/VirtualBox/Makefile.kmk
index c88d499..31e8eec 100644
--- a/src/VBox/Frontends/VirtualBox/Makefile.kmk
+++ b/src/VBox/Frontends/VirtualBox/Makefile.kmk
@@ -492,7 +492,7 @@ VirtualBox_QT_MOCHDRS = \
 	src/wizards/importappliance/UIWizardImportAppPageExpert.h \
 	src/wizards/firstrun/UIWizardFirstRun.h \
 	src/wizards/firstrun/UIWizardFirstRunPageBasic.h \
-	src/runtime/information/UIInformation.h \
+	src/runtime/information/UIInformationConfiguration.h \
 	src/runtime/information/UIInformationDataItem.h \
 	src/runtime/information/UIInformationItem.h \
 	src/runtime/information/UIInformationModel.h \
@@ -790,7 +790,7 @@ VirtualBox_SOURCES = \
 	src/wizards/importappliance/UIWizardImportAppPageExpert.cpp \
 	src/wizards/firstrun/UIWizardFirstRun.cpp \
 	src/wizards/firstrun/UIWizardFirstRunPageBasic.cpp \
-	src/runtime/information/UIInformation.cpp \
+	src/runtime/information/UIInformationConfiguration.cpp \
 	src/runtime/information/UIInformationDataItem.cpp \
 	src/runtime/information/UIInformationItem.cpp \
 	src/runtime/information/UIInformationModel.cpp \
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts
index 5dbc363..7b02c7d 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_bg.ts
@@ -1748,51 +1748,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5540,10 +5550,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataAudio</name>
     <message>
-        <source>Audio</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Host Driver</source>
         <comment>details report (audio)</comment>
         <translation type="unfinished">Реален драйвер</translation>
@@ -5557,11 +5563,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataDisplay</name>
     <message>
-        <source>Display</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Video Memory</source>
         <comment>details report</comment>
         <translation type="unfinished">Видео памет</translation>
@@ -5622,7 +5623,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Основни</translation>
+        <translation type="obsolete">Основни</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5639,7 +5640,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Мрежа</translation>
+        <translation type="obsolete">Мрежа</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5685,7 +5686,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Мрежови статистики</translation>
+        <translation type="obsolete">Мрежови статистики</translation>
     </message>
 </context>
 <context>
@@ -5693,7 +5694,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Паралелни портове</translation>
+        <translation type="obsolete">Паралелни портове</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5711,7 +5712,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Атрибути на изпълнението</translation>
+        <translation type="obsolete">Атрибути на изпълнението</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5783,7 +5784,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Серийни портове</translation>
+        <translation type="obsolete">Серийни портове</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5796,7 +5797,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Споделени папки</translation>
+        <translation type="obsolete">Споделени папки</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5808,7 +5809,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Съхранение</translation>
+        <translation type="obsolete">Съхранение</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5836,7 +5837,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Статистики на съхранението</translation>
+        <translation type="obsolete">Статистики на съхранението</translation>
     </message>
 </context>
 <context>
@@ -5844,7 +5845,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Система</translation>
+        <translation type="obsolete">Система</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5952,7 +5953,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -16076,8 +16077,83 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Основни</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Преглед</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Система</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Съхранение</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Мрежа</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Серийни портове</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Паралелни портове</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Споделени папки</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Потребителски интерфейс</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Описание</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts
index 0e97d20..ddee597 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca.ts
@@ -1131,51 +1131,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2760,7 +2770,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Àudio</translation>
+        <translation type="obsolete">Àudio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -2778,7 +2788,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Pantalla</translation>
+        <translation type="obsolete">Pantalla</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -2841,7 +2851,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">General</translation>
+        <translation type="obsolete">General</translation>
     </message>
     <message>
         <source>Name</source>
@@ -2858,7 +2868,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Xarxa</translation>
+        <translation type="obsolete">Xarxa</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -2904,7 +2914,7 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estadístiques de xarxa</translation>
+        <translation type="obsolete">Estadístiques de xarxa</translation>
     </message>
 </context>
 <context>
@@ -2912,7 +2922,7 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ports paral·lels</translation>
+        <translation type="obsolete">Ports paral·lels</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -2930,7 +2940,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atributs de temps d'execució</translation>
+        <translation type="obsolete">Atributs de temps d'execució</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -3002,7 +3012,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Ports en sèrie</translation>
+        <translation type="obsolete">Ports en sèrie</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -3015,7 +3025,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Carpetes compartides</translation>
+        <translation type="obsolete">Carpetes compartides</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -3027,7 +3037,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Emmagatzematge</translation>
+        <translation type="obsolete">Emmagatzematge</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -3055,7 +3065,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estadístiques d'emmagatzematge</translation>
+        <translation type="obsolete">Estadístiques d'emmagatzematge</translation>
     </message>
 </context>
 <context>
@@ -3063,7 +3073,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation type="obsolete">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -3171,7 +3181,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -8921,8 +8931,83 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">General</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Vista prèvia</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pantalla</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Emmagatzematge</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Àudio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Xarxa</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ports en sèrie</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ports paral·lels</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Carpetes compartides</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Interfície d'usuari</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descripció</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts
index 0649759..07639f0 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ca_VA.ts
@@ -1728,51 +1728,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5488,7 +5498,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Àudio</translation>
+        <translation type="obsolete">Àudio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5506,7 +5516,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Pantalla</translation>
+        <translation type="obsolete">Pantalla</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5569,7 +5579,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">General</translation>
+        <translation type="obsolete">General</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5586,7 +5596,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Xarxa</translation>
+        <translation type="obsolete">Xarxa</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5632,7 +5642,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estadístiques de xarxa</translation>
+        <translation type="obsolete">Estadístiques de xarxa</translation>
     </message>
 </context>
 <context>
@@ -5640,7 +5650,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ports paral·lels</translation>
+        <translation type="obsolete">Ports paral·lels</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5658,7 +5668,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atributs del temps d'execució</translation>
+        <translation type="obsolete">Atributs del temps d'execució</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5730,7 +5740,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Ports en sèrie</translation>
+        <translation type="obsolete">Ports en sèrie</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5743,7 +5753,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Carpetes compartides</translation>
+        <translation type="obsolete">Carpetes compartides</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5755,7 +5765,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Emmagatzematge</translation>
+        <translation type="obsolete">Emmagatzematge</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5783,7 +5793,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estadístiques d'emmagatzematge</translation>
+        <translation type="obsolete">Estadístiques d'emmagatzematge</translation>
     </message>
 </context>
 <context>
@@ -5791,7 +5801,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation type="obsolete">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5899,7 +5909,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -16994,8 +17004,83 @@ Versió %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">General</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Vista prèvia</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pantalla</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Emmagatzematge</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Àudio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Xarxa</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ports en sèrie</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ports paral·lels</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Carpetes compartides</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descripció</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts
index e04726d..5c7bf0e 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_cs.ts
@@ -1735,51 +1735,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5441,7 +5451,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Zvuk</translation>
+        <translation type="obsolete">Zvuk</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5457,11 +5467,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataDisplay</name>
     <message>
-        <source>Display</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Video Memory</source>
         <comment>details report</comment>
         <translation type="unfinished">Video paměť</translation>
@@ -5522,7 +5527,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Obecné</translation>
+        <translation type="obsolete">Obecné</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5539,7 +5544,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Síť</translation>
+        <translation type="obsolete">Síť</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5585,7 +5590,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistiky síťových rozhraní</translation>
+        <translation type="obsolete">Statistiky síťových rozhraní</translation>
     </message>
 </context>
 <context>
@@ -5593,7 +5598,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Paralelní porty</translation>
+        <translation type="obsolete">Paralelní porty</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5611,7 +5616,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Parametry při spuštění</translation>
+        <translation type="obsolete">Parametry při spuštění</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5683,7 +5688,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Sériové porty</translation>
+        <translation type="obsolete">Sériové porty</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5696,7 +5701,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sdílené složky</translation>
+        <translation type="obsolete">Sdílené složky</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5708,7 +5713,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Úložiště</translation>
+        <translation type="obsolete">Úložiště</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5736,7 +5741,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistiky o úložištích</translation>
+        <translation type="obsolete">Statistiky o úložištích</translation>
     </message>
 </context>
 <context>
@@ -5744,7 +5749,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Systém</translation>
+        <translation type="obsolete">Systém</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5852,7 +5857,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -16959,8 +16964,83 @@ Verze %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Obecné</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Náhled</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Systém</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Úložiště</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Zvuk</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Síť</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sériové porty</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Paralelní porty</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sdílené složky</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Uživatelské rozhraní</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Popis</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts
index d6e74d3..37b4569 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_da.ts
@@ -1674,51 +1674,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5420,7 +5430,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Lydkort</translation>
+        <translation type="obsolete">Lydkort</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5438,7 +5448,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Skærm</translation>
+        <translation type="obsolete">Skærm</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5501,7 +5511,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Generelt</translation>
+        <translation type="obsolete">Generelt</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5517,10 +5527,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataNetwork</name>
     <message>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Bridged adapter, %1</source>
         <comment>details report (network)</comment>
         <translation type="unfinished">Netværksbro, %1</translation>
@@ -5564,7 +5570,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Netværksstatistik</translation>
+        <translation type="obsolete">Netværksstatistik</translation>
     </message>
 </context>
 <context>
@@ -5572,7 +5578,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Parallelporte</translation>
+        <translation type="obsolete">Parallelporte</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5590,7 +5596,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Afviklingsindstillinger</translation>
+        <translation type="obsolete">Afviklingsindstillinger</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5662,7 +5668,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Serielle porte</translation>
+        <translation type="obsolete">Serielle porte</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5675,7 +5681,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Delte mapper</translation>
+        <translation type="obsolete">Delte mapper</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5687,7 +5693,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Lagerenheder</translation>
+        <translation type="obsolete">Lagerenheder</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5712,18 +5718,13 @@ p, li { white-space: pre-wrap; }
         <source>Data Written</source>
         <translation type="unfinished">Data skrevet</translation>
     </message>
-    <message>
-        <source>Storage Statistics</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>UIInformationDataSystem</name>
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">System</translation>
+        <translation type="obsolete">System</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5831,7 +5832,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -15542,8 +15543,83 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Generelt</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Forhåndsvisning</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">System</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Skærm</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Lagerenheder</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Lydkort</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Serielle porte</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Parallelporte</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Delte mapper</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Brugerflade</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Beskrivelse</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
index 15c45a6..b5c0319 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_de.ts
@@ -76,18 +76,10 @@
         <translation>Die VirtualBox-Kernmodule passen nicht zu dieser Version von VirtualBox. Es wird empfohlen, VirtualBox komplett neu zu installieren.</translation>
     </message>
     <message>
-        <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/>  <font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
-        <translation>Die VirtualBox-Kernmodule passen nicht zu dieser Version von VirtualBox. Die Installation von VirtualBox war möglicherweise nicht vollständig. Durch Ausführen von <br/><br/><font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/> sollte dieses Problem behoben werden. Bitte stellen Sie sicher, dass Sie die OSE-Version von VirtualBox nicht mit der PUEL-Version mischen.</translation>
-    </message>
-    <message>
         <source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.</source>
         <translation>Diese Fehlermeldung bedeutet, dass der Kerntreiber entweder nicht ausreichend Speicher anfordern konnte oder dass eine Mapping-Operation fehlgeschlagen ist.</translation>
     </message>
     <message>
-        <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/>  <font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary. [...]
-        <translation>Der VirtualBox Kerntreiber für Linux (vboxdrv) ist entweder nicht geladen oder auf das Gerät /dev/vboxdrv konnte nicht zugegriffen werden. Richten Sie das Kernmodul neu ein, indem Sie<br/><br/><font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>mit Root-Rechten ausführen. Falls Sie eine Linux-Distribution von Ubuntu, Fedora oder Mandriva verweden, sollten Sie das Paket DKMS zuerst installieren. Dieses compiliert die  [...]
-    </message>
-    <message>
         <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>as root.</source>
         <translation>Der VirtualBox Kerntreiber für Linux (vboxdrv) ist entweder nicht geladen oder auf das Gerät /dev/vboxdrv konnte nicht zugegriffen werden. Richten Sie das Kernmodul neu ein, indem Sie <br/><br/><font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/> mit Root-Rechten ausführen.</translation>
     </message>
@@ -110,14 +102,6 @@
 <context>
     <name>QIArrowSplitter</name>
     <message>
-        <source>&Back</source>
-        <translation>&Zurück</translation>
-    </message>
-    <message>
-        <source>&Next</source>
-        <translation>&Vorwärts</translation>
-    </message>
-    <message>
         <source>&Details</source>
         <translation>&Details</translation>
     </message>
@@ -163,14 +147,6 @@
         <translation>Abbrechen</translation>
     </message>
     <message>
-        <source>&Details</source>
-        <translation>&Details</translation>
-    </message>
-    <message>
-        <source>&Details (%1 of %2)</source>
-        <translation>&Details (%1 von %2)</translation>
-    </message>
-    <message>
         <source>Copy all errors to the clipboard</source>
         <translation>Kopiert den Text der Fehlermeldung in die Zwischenablage</translation>
     </message>
@@ -1131,52 +1107,62 @@
         <translation><b>Die Appliance wurde mit einem nicht überprüften Zertifikat von '%1' signiert. Importieren Sie diese VM nur, wenn Sie dieser Entität vertrauen können.</b></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
-        <translation>Aussteller:               %1</translation>
+        <source>True</source>
+        <translation>ja</translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
-        <translation>Subjekt:                  %1</translation>
+        <source>False</source>
+        <translation>nein</translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
-        <translation>Nicht gültig bevor:       %1</translation>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
-        <translation>Nicht gültig nach:        %1</translation>
+        <source>Issuer</source>
+        <translation>Aussteller</translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
-        <translation>Fortlaufende Nummer:      %1</translation>
+        <source>Subject</source>
+        <translation>Subjekt</translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
-        <translation>Selbstsigniert:           %1</translation>
+        <source>Not Valid Before</source>
+        <translation>nicht gültig vor</translation>
     </message>
     <message>
-        <source>True</source>
-        <translation>ja</translation>
+        <source>Not Valid After</source>
+        <translation>nicht gültig nach</translation>
     </message>
     <message>
-        <source>False</source>
-        <translation>nein</translation>
+        <source>Serial Number</source>
+        <translation>fortlaufende Nummer</translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
-        <translation>Zertifizierungsstelle:    %1</translation>
+        <source>Self-Signed</source>
+        <translation>selbstsigniert</translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
-        <translation>Öffentlicher Algorithmus: %1 (%2)</translation>
+        <source>Authority (CA)</source>
+        <translation>Zertifizierungsstelle</translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
-        <translation>Signaturalgorithmus:      %1 (%2)</translation>
+        <source>Public Algorithm</source>
+        <translation>Öffentlicher Algorithmus</translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
-        <translation>X.509-Versionsnummer:     %1</translation>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation>Signaturalgorithmus</translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
+        <translation>X.509-Versionsnummer</translation>
     </message>
 </context>
 <context>
@@ -7395,68 +7381,6 @@
     </message>
 </context>
 <context>
-    <name>VBoxEmptyFileSelector</name>
-    <message>
-        <source>Choose...</source>
-        <translation>Schließen...</translation>
-    </message>
-</context>
-<context>
-    <name>VBoxFilePathSelectorWidget</name>
-    <message>
-        <source><reset to default></source>
-        <translation><Voreinstellung></translation>
-    </message>
-    <message>
-        <source><not selected></source>
-        <translation><nicht ausgewählt></translation>
-    </message>
-    <message>
-        <source>Please use the <b>Other...</b> item from the drop-down list to select a path.</source>
-        <translation>Benutzen Sie <b>Ändern...</b> zur Auswahl des gewünschten Pfades.</translation>
-    </message>
-    <message>
-        <source>Other...</source>
-        <translation>Ändern...</translation>
-    </message>
-    <message>
-        <source>Reset</source>
-        <translation>Zurücksetzen</translation>
-    </message>
-    <message>
-        <source>Resets the folder path to the default value.</source>
-        <translation>Setzt den Verzeichnispfad auf die Voreinstellung zurück.</translation>
-    </message>
-    <message>
-        <source>Resets the file path to the default value.</source>
-        <translation>Setzt den Pfad auf die Voreinstellung zurück.</translation>
-    </message>
-    <message>
-        <source>&Copy</source>
-        <translation>&Kopieren</translation>
-    </message>
-    <message>
-        <source>The actual default path value will be displayed after accepting the changes and opening this window again.</source>
-        <translation>Der Standardpfad wird nach Bestätigen der Änderungen und erneutes Öffnen dieses Dialogs angezeigt.</translation>
-    </message>
-    <message>
-        <source>Displays a window to select a different folder.</source>
-        <translation>Öffnet einen Dialog zur Auswahl eines anderen Verzeichnisses.</translation>
-    </message>
-    <message>
-        <source>Displays a window to select a different file.</source>
-        <translation>Öffnet einen Dialog zur Auswahl einer anderen Datei.</translation>
-    </message>
-    <message>
-        <source>Holds the folder path.</source>
-        <translation>Zeigt den Ordner.</translation>
-    </message>
-    <message>
-        <source>Holds the file path.</source>
-        <translation>Zeigt den Dateipfad.</translation>
-    </message>
-</context>
-<context>
     <name>VBoxGlobal</name>
     <message>
         <source>Unknown device %1:%2</source>
@@ -8921,9 +8845,84 @@
         <translation>NVMe-Port %1</translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
-        <translation type="unfinished"></translation>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation>Allgemein</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation>Vorschau</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation>System</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation>Anzeige</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation>Massenspeicher</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation>Audio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation>Netzwerk</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation>Serielle Schnittstellen</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation>Parallele Schnittstellen</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation>USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation>Gemeinsame Ordner</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation>Benutzerschnittstelle</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation>Beschreibung</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation>Laufzeit</translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation>Massenspeicher</translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
+        <translation>Netzwerkadapter</translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
index 4861587..6b039a6 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_el.ts
@@ -26,7 +26,7 @@
     <message>
         <source>Oracle Corporation</source>
         <comment>Comma-separated list of translators</comment>
-        <translation>Socratis Kalogrianitis, Andreas Mastichis, Spiros Vlachos</translation>
+        <translation>Socratis Kalogrianitis, Anastasios Kazakis, Andreas Mastichis</translation>
     </message>
 </context>
 <context>
@@ -89,22 +89,22 @@
     </message>
     <message>
         <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>as root.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο οδηγός πυρήνα του VirtualBox Linux (vboxdrv) δεν φορτώθηκε ή υπάρχει πρόβλημα με δικαιώματα του /dev/vboxdrv. Εγκαταστήστε ξανά την υπομονάδα του πυρήνα εκτελώντας<br/><br/>  <font color="blue">'/sbin/vboxconfig'</font><br/><br/>σαν διαχειριστής.</translation>
     </message>
     <message>
         <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο οδηγός πυρήνα δεν ταιριάζει με αυτή την έκδοση του VirtualBox. Η εγκατάσταση του VirtualBox δεν ήταν μάλλον επιτυχημένη. Τρέχοντας<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>μπορεί να το διορθώσει. Σιγουρευτείτε οτι δεν αναμειγνύετε την έκδοση OSE και την έκδοση PUEL του VirtualBox.</translation>
     </message>
 </context>
 <context>
     <name>QIArrowButtonPress</name>
     <message>
         <source>&Back</source>
-        <translation type="unfinished">&Προηγούμενο</translation>
+        <translation>&Προηγούμενο</translation>
     </message>
     <message>
         <source>&Next</source>
-        <translation type="unfinished">&Επόμενο</translation>
+        <translation>&Επόμενο</translation>
     </message>
 </context>
 <context>
@@ -119,11 +119,11 @@
     </message>
     <message>
         <source>&Details</source>
-        <translation type="unfinished">&Λεπτομέρειες</translation>
+        <translation>Λεπτομέρειες</translation>
     </message>
     <message>
         <source>&Details (%1 of %2)</source>
-        <translation type="unfinished">&Λεπτομέρειες (%1 από %2)</translation>
+        <translation>Λεπτομέρειες (%1 από %2)</translation>
     </message>
 </context>
 <context>
@@ -164,11 +164,11 @@
     </message>
     <message>
         <source>&Details</source>
-        <translation type="vanished">&Λεπτομέρειες</translation>
+        <translation type="vanished">Λεπτομέρειες</translation>
     </message>
     <message>
         <source>&Details (%1 of %2)</source>
-        <translation type="vanished">&Λεπτομέρειες (%1 από %2)</translation>
+        <translation type="vanished">Λεπτομέρειες (%1 από %2)</translation>
     </message>
     <message>
         <source>Copy all errors to the clipboard</source>
@@ -642,7 +642,7 @@
     </message>
     <message>
         <source>&Save State</source>
-        <translation>Σώστε την κατάσταση</translation>
+        <translation>Αποθήκευση της κατάστασης</translation>
     </message>
     <message>
         <source>Save the state of the virtual machine</source>
@@ -650,7 +650,7 @@
     </message>
     <message>
         <source>Send the ACPI Shutdown signal to the virtual machine</source>
-        <translation>Στείλτε το σήμα τερματισμού ACPI στην εικονική μηχανή</translation>
+        <translation>Αποστολή του σήματος τερματισμού ACPI στην εικονική μηχανή</translation>
     </message>
     <message>
         <source>&Minimize Window</source>
@@ -674,7 +674,7 @@
     </message>
     <message>
         <source>Allow remote desktop (RDP) connections to this machine</source>
-        <translation>Επιτρέπει συνδέσεις απομακρυσμένης οθόνης (RDP) σε αυτή τη μηχανή</translation>
+        <translation>Επιτρέπει συνδέσεις απομακρυσμένης επιφάνειας (RDP) σε αυτή τη μηχανή</translation>
     </message>
     <message>
         <source>Display window to configure menu-bar</source>
@@ -766,19 +766,19 @@
     </message>
     <message>
         <source>No USB Devices Connected</source>
-        <translation>Καμμία συνδεδεμένη συσκευή USB</translation>
+        <translation>Καμία συνδεδεμένη συσκευή USB</translation>
     </message>
     <message>
         <source>No supported devices connected to the host PC</source>
-        <translation>Καμμία συνδεδεμένη υποστηριζόμενη συσκευή στον οικοδεσπότη</translation>
+        <translation>Καμία συνδεδεμένη υποστηριζόμενη συσκευή στον οικοδεσπότη</translation>
     </message>
     <message>
         <source>No Webcams Connected</source>
-        <translation>Καμμία συνδεδεμένη κάμερα</translation>
+        <translation>Καμία συνδεδεμένη κάμερα</translation>
     </message>
     <message>
         <source>No supported webcams connected to the host PC</source>
-        <translation>Καμμία συνδεδεμένη υποστηριζόμενη κάμερα στον οικοδεσπότη</translation>
+        <translation>Καμία συνδεδεμένη υποστηριζόμενη κάμερα στον οικοδεσπότη</translation>
     </message>
     <message>
         <source>Create new virtual machine</source>
@@ -910,11 +910,11 @@
     </message>
     <message>
         <source>Save state of selected virtual machines</source>
-        <translation>Σώστε την κατάσταση της εικονικής μηχανής</translation>
+        <translation>Αποθήκευση της κατάστασης της εικονικής μηχανής</translation>
     </message>
     <message>
         <source>Send ACPI Shutdown signal to selected virtual machines</source>
-        <translation>Στείλτε το σήμα τερματισμού ACPI στην επιλεγμένη εικονική μηχανή</translation>
+        <translation>Αποστολή του σήματος τερματισμού ACPI στην επιλεγμένη εικονική μηχανή</translation>
     </message>
     <message>
         <source>Power off selected virtual machines</source>
@@ -922,39 +922,39 @@
     </message>
     <message>
         <source>&VirtualBox Bug Tracker...</source>
-        <translation type="unfinished"></translation>
+        <translation>Ιχνηλάτης Σφαλμάτων VirtualBox...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product bug tracker</source>
-        <translation type="unfinished"></translation>
+        <translation>Ανοίξτε τον πλοηγό και πηγαίνετε στον ιχνηλάτη σφαλμάτων του προϊόντος VirtualBox</translation>
     </message>
     <message>
         <source>&VirtualBox Forums...</source>
-        <translation type="unfinished"></translation>
+        <translation>Συζητήσεις VirtualBox...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product forums</source>
-        <translation type="unfinished"></translation>
+        <translation>Ανοίξτε τον πλοηγό και πηγαίνετε στις συζητήσεις του προϊόντος VirtualBox</translation>
     </message>
     <message>
         <source>&Oracle Web Site...</source>
-        <translation type="unfinished"></translation>
+        <translation>Ιστότοπος Oracle...</translation>
     </message>
     <message>
         <source>Open the browser and go to the Oracle web site</source>
-        <translation type="unfinished"></translation>
+        <translation>Ανοίξτε τον πλοηγό και πηγαίνετε στον ιστότοπο της Oracle</translation>
     </message>
     <message>
         <source>&Detach GUI</source>
-        <translation type="unfinished"></translation>
+        <translation>Απόσπαση από το γραφικό περιβάλλον</translation>
     </message>
     <message>
         <source>Detach the GUI from headless VM</source>
-        <translation type="unfinished"></translation>
+        <translation>Απόσπαση από το γραφικό περιβάλλον της ακέφαλης ΕΜ</translation>
     </message>
     <message>
         <source>Disable Dock Icon Overlay</source>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποίηση υπέρθεσης εικονίδιου γραμμής εργασιών</translation>
     </message>
 </context>
 <context>
@@ -1120,62 +1120,72 @@
     <name>UIApplianceUnverifiedCertificateViewer</name>
     <message>
         <source>Unverifiable Certificate! Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη Επιβεβαιώσιμο Πιστοποιητικό! Συνέχεια;</translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified self signed certificate issued by '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Η συσκευή είναι υπογεγραμμένη με μη επιβεβαιωμένο αυτο-υπογεγραμμένο πιστοποιητικό εκδομένο από '%1'. Προτείνεται να συνεχίσετε με την εισαγωγή μόνο αν είστε σίγουροι οτι εμπιστεύεστε αυτή την οντότητα.</b></translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified certificate issued to '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Η συσκευή είναι υπογεγραμμένη με μη επιβεβαιωμένο πιστοποιητικό εκδομένο από '%1'. Προτείνεται να συνεχίσετε με την εισαγωγή μόνο αν είστε σίγουροι οτι εμπιστεύεστε αυτή την οντότητα.</b></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
-        <translation type="unfinished"></translation>
+        <source>True</source>
+        <translation>Εκδότης:               %1</translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
-        <translation type="unfinished"></translation>
+        <source>False</source>
+        <translation>Θέμα:              %1</translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
-        <translation type="unfinished"></translation>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation>Μη Έγκυρο Πριν:     %1</translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
-        <translation type="unfinished"></translation>
+        <source>Issuer</source>
+        <translation>Μη Έγκυρο Μετά:      %1</translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
-        <translation type="unfinished"></translation>
+        <source>Subject</source>
+        <translation>Σειριακός Αριθμός:        %1</translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
-        <translation type="unfinished"></translation>
+        <source>Not Valid Before</source>
+        <translation>Αυτο-Υπογεγραμμένο:          %1</translation>
     </message>
     <message>
-        <source>True</source>
-        <translation type="unfinished"></translation>
+        <source>Not Valid After</source>
+        <translation>Αληθινό</translation>
     </message>
     <message>
-        <source>False</source>
-        <translation type="unfinished"></translation>
+        <source>Serial Number</source>
+        <translation>Λάθος</translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
-        <translation type="unfinished"></translation>
+        <source>Self-Signed</source>
+        <translation>Αρχή (CA):       %1</translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
-        <translation type="unfinished"></translation>
+        <source>Authority (CA)</source>
+        <translation>Δημόσιος Αλγόριθμος:     %1 (%2)</translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Public Algorithm</source>
+        <translation>Αλγόριθμος Υπογραφής:     %1 (%2)</translation>
+    </message>
+    <message>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation>Αριθμός έκδοσης X.509: %1</translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1245,62 +1255,62 @@
     <name>UIEmptyFilePathSelector</name>
     <message>
         <source>Choose...</source>
-        <translation type="unfinished">Επιλέξτε...</translation>
+        <translation>Επιλέξτε...</translation>
     </message>
 </context>
 <context>
     <name>UIFilePathSelector</name>
     <message>
         <source>&Copy</source>
-        <translation type="unfinished">Αντιγραφή</translation>
+        <translation>Αντιγραφή</translation>
     </message>
     <message>
         <source>Other...</source>
-        <translation type="unfinished">Άλλο...</translation>
+        <translation>Άλλο...</translation>
     </message>
     <message>
         <source>Reset</source>
-        <translation type="unfinished">Επαναφορά</translation>
+        <translation>Επαναφορά</translation>
     </message>
     <message>
         <source>Displays a window to select a different folder.</source>
-        <translation type="unfinished">Ανοίγει ένα παράθυρο για να διαλέξετε ένα διαφορετικό φάκελο.</translation>
+        <translation>Ανοίγει ένα παράθυρο για να διαλέξετε ένα διαφορετικό φάκελο.</translation>
     </message>
     <message>
         <source>Resets the folder path to the default value.</source>
-        <translation type="unfinished">Επαναφέρει τη διαδρομή φακέλου στην προεπιλεγμένη τιμή.</translation>
+        <translation>Επαναφέρει τη διαδρομή φακέλου στην προεπιλεγμένη τιμή.</translation>
     </message>
     <message>
         <source>Displays a window to select a different file.</source>
-        <translation type="unfinished">Ανοίγει ένα παράθυρο για να διαλέξετε ένα διαφορετικό αρχείο.</translation>
+        <translation>Ανοίγει ένα παράθυρο για να διαλέξετε ένα διαφορετικό αρχείο.</translation>
     </message>
     <message>
         <source>Resets the file path to the default value.</source>
-        <translation type="unfinished">Επαναφέρει τη διαδρομή αρχείου στην προεπιλεγμένη τιμή.</translation>
+        <translation>Επαναφέρει τη διαδρομή αρχείου στην προεπιλεγμένη τιμή.</translation>
     </message>
     <message>
         <source><reset to default></source>
-        <translation type="unfinished"><επαναφορά στα προεπιλεγμένα></translation>
+        <translation><επαναφορά στα προεπιλεγμένα></translation>
     </message>
     <message>
         <source>The actual default path value will be displayed after accepting the changes and opening this window again.</source>
-        <translation type="unfinished">Η πραγματική προεπιλεγμένη τιμή της διαδρομής θα εμφανιστεί αφού δεχτείτε τις αλλαγές και ξανανοίξετε αυτό το παράθυρο.</translation>
+        <translation>Η πραγματική προεπιλεγμένη τιμή της διαδρομής θα εμφανιστεί αφού δεχτείτε τις αλλαγές και ξανανοίξετε αυτό το παράθυρο.</translation>
     </message>
     <message>
         <source><not selected></source>
-        <translation type="unfinished"><μη επιλεγμένο></translation>
+        <translation><μη επιλεγμένο></translation>
     </message>
     <message>
         <source>Please use the <b>Other...</b> item from the drop-down list to select a path.</source>
-        <translation type="unfinished">Παρακαλώ χρησιμοποιήστε την επιλογή <b>Άλλο...</b> από τη λίστα για να διαλέξετε διαδρομή.</translation>
+        <translation>Παρακαλώ χρησιμοποιήστε την επιλογή <b>Άλλο...</b> από τη λίστα για να διαλέξετε διαδρομή.</translation>
     </message>
     <message>
         <source>Holds the folder path.</source>
-        <translation type="unfinished">Δείχνει τη διαδρομή φακέλου.</translation>
+        <translation>Δείχνει τη διαδρομή φακέλου.</translation>
     </message>
     <message>
         <source>Holds the file path.</source>
-        <translation type="unfinished">Δείχνει τη διαδρομή αρχείου.</translation>
+        <translation>Δείχνει τη διαδρομή αρχείου.</translation>
     </message>
 </context>
 <context>
@@ -1493,7 +1503,7 @@
     <message>
         <source>None</source>
         <comment>details (description)</comment>
-        <translation>Καμμία</translation>
+        <translation>Καμία</translation>
     </message>
     <message>
         <source>Operating System</source>
@@ -1538,12 +1548,12 @@
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details (display/vrde)</comment>
-        <translation>Θύρα διακομιστή απομακρυσμένης οθόνης</translation>
+        <translation>Θύρα διακομιστή απομακρυσμένης επιφάνειας</translation>
     </message>
     <message>
         <source>Remote Desktop Server</source>
         <comment>details (display/vrde)</comment>
-        <translation>Διακομιστής απομακρυσμένης οθόνης</translation>
+        <translation>Διακομιστής απομακρυσμένης επιφάνειας</translation>
     </message>
     <message>
         <source>Not Attached</source>
@@ -2242,7 +2252,7 @@
     </message>
     <message>
         <source>Host interface <b>%1</b> does not currently have a valid IPv6 network mask prefix length.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η κάρτα δικτύου <b>%1</b> δεν έχει έγκυρο μήκος προθέματος της μάσκας δικτύου IPv6.</translation>
     </message>
 </context>
 <context>
@@ -2434,27 +2444,27 @@
     </message>
     <message>
         <source>No proxy host is currently specified.</source>
-        <translation>Δεν καθορίστηκε διακομιστής μεσολάβησης.</translation>
+        <translation>Δεν καθορίστηκε διακομιστής διαμεσολάβησης.</translation>
     </message>
     <message>
         <source>No proxy port is currently specified.</source>
-        <translation>Δεν καθορίστηκε θύρα μεσολάβησης.</translation>
+        <translation>Δεν καθορίστηκε θύρα διαμεσολάβησης.</translation>
     </message>
     <message>
         <source>Holds the proxy host.</source>
-        <translation>Δείχνει τον διακομιστή μεσολάβησης.</translation>
+        <translation>Δείχνει τον διακομιστή διαμεσολάβησης.</translation>
     </message>
     <message>
         <source>Holds the proxy port.</source>
-        <translation>Δείχνει τον θύρα μεσολάβησης.</translation>
+        <translation>Δείχνει τον θύρα διαμεσολάβησης.</translation>
     </message>
     <message>
         <source>When chosen, VirtualBox will try to auto-detect host proxy settings for tasks like downloading Guest Additions from the network or checking for updates.</source>
-        <translation>Όταν επιλεγεί, το VirtualBox θα προσπαθήσει να εντοπίσει αυτόματα τις ρυθμίσεις μεσολάβησης του οικοδεσπότη για ενέργειες όπως το κατέβασμα των Προσθηκών Επισκέπτη ή τον έλεγχο ενημερώσεων.</translation>
+        <translation>Όταν επιλεγεί, το VirtualBox θα προσπαθήσει να εντοπίσει αυτόματα τις ρυθμίσεις διαμεσολάβησης του οικοδεσπότη για ενέργειες όπως το κατέβασμα των Προσθηκών Επισκέπτη ή τον έλεγχο ενημερώσεων.</translation>
     </message>
     <message>
         <source>&Auto-detect Host Proxy Settings</source>
-        <translation>Αυτόματη εντοπίση ρυθμίσεων μεσολάβησης του οικοδεσπότη</translation>
+        <translation>Αυτόματη εντοπίση ρυθμίσεων διαμεσολάβησης του οικοδεσπότη</translation>
     </message>
     <message>
         <source>When chosen, VirtualBox will use direct Internet connection for tasks like downloading Guest Additions from the network or checking for updates.</source>
@@ -2466,11 +2476,11 @@
     </message>
     <message>
         <source>When chosen, VirtualBox will use the proxy settings supplied for tasks like downloading Guest Additions from the network or checking for updates.</source>
-        <translation>Όταν επιλεγεί, το VirtualBox θα χρησιμοποιήσει τις παρεχόμενες ρυθμίσεις μεσολάβησης του οικοδεσπότη για ενέργειες όπως το κατέβασμα των Προσθηκών Επισκέπτη ή τον έλεγχο ενημερώσεων.</translation>
+        <translation>Όταν επιλεγεί, το VirtualBox θα χρησιμοποιήσει τις παρεχόμενες ρυθμίσεις διαμεσολάβησης του οικοδεσπότη για ενέργειες όπως το κατέβασμα των Προσθηκών Επισκέπτη ή τον έλεγχο ενημερώσεων.</translation>
     </message>
     <message>
         <source>&Manual Proxy Configuration</source>
-        <translation>Μη-αυτόματη ρύθμιση μεσολάβησης</translation>
+        <translation>Μη-αυτόματη ρύθμιση διαμεσολάβησης</translation>
     </message>
 </context>
 <context>
@@ -2543,7 +2553,7 @@
     </message>
     <message>
         <source>Right </source>
-        <translation>Δεξιά</translation>
+        <translation>Δεξιό </translation>
     </message>
     <message>
         <source>Left Shift</source>
@@ -2694,7 +2704,7 @@
     <message>
         <source><br><nobr><b>No USB devices attached</b></nobr></source>
         <comment>USB device tooltip</comment>
-        <translation><br><nobr><b>Καμμία συνδεδεμένη συσκευή USB</b></nobr></translation>
+        <translation><br><nobr><b>Καμία συνδεδεμένη συσκευή USB</b></nobr></translation>
     </message>
     <message>
         <source><p style='white-space:pre'><nobr>Indicates the activity of the machine's shared folders:</nobr>%1</p></source>
@@ -2760,17 +2770,17 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Ήχος</translation>
+        <translation type="vanished">Ήχος</translation>
     </message>
     <message>
         <source>Host Driver</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished">Οδηγός Οικοδεσπότη</translation>
+        <translation>Οδηγός Οικοδεσπότη</translation>
     </message>
     <message>
         <source>Controller</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished">Ελεγκτής</translation>
+        <translation>Ελεγκτής</translation>
     </message>
 </context>
 <context>
@@ -2778,62 +2788,62 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Οθόνη</translation>
+        <translation type="vanished">Οθόνη</translation>
     </message>
     <message>
         <source>Video Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished">Μνήμη Γραφικών</translation>
+        <translation>Μνήμη Γραφικών</translation>
     </message>
     <message>
         <source>Screens</source>
         <comment>details report</comment>
-        <translation type="unfinished">Οθόνες</translation>
+        <translation>Οθόνες</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ενεργοποιημένη</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένη</translation>
     </message>
     <message>
         <source>3D Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">3Δ Επιτάχυνση</translation>
+        <translation>3Δ Επιτάχυνση</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ενεργοποιημένη</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένη</translation>
     </message>
     <message>
         <source>2D Video Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">Επιτάχυνση 2Δ</translation>
+        <translation>Επιτάχυνση 2Δ</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Θύρα διακομιστή απομακρυσμένης επιφάνειας</translation>
     </message>
     <message>
         <source>Remote Desktop Server</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Διακομιστής απομακρυσμένης επιφάνειας</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένος</translation>
     </message>
 </context>
 <context>
@@ -2841,70 +2851,70 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Γενικά</translation>
+        <translation type="vanished">Γενικά</translation>
     </message>
     <message>
         <source>Name</source>
         <comment>details report</comment>
-        <translation type="unfinished">Όνομα</translation>
+        <translation>Όνομα</translation>
     </message>
     <message>
         <source>OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished">Τύπος ΛΣ</translation>
+        <translation>Τύπος ΛΣ</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Δίκτυο</translation>
+        <translation type="vanished">Δίκτυο</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Γεφυρωμένη κάρτα, %1</translation>
+        <translation>Γεφυρωμένη κάρτα, %1</translation>
     </message>
     <message>
         <source>Internal network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Εσωτερικό δίκτυο, '%1'</translation>
+        <translation>Εσωτερικό δίκτυο, '%1'</translation>
     </message>
     <message>
         <source>Host-only adapter, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Μόνο-με-οικοδεσπότη κάρτα, '%1'</translation>
+        <translation>Μόνο-με-οικοδεσπότη κάρτα, '%1'</translation>
     </message>
     <message>
         <source>Generic, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Γενικό, '%1'</translation>
+        <translation>Γενικό, '%1'</translation>
     </message>
     <message>
         <source>NAT network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Δίκτυο NAT, %1</translation>
+        <translation>Δίκτυο NAT, %1</translation>
     </message>
     <message>
         <source>Adapter %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Κάρτα δικτύου %1</translation>
+        <translation>Κάρτα δικτύου %1</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetworkStatistics</name>
     <message>
         <source>Data Transmitted</source>
-        <translation type="unfinished">Δεδομένα που στάλθηκαν</translation>
+        <translation>Δεδομένα που στάλθηκαν</translation>
     </message>
     <message>
         <source>Data Received</source>
-        <translation type="unfinished">Δεδομένα που λήφθηκαν</translation>
+        <translation>Δεδομένα που λήφθηκαν</translation>
     </message>
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Στατιστικά δικτύου</translation>
+        <translation type="vanished">Στατιστικά δικτύου</translation>
     </message>
 </context>
 <context>
@@ -2912,17 +2922,17 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Παράλληλες Θύρες</translation>
+        <translation type="vanished">Παράλληλες Θύρες</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished">Θύρα %1</translation>
+        <translation>Θύρα %1</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένες</translation>
     </message>
 </context>
 <context>
@@ -2930,84 +2940,84 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ιδιότητες Εκτέλεσης</translation>
+        <translation type="vanished">Ιδιότητες Εκτέλεσης</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
-        <translation type="unfinished"></translation>
+        <translation>Δεν εντοπίστηκαν</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest os type</comment>
-        <translation type="unfinished"></translation>
+        <translation>Δεν εντοπίστηκε</translation>
     </message>
     <message>
         <source>Not Available</source>
         <comment>details report (VRDE server port)</comment>
-        <translation type="unfinished">Μη διαθέσιμη</translation>
+        <translation>Μη διαθέσιμη</translation>
     </message>
     <message>
         <source>Screen Resolution</source>
-        <translation type="unfinished">Ανάλυση οθόνης</translation>
+        <translation>Ανάλυση οθόνης</translation>
     </message>
     <message>
         <source>VM Uptime</source>
-        <translation type="unfinished">Χρόνος λειτουργίας ΕΜ</translation>
+        <translation>Χρόνος λειτουργίας ΕΜ</translation>
     </message>
     <message>
         <source>Clipboard Mode</source>
-        <translation type="unfinished">Λειτουργία Κοινών Πρόχειρων</translation>
+        <translation>Λειτουργία Κοινών Πρόχειρων</translation>
     </message>
     <message>
         <source>Drag and Drop Mode</source>
-        <translation type="unfinished">Λειτουργία Μεταφοράς και Απόθεσης</translation>
+        <translation>Λειτουργία Μεταφοράς και Απόθεσης</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ένθετη σελιδοποίηση</translation>
+        <translation>Ένθετη σελιδοποίηση</translation>
     </message>
     <message>
         <source>Unrestricted Execution</source>
         <comment>details report</comment>
-        <translation type="unfinished">Μη-περιορισμένη εκτέλεση</translation>
+        <translation>Μη-περιορισμένη εκτέλεση</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">Διασύνδεση παραεικονοποίησης</translation>
+        <translation>Διασύνδεση παραεικονοποίησης</translation>
     </message>
     <message>
         <source>Guest Additions</source>
-        <translation type="unfinished">Προσθήκες Επισκέπτη</translation>
+        <translation>Προσθήκες Επισκέπτη</translation>
     </message>
     <message>
         <source>Guest OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished">Τύπος ΛΣ Επισκέπτη</translation>
+        <translation>Τύπος ΛΣ Επισκέπτη</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Θύρα διακομιστή απομακρυσμένης επιφάνειας</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Σειριακές Θύρες</translation>
+        <translation type="vanished">Σειριακές Θύρες</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
-        <translation type="unfinished">Θύρα %1</translation>
+        <translation>Θύρα %1</translation>
     </message>
 </context>
 <context>
@@ -3015,47 +3025,47 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Κοινοί Φάκελοι</translation>
+        <translation type="vanished">Κοινοί Φάκελοι</translation>
     </message>
     <message>
         <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
-        <translation type="unfinished">Κοινοί Φάκελοι</translation>
+        <translation>Κοινοί Φάκελοι</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Αποθήκευση</translation>
+        <translation type="vanished">Αποθήκευση</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
-        <translation type="unfinished">(Οπτική συσκευή)</translation>
+        <translation>(Οπτική συσκευή)</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorageStatistics</name>
     <message>
         <source>DMA Transfers</source>
-        <translation type="unfinished">Μεταφορές DMA</translation>
+        <translation>Μεταφορές DMA</translation>
     </message>
     <message>
         <source>PIO Transfers</source>
-        <translation type="unfinished">Μεταφορές PIO</translation>
+        <translation>Μεταφορές PIO</translation>
     </message>
     <message>
         <source>Data Read</source>
-        <translation type="unfinished">Δεδομένα που διαβάστηκαν</translation>
+        <translation>Δεδομένα που διαβάστηκαν</translation>
     </message>
     <message>
         <source>Data Written</source>
-        <translation type="unfinished">Δεδομένα που γράφηκαν</translation>
+        <translation>Δεδομένα που γράφηκαν</translation>
     </message>
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Στατιστικά αποθήκευσης</translation>
+        <translation type="vanished">Στατιστικά αποθήκευσης</translation>
     </message>
 </context>
 <context>
@@ -3063,107 +3073,107 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Σύστημα</translation>
+        <translation type="vanished">Σύστημα</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ενεργοποιημένο</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένο</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ενεργοποιημένο</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένο</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ενεργοποιημένο</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένο</translation>
     </message>
     <message>
         <source>Base Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished">Βασική Μνήμη</translation>
+        <translation>Βασική Μνήμη</translation>
     </message>
     <message>
         <source>Processor(s)</source>
         <comment>details report</comment>
-        <translation type="unfinished">Επεξεργαστής(ές)</translation>
+        <translation>Επεξεργαστής(ές)</translation>
     </message>
     <message>
         <source>Execution Cap</source>
         <comment>details report</comment>
-        <translation type="unfinished">Όριο εκτέλεσης</translation>
+        <translation>Όριο εκτέλεσης</translation>
     </message>
     <message>
         <source>Boot Order</source>
         <comment>details report</comment>
-        <translation type="unfinished">Σειρά εκκίνησης</translation>
+        <translation>Σειρά εκκίνησης</translation>
     </message>
     <message>
         <source>ACPI</source>
         <comment>details report</comment>
-        <translation type="unfinished">ACPI</translation>
+        <translation>ACPI</translation>
     </message>
     <message>
         <source>I/O APIC</source>
         <comment>details report</comment>
-        <translation type="unfinished">I/O APIC</translation>
+        <translation>I/O APIC</translation>
     </message>
     <message>
         <source>PAE/NX</source>
         <comment>details report</comment>
-        <translation type="unfinished">PAE/NX</translation>
+        <translation>PAE/NX</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ενεργοποιημένο</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένο</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Ενεργοποιημένη</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένη</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ένθετη σελιδοποίηση</translation>
+        <translation>Ένθετη σελιδοποίηση</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">Διασύνδεση παραεικονοποίησης</translation>
+        <translation>Διασύνδεση παραεικονοποίησης</translation>
     </message>
 </context>
 <context>
@@ -3171,22 +3181,22 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="vanished">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Απενεργοποιημένο</translation>
     </message>
     <message>
         <source>Device Filters</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">Φίλτρα Συσκευών</translation>
+        <translation>Φίλτρα Συσκευών</translation>
     </message>
     <message>
         <source>%1 (%2 active)</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">%1 (%2 ενεργό)</translation>
+        <translation>%1 (%2 ενεργό)</translation>
     </message>
 </context>
 <context>
@@ -3262,7 +3272,7 @@
     </message>
     <message>
         <source>When checked, the VM will act as a Remote Desktop Protocol (RDP) server, allowing remote clients to connect and operate the VM (when it is running) using a standard RDP client.</source>
-        <translation>Όταν επιλεγεί, η ΕΜ θα ενεργεί σαν διακομιστής απομακρυσμένης οθόνης (RDP server), επιτρέποντας σε απομακρυσμένους πελάτες να συνδεθούν και να διαχειριστούν την ΕΜ (όταν τρέχει) χρησιμοποιώντας κάποιο τυποποιημένο πρόγραμμα RDP.</translation>
+        <translation>Όταν επιλεγεί, η ΕΜ θα ενεργεί σαν διακομιστής απομακρυσμένης επιφάνειας (RDP server), επιτρέποντας σε απομακρυσμένους πελάτες να συνδεθούν και να διαχειριστούν την ΕΜ (όταν τρέχει) χρησιμοποιώντας κάποιο τυποποιημένο πρόγραμμα RDP.</translation>
     </message>
     <message>
         <source>&Enable Server</source>
@@ -3496,11 +3506,11 @@
     <name>UIMachineSettingsGeneral</name>
     <message>
         <source>Basi&c</source>
-        <translation>Βασικό</translation>
+        <translation>Βασικές</translation>
     </message>
     <message>
         <source>A&dvanced</source>
-        <translation>Προχωρημένο</translation>
+        <translation>Προχωρημένες</translation>
     </message>
     <message>
         <source>&Shared Clipboard:</source>
@@ -4156,7 +4166,7 @@
     </message>
     <message>
         <source>Use Host I/O Cache</source>
-        <translation>Χρήση προσωρινής μνήμης Ε/Ε οικοδεσπότη</translation>
+        <translation>Χρήση προμνήμης Ε/Ε οικοδεσπότη</translation>
     </message>
     <message>
         <source>Add SAS Controller</source>
@@ -4196,7 +4206,7 @@
     </message>
     <message>
         <source>Details:</source>
-        <translation>&Λεπτομέρειες:</translation>
+        <translation>Λεπτομέρειες:</translation>
     </message>
     <message>
         <source>at most one supported</source>
@@ -4356,7 +4366,7 @@
     </message>
     <message>
         <source>Add NVMe Controller</source>
-        <translation type="unfinished"></translation>
+        <translation>Προσθήκη Ελεγκτή NVMe</translation>
     </message>
 </context>
 <context>
@@ -4403,7 +4413,7 @@
     </message>
     <message>
         <source>Enable &I/O APIC</source>
-        <translation>Ενεργοποίηση πρωτόκολλο Εισόδου/Εξόδου APIC (I/O APIC)</translation>
+        <translation>Ενεργοποίηση πρωτοκόλλου Εισόδου/Εξόδου APIC (I/O APIC)</translation>
     </message>
     <message>
         <source>&Processor</source>
@@ -4483,7 +4493,7 @@
     </message>
     <message>
         <source>Determines whether the emulated pointing device is a standard PS/2 mouse, a USB tablet or a USB multi-touch tablet.</source>
-        <translation>Καθορίζει αν η εξομοιωμένη συσκευή του δείκτη είναι ένα τυπικό ποντίκι PS/2, ένα πινάκιο USB ή ένα πινάκιο USB πολλαπλής αφής.</translation>
+        <translation>Καθορίζει αν η εξομοιωμένη συσκευή του δείκτη είναι ένα τυπικό ποντίκι PS/2, μία ταμπλέτα USB ή ένα μία ταμπλέτα πολλαπλής αφής USB.</translation>
     </message>
     <message>
         <source>More than <b>%1%</b> of the host computer's memory (<b>%2</b>) is assigned to the virtual machine. Not enough memory is left for the host operating system. Please select a smaller amount.</source>
@@ -4565,7 +4575,7 @@
     </message>
     <message>
         <source>When checked, enables the virtual USB controller of this machine.</source>
-        <translation>Όταν επιλεγεί, ενεργοποιεί την ελεγκτή USB της εικονικής μηχανής.</translation>
+        <translation>Όταν επιλεγεί, ενεργοποιεί τον ελεγκτή USB της εικονικής μηχανής.</translation>
     </message>
     <message>
         <source>Enable &USB Controller</source>
@@ -4843,27 +4853,27 @@
     </message>
     <message>
         <source>This type of medium is attached directly or indirectly, preserved when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτό το είδος του μέσου προσαρτάται άμεσα ή έμμεσα, διατηρείται όταν παίρνονται στιγμιότυπα.</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, changes are wiped out the next time the virtual machine is started.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτό το είδος του μέσου προσαρτάται έμμεσα, οι αλλαγές διαγράφονται κατά την επόμενη εκκίνηση της εικονικής μηχανής.</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, ignored when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτό το είδος του μέσου προσαρτάται άμεσα, αγνοείται όταν παίρνονται στιγμιότυπα.</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, allowed to be used concurrently by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτό το είδος του μέσου προσαρτάται άμεσα, επιτρέποντας την ταυτόχρονη χρήση από μερικές μηχανές.</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, and can be used by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτό το είδος του μέσου προσαρτάται άμεσα, και μπορεί να χρησιμοποιηθεί από μερικές μηχανές.</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, so that one base medium can be used for several VMs which have their own differencing medium to store their modifications.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτό το είδος του μέσου προσαρτάται έμμεσα, έτσι ώστε το βασικό μέσο να μπορεί να χρησιμοποιηθεί για μερικές μηχανές οι οποίες χρησιμοποιούν το διαφορικό μέσο για να αποθηκεύουν τις τροποποιήσεις τους.</translation>
     </message>
 </context>
 <context>
@@ -4919,7 +4929,7 @@
     <message>
         <source>Do not show this message again</source>
         <comment>msg box flag</comment>
-        <translation>Να μην εμφανιστεί αυτό το μύνημα ξανά</translation>
+        <translation>Να μην εμφανιστεί αυτό το μήνυμα ξανά</translation>
     </message>
     <message>
         <source>Failed to open <tt>%1</tt>. Make sure your desktop environment can properly handle URLs of this type.</source>
@@ -5069,7 +5079,7 @@
     <message>
         <source>Callee&nbsp;RC: </source>
         <comment>error info</comment>
-        <translation type="unfinished"></translation>
+        <translation>Καλών&nbsp;RC: </translation>
     </message>
     <message>
         <source><p>Failed to remove the shared folder <b>%1</b> (pointing to <nobr><b>%2</b></nobr>) from the virtual machine <b>%3</b>.</p><p>Please close all programs in the guest OS that may be using this shared folder and try again.</p></source>
@@ -5140,15 +5150,15 @@
     </message>
     <message>
         <source><p>You have <b>clicked the mouse</b> inside the Virtual Machine display or pressed the <b>host key</b>. This will cause the Virtual Machine to <b>capture</b> the host mouse pointer (only if the mouse pointer integration is not currently supported by the guest OS) and the keyboard, which will make them unavailable to other applications running on your host machine.</p><p>You can press the <b>host key</b> at  [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Έχετε <b>κάνει κλικ στο ποντίκι</b> μέσα στην οθόνη της εικονικής μηχανής ή έχετε πατήσει το <b>κλειδί οικοδεσπότη</b>. Αυτό θα έχει ως αποτέλεσμα η εικονική μηχανή να <b>δεσμεύσει</b> τον δείκτη ποντικιού του οικοδεσπότη (μόνο αν η ενσωμάτωση του δείκτη ποντικιού δεν υποστηρίζεται προς το παρών από το λειτουργικό σύστημα του επισκέπτη) και το πληκτρολόγιο, το οποίο θα τα κάνει μη διαθέσιμα στις άλλες εφαρμογές που τρέχουν [...]
     </message>
     <message>
         <source><p>You have the <b>Auto capture keyboard</b> option turned on. This will cause the Virtual Machine to automatically <b>capture</b> the keyboard every time the VM window is activated and make it unavailable to other applications running on your host machine: when the keyboard is captured, all keystrokes (including system ones like Alt-Tab) will be directed to the VM.</p><p>You can press the <b>host key</b> at any time t [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Έχετε ενεργοποιήσει την <b>Αυτόματη Δέσμευση Πληκτρολογίου</b>. Αυτό θα κάνει την Εικονική Μηχανή (ΕΜ) να <b>δεσμεύσει</b> αυτόματα το πληκτρολόγιο κάθε φορά που ενεργοποιείται το παράθυρο της ΕΜ και θα το κάνει μη διαθέσιμο σε άλλες εφαρμογές που τρέχουν στον οικοδεσπότη: όταν δεσμεύται το πληκτρολόγιο, όλη η πληκτρολόγηση (συμπεριλαμβανομένου και του συστήματος όπως το Alt-Tab) κατευθύνεται στην ΕΜ.</p><p>Μπορείτε να πατ [...]
     </message>
     <message>
         <source><p>The Virtual Machine reports that the guest OS supports <b>mouse pointer integration</b>. This means that you do not need to <i>capture</i> the mouse pointer to be able to use it in your guest OS -- all mouse actions you perform when the mouse pointer is over the Virtual Machine's display are directly sent to the guest OS. If the mouse is currently captured, it will be automatically uncaptured.</p><p>The mouse icon on the s [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Η Εικονική Μηχανή αναφέρει οτι το λειτουργικό του επισκέπτη υποστηρίζει <b>ενσωμάτωση δείκτη ποντικιού</b>. Αυτό σημαίνει οτι δεν χρειάζεται να <i>δεσμεύσετε</i> τον δείκτη ποντικιού για να μπορέσετε να το χρησιμοποιήσετε στο λειτουργικό του επισκέπτη - όλες οι ενέργειες που πραγματοποιείται όταν ο δείκτης ποντικιού είναι πάνω από την οθόνη της Εικονικής Μηχανής στέλνονται κατευθείαν στο λειτουργικό του επισκέπτη. Αν το ποντίκι είναι  [...]
     </message>
     <message>
         <source>Release</source>
@@ -5232,7 +5242,7 @@
     </message>
     <message>
         <source><p>Deleting this host-only network will remove the host-only interface this network is based on. Do you want to remove the (host-only network) interface <nobr><b>%1</b>?</nobr></p><p><b>Note:</b> this interface may be in use by one or more virtual network adapters belonging to one of your VMs. After it is removed, these adapters will no longer be usable until you correct their settings by either choosing a different in [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Διαγράφωντας το δίκτυο μόνο-με-οικοδεσπότη θα αφαιρέσει την μόνο-με-οικοδεσπότη κάρτα στην οποία βασίζεται το δίκτυο. Θέλετε να αφαιρέσετε την κάρτα <nobr><b>%1</b>?</nobr></p><p><b>Σημείωση:</b> αυτή η κάρτα μπορεί να χρησιμοποιείται από ένα ή παραπάνω εικονικές κάρτες που ανήκουν σε κάποια από τις εικονικές σας μηχανές. Μετά την αφαίρεση, αυτές οι κάρτες δεν θα είναι ενεργές μέχρι να διορθώσετε τις ρυθμίσεις  [...]
     </message>
     <message>
         <source>A file named <b>%1</b> already exists. Are you sure you want to replace it?<br /><br />Replacing it will overwrite its contents.</source>
@@ -5349,7 +5359,7 @@
     </message>
     <message>
         <source>The current port forwarding rules are not valid. None of the host or guest port values may be set to zero.</source>
-        <translation>Οι τρέχοντες κανόνες προώθησης θυρών δεν είναι έγκυροι. Καμμία από τις θύρες του οικοδεσπότη ή του επισκέπτη δεν μπορεί να είναι μηδέν.</translation>
+        <translation>Οι τρέχοντες κανόνες προώθησης θυρών δεν είναι έγκυροι. Καμία από τις θύρες του οικοδεσπότη ή του επισκέπτη δεν μπορεί να είναι μηδέν.</translation>
     </message>
     <message>
         <source><p>There are unsaved changes in the port forwarding configuration.</p><p>If you proceed your changes will be discarded.</p></source>
@@ -5365,11 +5375,11 @@
     </message>
     <message>
         <source><p>The virtual machine window will be now switched to <b>Seamless</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>.</p><p>Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in seamless mode. You can access it by pressing <b>Host+Home</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το παράθυρο της εικονικής μηχανής θα αλλάξει τώρα σε λειτουργία <b>ενσωματωμένης οθόνης</b>. Μπορείτε να επιστρέψετε σε λειτουργία παραθύρου οποτεδήποτε πατώντας <b>%1</b>.</p><p>Σημειώστε οτι το κουμπί <i>Οικοδεσπότη</i> είναι καθορισμένο ως <b>%2</b>.</p><p>Σημειώστε οτι η γραμμή καταλόγου επιλογών είναι κρυμμένη σε λειτουργία ενσωματωμένης οθόνης. Μπορείτε να έχετε πρόσβαση σε αυτή πα [...]
     </message>
     <message>
         <source><p>The virtual machine window will be now switched to <b>Scale</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>.</p><p>Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in scaled mode. You can access it by pressing <b>Host+Home</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το παράθυρο της εικονικής μηχανής θα αλλάξει τώρα σε λειτουργία <b>κλιμακώμενης οθόνης</b>. Μπορείτε να επιστρέψετε σε λειτουργία παραθύρου οποτεδήποτε πατώντας <b>%1</b>.</p><p>Σημειώστε οτι το κουμπί <i>Οικοδεσπότη</i> είναι καθορισμένο ως <b>%2</b>.</p><p>Σημειώστε οτι η γραμμή καταλόγου επιλογών είναι κρυμμένη σε λειτουργία κλιμακώμενης οθόνης. Μπορείτε να έχετε πρόσβαση σε αυτή πατό [...]
     </message>
     <message>
         <source>Failed to open the Extension Pack <b>%1</b>.</source>
@@ -5377,11 +5387,11 @@
     </message>
     <message>
         <source><p>You are about to install a VirtualBox extension pack. Extension packs complement the functionality of VirtualBox and can contain system level software that could be potentially harmful to your system. Please review the description below and only proceed if you have obtained the extension pack from a trusted source.</p><p><table cellpadding=0 cellspacing=0><tr><td><b>Name:&nbsp;&nbsp;</b></td><td>%1< [...]
-        <translation><p>Πρόκειται να εγκαταστήσετε ένα Πακέτο Επέκτασης του VirtualBox. Τα Πακέτα Επέκτασης συμπληρώνουν τη λειτουργικότητα του VirtualBox και μπορεί να περιέχουν λογισμικό επιπέδου συστήματος, που μπορεί να είναι πιθανόν επικίνδυνο για το σύστημά σας. Παρακαλώ ξανακοιτάστε την περιγραφή και προχωρείστε μόνο αν έχετε πάρει το πακέτο από πηγή που εμπιστεύεστε.</p><p><table cellpadding=0 cellspacing=0><tr><td><b>Όνομα:&nbsp;&amp [...]
+        <translation><p>Πρόκειται να εγκαταστήσετε ένα Πακέτο Επέκτασης του VirtualBox. Τα Πακέτα Επέκτασης συμπληρώνουν τη λειτουργικότητα του VirtualBox και μπορεί να περιέχουν λογισμικό επιπέδου συστήματος, που μπορεί να είναι πιθανόν επικίνδυνο για το σύστημά σας. Παρακαλώ κοιτάξτε ξανά την περιγραφή και προχωρείστε μόνο αν έχετε πάρει το πακέτο από πηγή που εμπιστεύεστε.</p><p><table cellpadding=0 cellspacing=0><tr><td><b>Όνομα:&nbsp;&am [...]
     </message>
     <message>
         <source>Extension packs complement the functionality of VirtualBox and can contain system level software that could be potentially harmful to your system. Please review the description below and only proceed if you have obtained the extension pack from a trusted source.</source>
-        <translation>Τα Πακέτα Επέκτασης συμπληρώνουν τη λειτουργικότητα του VirtualBox και μπορεί να περιέχουν λογισμικό επιπέδου συστήματος, που μπορεί να είναι πιθανόν επικίνδυνο για το σύστημά σας. Παρακαλώ ξανακοιτάστε την περιγραφή και προχωρείστε μόνο αν έχετε πάρει το πακέτο από πηγή που εμπιστεύεστε.</translation>
+        <translation>Τα Πακέτα Επέκτασης συμπληρώνουν τη λειτουργικότητα του VirtualBox και μπορεί να περιέχουν λογισμικό επιπέδου συστήματος, που μπορεί να είναι πιθανόν επικίνδυνο για το σύστημά σας. Παρακαλώ κοιτάξτε ξανά την περιγραφή και προχωρείστε μόνο αν έχετε πάρει το πακέτο από πηγή που εμπιστεύεστε.</translation>
     </message>
     <message>
         <source><p>An older version of the extension pack is already installed, would you like to upgrade? <p>%1</p><p><table cellpadding=0 cellspacing=0><tr><td><b>Name:&nbsp;&nbsp;</b></td><td>%2</td></tr><tr><td><b>New Version:&nbsp;&nbsp;</b></td><td>%3</td></tr><tr><td><b>Current Version:&nbsp;&nbsp;</b></td& [...]
@@ -5449,11 +5459,11 @@
     </message>
     <message>
         <source><p>Error changing disk image mode from <b>%1</b> to <b>%2</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Λάθος αλλαγής λειτουργίας εικόνας δίσκου από <b>%1</b> σε <b>%2</b>.</p></translation>
     </message>
     <message>
         <source>Could not load the Host USB Proxy Service (VERR_FILE_NOT_FOUND). The service might not be installed on the host computer</source>
-        <translation>Δεν φορτώθηκε η υπηρεσία μεσολάβησης USB του οικοδεσπότη (VERR_FILE_NOT_FOUND). Η υπηρεσία μπορεί να μην έχει εγκατασταθεί στον υπολογιστή</translation>
+        <translation>Δεν φορτώθηκε η υπηρεσία διαμεσολάβησης USB του οικοδεσπότη (VERR_FILE_NOT_FOUND). Η υπηρεσία μπορεί να μην έχει εγκατασταθεί στον υπολογιστή</translation>
     </message>
     <message>
         <source>VirtualBox is not currently allowed to access USB devices.  You can change this by adding your user to the 'vboxusers' group.  Please see the user manual for a more detailed explanation</source>
@@ -5465,11 +5475,11 @@
     </message>
     <message>
         <source>The USB Proxy Service has not yet been ported to this host</source>
-        <translation>Η υπηρεσία μεσολάβησης USB του οικοδεσπότη δεν υποστηρίζεται σ' αυτόν τον οικοδεσπότη</translation>
+        <translation>Η υπηρεσία διαμεσολάβησης USB του οικοδεσπότη δεν υποστηρίζεται σ' αυτόν τον οικοδεσπότη</translation>
     </message>
     <message>
         <source>Could not load the Host USB Proxy service</source>
-        <translation>Δεν μπόρεσε να φορτωθεί η υπηρεσία μεσολάβησης USB του οικοδεσπότη</translation>
+        <translation>Δεν μπόρεσε να φορτωθεί η υπηρεσία διαμεσολάβησης USB του οικοδεσπότη</translation>
     </message>
     <message>
         <source>Can't find snapshot named <b>%1</b>.</source>
@@ -5502,27 +5512,27 @@
     </message>
     <message>
         <source><p>Failed to initialize COM because the VirtualBox global configuration directory <b><nobr>%1</nobr></b> is not accessible. Please check the permissions of this directory and of its parent directory.</p><p>The application will now terminate.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αποτυχία αρχικοποίησης COM επειδή ο φάκελος γενικών ρυθμίσεων του VirtualBox <b><nobr>%1</nobr></b> δεν είναι προσβάσιμος. Παρακαλώ ελέγξτε την προσβασιμότητα του φακέλου καθώς και του φακέλου στον οποίο ανήκει.</p><p>Η εφαρμογή θα τερματιστεί τώρα.</p></translation>
     </message>
     <message>
         <source><p>You are about to remove following virtual machine items from the machine list:</p><p><b>%1</b></p><p>Do you wish to proceed?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Πρόκειται να αφαιρέσετε τα ακόλουθα στοιχεία εικονικής μηχανής από τη λίστα των μηχανών:</p><p><b>%1</b></p><p>Επιθυμείτε να συνεχίσετε;</p></translation>
     </message>
     <message>
         <source><p>You are about to remove following inaccessible virtual machines from the machine list:</p><p>%1</p><p>Do you wish to proceed?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Πρόκειται να αφαιρέσετε τις ακόλουθες μη προσβάσιμες εικονικές μηχανές από τη λίστα των μηχανών:</p><p><b>%1</b></p><p>Επιθυμείτε να συνεχίσετε;</p></translation>
     </message>
     <message>
         <source><p>You are about to remove following virtual machines from the machine list:</p><p>%1</p><p>Would you like to delete the files containing the virtual machine from your hard disk as well? Doing this will also remove the files containing the machine's virtual hard disks if they are not in use by another machine.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Πρόκειται να αφαιρέσετε τις ακόλουθες εικονικές μηχανές από τη λίστα των μηχανών:</p><p><b>%1</b></p><p>Θέλετε να διαγράψετε τα αρχεία που περιέχουν την εικονική μηχανή και από το σκληρό σας δίσκο; Αν το κάνετε αυτό θα αφαιρεθούν τα αρχεία που περιέχουν τους εικονικούς δίσκους της μηχανής αν δεν χρησιμοποιούνται από από άλλη μηχανή.</p></translation>
     </message>
     <message>
         <source><p>You are about to remove following virtual machines from the machine list:</p><p>%1</p><p>Would you like to delete the files containing the virtual machine from your hard disk as well?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Πρόκειται να αφαιρέσετε τις ακόλουθες εικονικές μηχανές από τη λίστα των μηχανών:</p><p>%1</p><p><p>Θέλετε να διαγράψετε τα αρχεία που περιέχουν την εικονική μηχανή και από το σκληρό σας δίσκο;</p></translation>
     </message>
     <message>
         <source>Do you wish to cancel all current network operations?</source>
-        <translation type="unfinished"></translation>
+        <translation>Θέλετε να ακυρώσετε όλες τις δικτυακές ενέργειες?</translation>
     </message>
     <message>
         <source>ACPI Shutdown</source>
@@ -5536,19 +5546,19 @@
     </message>
     <message>
         <source><p>Cannot remove the machine folder <nobr><b>%1</b>.</nobr></p><p>Please check that this folder really exists and that you have permissions to remove it.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Δεν μπορεί να διαγραφεί ο φάκελος της μηχανής <nobr><b>%1</b>.</nobr></p><p>Παρακαλώ ελέγξτε οτι ο φάκελος υπάρχει και έχετε δικαίωμα να τον διαγράψετε.</p></translation>
     </message>
     <message>
         <source><p>Cannot create the machine folder <b>%1</b> in the parent folder <nobr><b>%2</b>.</nobr></p><p>This folder already exists and possibly belongs to another machine.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Δεν μπορεί να δημιουργηθεί ο φάκελος για τη μηχανή <b>%1</b> στο γονικό φάκελο <nobr><b>%2</b>.</nobr></p><p>Ο φάκελος υπάρχει ήδη και μάλλον ανήκει σε άλλη μηχανή.</p></translation>
     </message>
     <message>
         <source><p>Are you sure you want to discard the saved state of the following virtual machines?</p><p><b>%1</b></p><p>This operation is equivalent to resetting or powering off the machine without doing a proper shutdown of the guest OS.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να αναιρέσετε τη σωσμένη κατάσταση των ακόλουθων εικονικών μηχανών;</p><p><b>%1</b></p><p>Η ενέργεια αυτή είναι ισοδύναμη με το να επανεφέρετε ή να σβήνετε τη μηχανή χωρίς κανονικό τερματισμό του λειτουργικού του επισκέπτη.</p></translation>
     </message>
     <message>
         <source><p>Do you really want to reset the following virtual machines?</p><p><b>%1</b></p><p>This will cause any unsaved data in applications running inside it to be lost.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Θέλετε σίγουρα να επαναφέρετε τις ακόλουθες εικονικές μηχανές;</p><p><b>%1</b></p><p>Αυτό θα προκαλέσει την απώλεια των μη αποθηκευμένων δεδομένων στις εφαρμογές που τρέχουν στις μηχανές.</p></translation>
     </message>
     <message>
         <source><p>Do you really want to send an ACPI shutdown signal to the following virtual machines?</p><p><b>%1</b></p></source>
@@ -5556,15 +5566,15 @@
     </message>
     <message>
         <source><p>Do you really want to power off the following virtual machines?</p><p><b>%1</b></p><p>This will cause any unsaved data in applications running inside it to be lost.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Θέλετε σίγουρα να σβήσετε τις ακόλουθες εικονικές μηχανές;</p><p><b>%1</b></p><p>Αυτό θα προκαλέσει την απώλεια των μη αποθηκευμένων δεδομένων στις εφαρμογές που τρέχουν στις μηχανές.</p></translation>
     </message>
     <message>
         <source><p>You are trying to move machine <nobr><b>%1</b></nobr> to group <nobr><b>%2</b></nobr> which already have sub-group <nobr><b>%1</b></nobr>.</p><p>Please resolve this name-conflict and try again.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Προσπαθείτε να μετακινήσετε τη μηχανή <nobr><b>%1</b></nobr> στην ομάδα <nobr><b>%2</b></nobr> που έχει ήδη την υπο-ομάδα <nobr><b>%1</b></nobr>.</p><p>Παρακαλώ επιλύστε την διαφορά και προσπαθήστε ξανά.</p></translation>
     </message>
     <message>
         <source><p>You are trying to move group <nobr><b>%1</b></nobr> to group <nobr><b>%2</b></nobr> which already have another item with the same name.</p><p>Would you like to automatically rename it?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Προσπαθείτε να μετακινήσετε την ομάδα <nobr><b>%1</b></nobr> στην ομάδα <nobr><b>%2</b></nobr> που έχει ήδη ένα αντικείμενο με το ίδιο όνομα.</p><p>Θέλετε να το μετονομάσετε αυτόματα;</p></translation>
     </message>
     <message>
         <source>Rename</source>
@@ -5572,19 +5582,19 @@
     </message>
     <message>
         <source><p>You are about to restore snapshot <nobr><b>%1</b></nobr>.</p><p>You can create a snapshot of the current state of the virtual machine first by checking the box below; if you do not do this the current state will be permanently lost. Do you wish to proceed?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε έτοιμοι να επαναφέρετε το στιγμιότυπο <nobr><b>%1</b></nobr>.</p><p>Μπορείτε να δημιουργήσετε πρώτα ένα στιγμιότυπο της τρέχουσας κατάστασης της εικονικής μηχανής ενεργοποιώντας το κουτί πιο κάτω· αν δεν το κάνετε η τρέχουσα κατάσταση θα χαθεί μόνιμα. Θέλετε να προχωρήσετε;</p></translation>
     </message>
     <message>
         <source><p>Are you sure you want to restore snapshot <nobr><b>%1</b></nobr>?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να επαναφέρετε το στιγμιότυπο <nobr><b>%1</b></nobr>;</p></translation>
     </message>
     <message>
         <source>Failed to set groups of the virtual machine <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία ορισμού ομάδων της εικονικής μηχανής <b>%1</b>.</translation>
     </message>
     <message>
         <source><p>Could not start the machine <b>%1</b> because the following physical network interfaces were not found:</p><p><b>%2</b></p><p>You can either change the machine's network settings or stop the machine.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδύνατη η εκκίνηση της μηχανής <b>%1</b> επειδή δεν βρέθηκαν οι ακόλουθες κάρτες δικτύου:</p><p><b>%2</b></p><p>Μπορείτε είτε να αλλάξετε τις ρυθμίσεις του δικτύου της μηχανής ή να σταματήσετε τη μηχανή.</p></translation>
     </message>
     <message>
         <source>Change Network Settings</source>
@@ -5592,19 +5602,19 @@
     </message>
     <message>
         <source><p>Cannot start the VirtualBox Manager due to local restrictions.</p><p>The application will now terminate.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδύνατη η εκκίνηση του Διαχειριστή VirtualBox εξαιτίας τοπικών περιορισμών.</p><p>Η εφαρμογή θα τερματιστεί τώρα.</p></translation>
     </message>
     <message>
         <source><p>Could not find a language file for the language <b>%1</b> in the directory <b><nobr>%2</nobr></b>.</p><p>The language will be temporarily reset to the system default language. Please go to the <b>Preferences</b> window which you can open from the <b>File</b> menu of the VirtualBox Manager window, and select one of the existing languages on the <b>Language</b> page.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Δεν βρέθηκε αρχείο γλώσσας για τη γλώσσα <b>%1</b> στο φάκελο <b><nobr>%2</nobr></b>.</p><p>Η γλώσσα θα επανέρθει προσωρινά στην προεπιλεγμένη γλώσσα του συστήματος. Παρακαλώ πηγαίντε στις <b>Ρυθμίσεις</b> που μπορείτε να επιλέξετε από τη γραμμή επιλογών του Διαχειριστή VirtualBox, και να επιλέξετε μία από τις υπάρχουσες γλώσσες στη σελίδα <b>Γλώσσα</b>.</p></translation>
     </message>
     <message>
         <source><p>Could not load the language file <b><nobr>%1</nobr></b>. <p>The language will be temporarily reset to English (built-in). Please go to the <b>Preferences</b> window which you can open from the <b>File</b> menu of the VirtualBox Manager window, and select one of the existing languages on the <b>Language</b> page.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Δεν μπόρεσε να φορτωθεί το αρχείο γλώσσας <b><nobr>%1</nobr></b>. <p>Η γλώσσα θα επανέρθει προσωρινά στα Αγγλικά (εγγενής). Παρακαλώ πηγαίντε στις <b>Ρυθμίσεις</b> που μπορείτε να επιλέξετε από τη γραμμή επιλογών του Διαχειριστή VirtualBox, και να επιλέξετε μία από τις υπάρχουσες γλώσσες στη σελίδα <b>Γλώσσα</b>.</p></translation>
     </message>
     <message>
         <source>There is no virtual machine with the identifier <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν υπάρχει εικονική μηχανή με το αναγνωριστικό  <b>%1</b>.</translation>
     </message>
     <message>
         <source>Ignore</source>
@@ -5612,23 +5622,23 @@
     </message>
     <message>
         <source>Failed to create NAT network.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία δημιουργίας δικτύου NAT.</translation>
     </message>
     <message>
         <source>Failed to remove NAT network <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία αφαίρεσης του δικτύου NAT <b>%1</b>.</translation>
     </message>
     <message>
         <source>Failed to create DHCP server.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία δημιουργίας διακομιστή DHCP.</translation>
     </message>
     <message>
         <source>Failed to remove DHCP server for network interface <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία αφαίρεσης του διακομιστή DHCP για την κάρτα δικτύου <b>%1</b>.</translation>
     </message>
     <message>
         <source>Failed to create the host network interface.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία δημιουργίας της κάρτας δικτύου του οικοδεσπότη.</translation>
     </message>
     <message>
         <source>Create &new disk</source>
@@ -5648,50 +5658,50 @@
     </message>
     <message>
         <source><p>Are you sure you want to remove the virtual hard disk <nobr><b>%1</b></nobr> from the list of known disk image files?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να αφαιρέσετε τον εικονικό σκληρό δίσκο <nobr><b>%1</b></nobr> από τη λίστα των γνωστών αρχείων εικόνας δίσκου;</p></translation>
     </message>
     <message>
         <source><p>As this hard disk is inaccessible its image file can not be deleted.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Μιας και αυτός ο σκληρός δίσκος δεν είναι προσβάσιμος το αρχείο του δεν μπορεί να διαγραφεί.</p></translation>
     </message>
     <message>
         <source><p>Are you sure you want to remove the virtual optical disk <nobr><b>%1</b></nobr> from the list of known disk image files?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να αφαιρέσετε τον εικονικό οπτικό δίσκο <nobr><b>%1</b></nobr> από τη λίστα των γνωστών αρχείων εικόνας δίσκου;</p></translation>
     </message>
     <message>
         <source><p>Are you sure you want to remove the virtual floppy disk <nobr><b>%1</b></nobr> from the list of known disk image files?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να αφαιρέσετε την εικονική δισκέτα <nobr><b>%1</b></nobr> από τη λίστα των γνωστών αρχείων εικόνας δίσκου;</p></translation>
     </message>
     <message>
         <source><p>Unable to insert the virtual optical disk <nobr><b>%1</b></nobr> into the machine <b>%2</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδυναμία εισαγωγής του εικονικού οπτικού δίσκου <nobr><b>%1</b></nobr> στη μηχανή <b>%2</b>.</p></translation>
     </message>
     <message>
         <source><p>Would you like to try to force insertion of this disk?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Θέλετε να δοκιμάσετε την επιβολή εισαγωγής αυτού του δίσκου;</p></translation>
     </message>
     <message>
         <source><p>Unable to eject the virtual optical disk <nobr><b>%1</b></nobr> from the machine <b>%2</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδυναμία εξαγωγής του εικονικού οπτικού δίσκου <nobr><b>%1</b></nobr> από τη μηχανή <b>%2</b>.</p></translation>
     </message>
     <message>
         <source><p>Would you like to try to force ejection of this disk?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Θέλετε να δοκιμάσετε την επιβολή εξαγωγής αυτού του δίσκου;</p></translation>
     </message>
     <message>
         <source><p>Unable to insert the virtual floppy disk <nobr><b>%1</b></nobr> into the machine <b>%2</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδυναμία εισαγωγής της εικονικής δισκέτας <nobr><b>%1</b></nobr> στη μηχανή <b>%2</b>.</p></translation>
     </message>
     <message>
         <source><p>Unable to eject the virtual floppy disk <nobr><b>%1</b></nobr> from the machine <b>%2</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδυναμία εξαγωγής της εικονικής δισκέτας <nobr><b>%1</b></nobr> από τη μηχανή <b>%2</b>.</p></translation>
     </message>
     <message numerus="yes">
         <source><p>The %n following virtual machine(s) are currently in a saved state: <b>%1</b></p><p>If you continue the runtime state of the exported machine(s) will be discarded. The other machine(s) will not be changed.</p></source>
         <comment>This text is never used with n == 0. Feel free to drop the %n where possible, we only included it because of problems with Qt Linguist (but the user can see how many machines are in the list and doesn't need to be told).</comment>
-        <translation type="unfinished">
-            <numerusform></numerusform>
-            <numerusform></numerusform>
+        <translation>
+            <numerusform><p>Η ακόλουθη εικονική μηχανή είναι σε μη αποθηκευμένη κατάσταση: <b>%1</b></p><p>Αν συνεχίσετε η κατάσταση εκτέλεσης της εξαγώμενης μηχανής θα αποριφθεί. Οι άλλες μηχανές δεν θα αλλάξουν.</p></numerusform>
+            <numerusform><p>Οι ακόλουθες %n εικονικές μηχανές είναι σε μη αποθηκευμένη κατάσταση: <b>%1</b></p><p>Αν συνεχίσετε η κατάσταση εκτέλεσης των εξαγώμενων μηχανών θα αποριφθεί. Οι άλλες μηχανές δεν θα αλλάξουν.</p></numerusform>
         </translation>
     </message>
     <message>
@@ -5700,11 +5710,13 @@
     </message>
     <message>
         <source>Failed to enable the remote desktop server for the virtual machine <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Διακομιστής απομακρυσμένης επιφάνειας</translatorcomment>
+        <translation>Αποτυχία ενεργοποίησης του διακομιστή απομακρυσμένης επιφάνειας για την εικονική μηχανή <b>%1</b>.</translation>
     </message>
     <message>
         <source>Failed to disable the remote desktop server for the virtual machine <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>Διακομιστής απομακρυσμένης επιφάνειας</translatorcomment>
+        <translation>Αποτυχία απενεργοποίησης του διακομιστή απομακρυσμένης επιφάνειας για την εικονική μηχανή <b>%1</b>.</translation>
     </message>
     <message>
         <source>Failed to enable video capturing for the virtual machine <b>%1</b>.</source>
@@ -5716,7 +5728,7 @@
     </message>
     <message>
         <source><p>Could not find the <b>VirtualBox Guest Additions</b> disk image file.</p><p>Do you wish to download this disk image file from the Internet?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδυναμία εύρεσης του αρχείου εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b>.</p><p>Θέλετε να κατεβάσετε αυτό το αρχείο εικόνας δίσκου από το δίκτυο;</p></translation>
     </message>
     <message>
         <source>Download</source>
@@ -5724,27 +5736,27 @@
     </message>
     <message>
         <source><p>Are you sure you want to download the <b>VirtualBox Guest Additions</b> disk image file from <nobr><a href="%1">%1</a></nobr> (size %2 bytes)?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να κατεβάσετε το αρχείο εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b> από το <nobr><a href="%1">%1</a></nobr> (μεγέθους %2 bytes);</p></translation>
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> but can't be saved locally as <nobr><b>%2</b>.</nobr></p><p>Please choose another location for that file.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το αρχείο εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b> κατέβηκε επιτυχώς από <nobr><a href="%1">%1</a></nobr> αλλά δεν μπορεί να αποθηκευθεί τοπικά ως <nobr><b>%2</b>.</nobr></p><p>Παρακαλώ επιλέξτε μία άλλη τοποθεσία για αυτό το αρχείο.</p></translation>
     </message>
     <message>
         <source><p>Could not find the <b>VirtualBox User Manual</b> <nobr><b>%1</b>.</nobr></p><p>Do you wish to download this file from the Internet?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδυναμία εύρεσης του <b>Εγχειρίδιου Χρήσης του VirtualBox</b> <nobr><b>%1</b>.</nobr></p><p>Θέλετε να κατεβάσετε αυτό το αρχείο από το δίκτυο;</p></translation>
     </message>
     <message>
         <source><p>Are you sure you want to download the <b>VirtualBox User Manual</b> from <nobr><a href="%1">%1</a></nobr> (size %2 bytes)?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να κατεβάσετε το <b>Εγχειρίδιο χρήσης του VirtualBox</b> από <nobr><a href="%1">%1</a></nobr> (μεγέθους %2 bytes);</p></translation>
     </message>
     <message>
         <source><p>The VirtualBox User Manual has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> but can't be saved locally as <nobr><b>%2</b>.</nobr></p><p>Please choose another location for that file.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το εγχειρίδιο χρήσης του VirtualBox κατέβηκε επιτυχώς από <nobr><a href="%1">%1</a></nobr> αλλά δεν μπορεί να αποθηκευτεί τοπικά ως <nobr><b>%2</b>.</nobr></p><p>Παρακαλώ επιλέξτε μια άλλη τοποθεσία για αυτό το αρχείο.</p></translation>
     </message>
     <message>
         <source><p>The VirtualBox User Manual has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>.</nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το εγχειρίδιο χρήσης του VirtualBox κατέβηκε επιτυχώς από <nobr><a href="%1">%1</a></nobr> και αποθηκεύτηκε τοπικά ως <nobr><b>%2</b>.</nobr></p></translation>
     </message>
     <message>
         <source>Close</source>
@@ -5756,23 +5768,23 @@
     </message>
     <message>
         <source>Do not show this message again</source>
-        <translation>Να μην εμφανιστεί αυτό το μύνημα ξανά</translation>
+        <translation>Να μην εμφανιστεί αυτό το μήνυμα ξανά</translation>
     </message>
     <message>
         <source><p>Do you want to remove the NAT network <nobr><b>%1</b>?</nobr></p><p>If this network is in use by one or more virtual machine network adapters these adapters will no longer be usable until you correct their settings by either choosing a different network name or a different adapter attachment type.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Θέλετε να αφαιρέσετε το δίκτυο NAT <nobr><b>%1</b>q</nobr></p><p>Αν αυτό το δίκτυο χρησιμοποιείται από μία ή περισσότερες κάρτες δικτύου της εικονικής μηχανής τότε αυτές δεν θα είναι δυνατό να χρησιμοποιηθούν μέχρι να διορθωθούν οι ρυθμίσεις τους, είτε επιλέγοντας ένα διαφορετικό όνομα δικτύου είτε ένα διαφορετικό τρόπο σύνδεσης της κάρτας.</p></translation>
     </message>
     <message>
         <source>Failed to attach the webcam <b>%1</b> to the virtual machine <b>%2</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία σύνδεσης της κάμερας <b>%1</b> στην εικονική μηχανή <b>%2</b>.</translation>
     </message>
     <message>
         <source>Failed to detach the webcam <b>%1</b> from the virtual machine <b>%2</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία αποσύνδεσης της κάμερας <b>%1</b> από την εικονική μηχανή <b>%2</b>.</translation>
     </message>
     <message>
         <source><p>The VirtualBox Guest Additions do not appear to be available on this virtual machine, and shared folders cannot be used without them. To use shared folders inside the virtual machine, please install the Guest Additions if they are not installed, or re-install them if they are not working correctly, by selecting <b>Insert Guest Additions CD image</b> from the <b>Devices</b> menu. If they are installed but the machine is not yet fully starte [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Οι Προσθήκες Επισκέπτη του VirtualBox δεν φαίνεται να είναι διαθέσιμες σε αυτή την εικονική μηχανή, και οι κοινοί φάκελοι δεν μπορούν να χρησιμοποιηθούν χωρίς αυτές. Για να χρησιμοποιήσετε κοινούς φακέλους στην εικονική μηχανή παρακαλώ εγκαταστείστε τις Προσθήκες Επισκέπτη αν δεν είναι εγκατεστημένες, ή επανεγκαταστείστε τες αν δεν λειτουργούν σωστά, επιλέγοντας <b>Εισάγετε τον δίσκο με τις Προσθήκες Επισκέπτη</b> από το κατάλογο επιλογών <b&g [...]
     </message>
     <message>
         <source>Insert</source>
@@ -5781,159 +5793,159 @@
     </message>
     <message>
         <source><p>The virtual screen is currently set to a <b>%1&nbsp;bit</b> color mode. For better performance please change this to <b>%2&nbsp;bit</b>. This can usually be done from the <b>Display</b> section of the guest operating system's Control Panel or System Settings.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Η εικονική οθόνη έχει οριστεί σε λειτουργία χρώματος <b>%1&nbsp;bit</b>. Για καλύτερη απόδοση παρακαλώ αλλάξτε τη σε <b>%2&nbsp;bit</b>. Αυτό μπορεί να γίνει συνήθως από το τμήμα <b>Οθόνη</b> του Πίνακα Ελέγχου ή τις Ρυθμίσεις Συστήματος του λειτουργικού συστήματος του επισκέπτη.</p></translation>
     </message>
     <message>
         <source>The current port forwarding rules are not valid. Rule names should be unique.</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι τρέχοντες κανόνες προώθησης θυρών δεν είναι έγκυροι. Τα ονόματα των κανόνων πρέπει να είναι μοναδικά.</translation>
     </message>
     <message>
         <source>The current port forwarding rules are not valid. Few rules have same host ports and conflicting IP addresses.</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι τρέχοντες κανόνες προώθησης θυρών δεν είναι έγκυροι. Κάποιοι κανόνες έχουν τις ίδιες πόρτες με τον οικοδεσπότη και συγκρουόμενες διευθύνσεις IP.</translation>
     </message>
     <message>
         <source><p>Failed to create the VirtualBoxClient COM object.</p><p>The application will now terminate.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αποτυχία δημιουργίας του αντικειμένου COM του VirtualBoxClient.</p><p>Η εφαρμογή θα τερματιστεί τώρα.</p></translation>
     </message>
     <message>
         <source>Failed to set the global VirtualBox extra data for key <i>%1</i> to value <i>{%2}</i>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία ορισμού των επιπλέον καθολικών δεδομένων του VirtualBox για το κλειδί <i>%1</i> στην τιμή <i>{%2}</i>.</translation>
     </message>
     <message>
         <source>Failed to set the extra data for key <i>%1</i> of machine <i>%2</i> to value <i>{%3}</i>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία ορισμού των επιπλέον δεδομένων του κλειδιού <i>%1</i> της μηχανής <i>%2</i> στην τιμή <i>{%3}</i>.</translation>
     </message>
     <message>
         <source>Failed to save the settings.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία αποθήκευσης των ρυθμίσεων.</translation>
     </message>
     <message>
         <source><p>You are about to add a new optical drive to controller <b>%1</b>.</p><p>Would you like to choose a virtual optical disk to put in the drive or to leave it empty for now?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Θα προσθέσετε ένα νέο οπτικό δίσκο στον ελεγκτή <b>%1</b>.</p><p>Θέλετε να διαλέξετε έναν εικονικό οπτικό δίσκο ή να τον αφήσετε κενό προς το παρών;</p></translation>
     </message>
     <message>
         <source><p>Are you sure you want to delete the optical drive?</p><p>You will not be able to insert any optical disks or ISO images or install the Guest Additions without it!</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να διαγράψετε τον οπτικό δίσκο;</p><p>Δεν θα μπορείτε να εισάγετε κανένα οπτικό δίσκο ή αρχείο ISO ή να εγκαταστήσετε τις Προσθήκες Επισκέπτη χωρίς αυτόν!</p></translation>
     </message>
     <message>
         <source>Failed to attach the optical drive (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία προσάρτησης του οπτικού δίσκου (<nobr><b>%1</b></nobr>) στη θυρίδα <i>%2</i> της μηχανής <b>%3</b>.</translation>
     </message>
     <message>
         <source>Failed to attach the floppy drive (<nobr><b>%1</b></nobr>) to the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία προσάρτησης του οδηγού δισκέτας (<nobr><b>%1</b></nobr>) στη θυρίδα <i>%2</i> της μηχανής <b>%3</b>.</translation>
     </message>
     <message>
         <source>Failed to detach the optical drive (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία αποπροσάρτησης του οπτικού δίσκου (<nobr><b>%1</b></nobr>) από τη θυρίδα <i>%2</i> της μηχανής <b>%3</b>.</translation>
     </message>
     <message>
         <source>Failed to detach the floppy drive (<nobr><b>%1</b></nobr>) from the slot <i>%2</i> of the machine <b>%3</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία αποπροσάρτησης του οδηγού δισκέτας (<nobr><b>%1</b></nobr>) από τη θυρίδα <i>%2</i> της μηχανής <b>%3</b>.</translation>
     </message>
     <message>
         <source><p>Could not insert the <b>VirtualBox Guest Additions</b> disk image file into the virtual machine <b>%1</b>, as the machine has no optical drives. Please add a drive using the storage page of the virtual machine settings window.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αδυναμία εισαγωγής του αρχείο εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b> στην εικονική μηχανή <b>%1</b>, γιατί η εικονική μηχανή δεν έχει οπτικούς οδηγούς. Παρακαλώ προσθέστε έναν οδηγό χρησιμοποιώντας τη σελίδα αποθήκευσης στο παράθυρο ρυθμίσεων της εικονικής μηχανής.</p></translation>
     </message>
     <message>
         <source><p>The <b>VirtualBox Guest Additions</b> disk image file has been successfully downloaded from <nobr><a href="%1">%1</a></nobr> and saved locally as <nobr><b>%2</b>.</nobr></p><p>Do you wish to register this disk image file and insert it into the virtual optical drive?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το αρχείο εικόνας δίσκου <b>Προσθήκες Επισκέπτη του VirtualBox</b> κατέβηκε επιτυχώς από <nobr><a href="%1">%1</a></nobr> και αποθηκεύτηκε επιτυχώς ως <nobr><b>%2</b>.</nobr></p><p>Θέλετε να καταχωρήσετε αυτό το αρχείο εικόνας δίσκου και να το εισάγετε στον εικονικό οπτικό οδηγό;</p></translation>
     </message>
     <message>
         <source>Bad password or authentication failure.</source>
-        <translation type="unfinished"></translation>
+        <translation>Λάθος κωδικός ή αποτυχία πιστοποίησης.</translation>
     </message>
     <message>
         <source><p>A critical error has occurred while running the virtual machine and the machine execution has been stopped.</p><p>For help, please see the Community section on <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> or your support contract. Please provide the contents of the log file <tt>VBox.log</tt> and the image file <tt>VBox.png</tt>, which you can find in the <nobr><b>%1</b></nob [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Ένα κριτικό λάθος προέκυψε κατά τη διάρκεια λειτουργίας της εικονικής μηχανής και η εκτέλεση της μηχανής έχει σταματήσει.</p><p>Για βοήθεια, παρακαλώ δείτε στην Κοινότητα σχετικά <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> ή στο συμβόλαιο υποστήριξης. Παρακαλώ παρέχετε τα περιοχόμενα του αρχείου καταγραφής <tt>VBox.log</tt> και την εικόνα <tt>VBox.png</tt>, που μπορείτε να βρείτε στο φάκελ [...]
     </message>
     <message>
         <source><p>A critical error has occurred while running the virtual machine and the machine execution should be stopped.</p><p>For help, please see the Community section on <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> or your support contract. Please provide the contents of the log file <tt>VBox.log</tt>, which you can find in the virtual machine log directory, as well as a description of what you were doing when this  [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Ένα σημαντικό λάθος προέκυψε κατά τη διάρκεια λειτουργίας της εικονικής μηχανής και η εκτέλεση της μηχανής θα πρέπει να έχει σταματήσει.</p><p>Για βοήθεια, παρακαλώ δείτε στην Κοινότητα σχετικά <a href=https://www.virtualbox.org>https://www.virtualbox.org</a> ή στο συμβόλαιο υποστήριξης. Παρακαλώ παρέχετε τα περιοχόμενα του αρχείου καταγραφής <tt>VBox.log</tt>, που μπορείτε να βρείτε στο φάκελο καταγραφής της εικονικής μηχ [...]
     </message>
     <message>
         <source><p>A new version of VirtualBox has been released! Version <b>%1</b> is available at <a href="https://www.virtualbox.org/">virtualbox.org</a>.</p><p>You can download this version using the link:</p><p><a href=%2>%3</a></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Μία νέα έκδοση του VirtualBox είναι διαθέσιμη! Η έκδοση <b>%1</b> είναι διαθέσιμη στο <a href="https://www.virtualbox.org/">virtualbox.org</a>.</p><p>Μπορείτε να κατεβάσετε αυτή την έκδοση χρησιμοποιώντας το δεσμό:</p><p><a href=%2>%3</a></p></translation>
     </message>
     <message>
         <source>Drag and drop operation from host to guest failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η λειτουργία μεταφοράς και απόθεσης από τον οικοδεσπότη στον επισκέπτη απέτυχε.</translation>
     </message>
     <message>
         <source>Unable to cancel host to guest drag and drop operation.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αδυναμία ακύρωσης λειτουργίας μεταφοράς και απόθεσης από τον οικοδεσπότη στον επισκέπτη.</translation>
     </message>
     <message>
         <source>Drag and drop operation from guest to host failed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η λειτουργία μεταφοράς και απόθεσης από τον επισκέπτη στον οικοδεσπότη απέτυχε.</translation>
     </message>
     <message>
         <source>Failed to connect the network adapter cable of the virtual machine <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία σύνδεσης του καλωδίου της κάρτας δικτύου της εικονικής μηχανής <b>%1</b>.</translation>
     </message>
     <message>
         <source>Failed to disconnect the network adapter cable of the virtual machine <b>%1</b>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία αποσύνδεσης του καλωδίου της κάρτας δικτύου της εικονικής μηχανής <b>%1</b>.</translation>
     </message>
     <message>
         <source><p>One or more disk image files are not currently accessible. As a result, you will not be able to operate virtual machines that use these files until they become accessible later.</p><p>Press <b>Check</b> to open the Virtual Media Manager window and see which files are inaccessible, or press <b>Ignore</b> to ignore this message.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Ένα ή περισσότερα αρχεία εικόνας δίσκου είναι προσωρινά μη διαθέσιμα. Το ποτέλεσμα είναι οτι δεν θα μπορείτε να λειτουργήσετε τις εικονικές μηχανές που χρησιμοποιούν αυτά τα αρχεία μέχρι να γίνουν διαθέσιμα αργότερα.</p><p>Πατήστε <b>Έλεγχος</b> για να ανοίξετε το παράθυρο του διαχειριστή εικονικών μέσων και να δείτε ποια αρχεία είναι μη προσβάσιμα, ή πατήστε <b>Αγνοήστε</b> για να αγνοήσετε αυτό το μήνυμα.</p></tran [...]
     </message>
     <message>
         <source><p>Deleting the snapshot will cause the state information saved in it to be lost, and storage data spread over several image files that VirtualBox has created together with the snapshot will be merged into one file. This can be a lengthy process, and the information in the snapshot cannot be recovered.</p></p>Are you sure you want to delete the selected snapshot <b>%1</b>?</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Διαγράφοντας το στιγμιότυπο θα έχει ως αποτέλεσμα να χαθούν οι πληροφορίες που είναι αποθηκευμένες στο στιγμιοτύπο, και οι πληροφορίες του μέσου που είναι μοιρασμένες σε διαφορετικά αρχεία εικόνας που το VirtualBox έχει δημιουργήσει μαζί με το στιγμιότυπο θα συγχωνευθούν σε ένα αρχείο. Αυτό μπορεί να είναι μία μακροχρόνια διαδικασία, και οι πληροφορίες στα στιγμιότυπα δεν μπορούν να ανακτηθούν.</p></p>Είστε σίγουροι οτι θέλετε να διαγράψετε το επ [...]
     </message>
     <message>
         <source><p>Deleting the snapshot %1 will temporarily need more storage space. In the worst case the size of image %2 will grow by %3, however on this filesystem there is only %4 free.</p><p>Running out of storage space during the merge operation can result in corruption of the image and the VM configuration, i.e. loss of the VM and its data.</p><p>You may continue with deleting the snapshot at your own risk.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Διαγραφή του στιγμιοτύπου %1 απαιτεί προσωρινά περισσότερο αποθηκευτικό χώρο. Στη χειρότερη περίπτωση το μέγεθος της εικόνας %2 θα μεγαλώσει κατά %3, ωστόσο σε αυτό το σύστημα αρχείων υπάρχουν μόνο %4 ελεύθερα.</p><p>Η έλλειψη αποθηκευτικού χώρου κατά τη διαδικασία συγχώνευσης μπορεί να προκαλέσει αλλοίωση της εικόνας και των ρυθμίσεων της ΕΜ, δηλαδή απώλεια της ΕΜ και των δεδομένων της.</p><p>Μπορείτε να προχωρήσετε στη διαγραφή του  [...]
     </message>
     <message>
         <source><p>Are you sure you want to release the disk image file <nobr><b>%1</b></nobr>?</p><p>This will detach it from the following virtual machine(s): <b>%2</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Είστε σίγουροι οτι θέλετε να απελευθερώσετε το αρχείο εικόνας δίσκου <nobr><b>%1</b></nobr>;</p><p>Αυτό θα το αποσυνδέσει από την ακόλουθη εικονική μηχανή(ές): <b>%2</b>.</p></translation>
     </message>
     <message>
         <source><p>Do you want to delete the storage unit of the virtual hard disk <nobr><b>%1</b></nobr>?</p><p>If you select <b>Delete</b> then the specified storage unit will be permanently deleted. This operation <b>cannot be undone</b>.</p><p>If you select <b>Keep</b> then the hard disk will be only removed from the list of known hard disks, but the storage unit will be left untouched which mak [...]
-        <translation type="unfinished"></translation>
+        <translation><p>Θέλετε να διαγράψετε τη μονάδα αποθήκευσης από τον εικονικό σκληρό δίσκο <nobr><b>%1</b></nobr>;</p><p>Αν επιλέξετε <b>Διαγραφή</b> τότε η συγκεκριμένη μονάδα αποθήκευσης θα διαγραφεί οριστικά. Αυτή η ενέργεια <b>δεν γίνεται να αναιρεθεί</b>.</p><p>Αν επιλέξετε <b>Διατήρηση</b> τότε ο σκληρός δίσκος θα αφαιρεθεί μόνο από τη λίστα γνωστών σκληρών δίσκων, αλλά η μονάδα αποθήκευ [...]
     </message>
     <message>
         <source>Failed to open the disk image file <nobr><b>%1</b></nobr>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία ανοίγματος του αρχείου εικόνας δίσκου <nobr><b>%1</b></nobr>.</translation>
     </message>
     <message>
         <source>Failed to close the disk image file <nobr><b>%1</b></nobr>.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία κλεισίματος του αρχείου εικόνας δίσκου <nobr><b>%1</b></nobr>.</translation>
     </message>
     <message>
         <source>You are about to create a new virtual machine without a hard disk. You will not be able to install an operating system on the machine until you add one. In the mean time you will only be able to start the machine using a virtual optical disk or from the network.</source>
-        <translation type="unfinished"></translation>
+        <translation>Πρόκειται να δημιουργήσετε μία νέα εικονική μηχανή χωρίς σκληρό δίσκο. Δεν θα είναι δυνατή η εγκατάσταση ενός λειτουργικού συστήματος στη μηχανή έως ότου προσθέσετε έναν. Στο μεταξύ θα είναι δυνατή η έναρξη της εικονικής μηχανής χρησιμοποιώντας ένα εικονικό οπτικό δίσκο ή από το δίκτυο.</translation>
     </message>
     <message>
         <source><p>The virtual machine window will be now switched to <b>full-screen</b> mode. You can go back to windowed mode at any time by pressing <b>%1</b>.</p><p>Note that the <i>Host</i> key is currently defined as <b>%2</b>.</p><p>Note that the main menu bar is hidden in full-screen mode. You can access it by pressing <b>Host+Home</b>.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Το παράθυρο της εικονικής μηχανής θα αλλάξει τώρα σε λειτουργία <b>πλήρους οθόνης</b>. Μπορείτε να επιστρέψετε σε λειτουργία παραθύρου οποτεδήποτε πατώντας <b>%1</b>.</p><p>Σημειώστε οτι το κουμπί <i>Οικοδεσπότη</i> είναι καθορισμένο ως <b>%2</b>.</p><p>Σημειώστε οτι η γραμμή καταλόγου επιλογών είναι κρυμμένη σε λειτουργία πλήρους οθόνης. Μπορείτε να έχετε πρόσβαση σε αυτή πατόντας <b [...]
     </message>
     <message>
         <source><p>Could not switch the guest display to full-screen mode due to insufficient guest video memory.</p><p>You should configure the virtual machine to have at least <b>%1</b> of video memory.</p><p>Press <b>Ignore</b> to switch to full-screen mode anyway or press <b>Cancel</b> to cancel the operation.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Δεν μπορεί να αλλάξει η οθόνη του επισκέπτη σε λειτουργία πλήρης οθόνης λόγω ανεπαρκούς μνήμης γραφικών.</p><p>Πρέπει να ρυθμίσετε την εικονική μηχανή ώστε να έχει τουλάχιστον <b>%1</b> μνήμη γραφικών.</p><p>Πατήστε <b>Αγνοήστε</b> για να αλλάξετε την οθόνη ούτως ή άλλως ή πατήστε <b>Άκυρο</b> για να ακυρώσετε τη διαδικασία.</p></translation>
     </message>
     <message>
         <source>Encryption password for <nobr>ID = '%1'</nobr> is invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο κωδικός κωδικοποίησης για <nobr>ID = '%1'</nobr> δεν είναι έγκυρος.</translation>
     </message>
     <message>
         <source>The current port forwarding rules are not valid. All of the host or guest address values should be correct or empty.</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι τρέχοντες κανόνες προώθησης θύρας δεν είναι έγκυροι.Όλες οι τιμές διεύθυνσης οικοδεσπότη ή επισκέπτη πρέπει να είναι έγκυρες ή κενές.</translation>
     </message>
     <message>
         <source>The current port forwarding rules are not valid. None of the guest address values may be empty.</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι τρέχοντες κανόνες προώθησης θυρών δεν είναι έγκυροι. Καμία από τις θύρες του οικοδεσπότη ή του επισκέπτη δεν μπορεί να είναι κενή.</translation>
     </message>
     <message>
         <source><p>VT-x/AMD-V hardware acceleration is not available on your system. Your 64-bit guest will fail to detect a 64-bit CPU and will not be able to boot.</source>
-        <translation type="unfinished"></translation>
+        <translation><p>Η επιτάχυνση εξοπλισμού VT-x/AMD-V δεν είναι διαθέσιμη στο σύστημά σας. Ο 64-bit επισκέπτης θα αποτύχει να δει τον επεξεργαστή σαν 64-bit και δεν θα ξεκινήσει.</translation>
     </message>
     <message>
         <source><p>Failed to acquire the VirtualBox COM object.</p><p>The application will now terminate.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Αποτυχία δημιουργίας του αντικειμένου COM του VirtualBoxClient.</p><p>Η εφαρμογή θα τερματιστεί τώρα.</p></translation>
     </message>
 </context>
 <context>
@@ -5994,7 +6006,7 @@
     </message>
     <message>
         <source>Holds the location of the virtual machine.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δείχνει το όνομα της εικονικής μηχανής.</translation>
     </message>
 </context>
 <context>
@@ -6097,7 +6109,7 @@
     </message>
     <message>
         <source>Proxy not found</source>
-        <translation>Δεν βρέθεκε μεσολάβηση</translation>
+        <translation>Δεν βρέθεκε διαμεσολαβητής</translation>
     </message>
     <message>
         <source>Url not found on the server</source>
@@ -6108,7 +6120,7 @@
     <name>UINetworkReplyPrivateThread</name>
     <message>
         <source>During proxy configuration</source>
-        <translation>Κατά τη διάρκεια της ρύθμισης μεσολάβησης</translation>
+        <translation>Κατά τη διάρκεια της ρύθμισης διαμεσολάβησης</translation>
     </message>
     <message>
         <source>During certificate downloading</source>
@@ -6202,12 +6214,12 @@
     <message>
         <source>%1, %2 remaining</source>
         <comment>You may wish to translate this more like "Time remaining: %1, %2"</comment>
-        <translation>%1, %2 παραμένει</translation>
+        <translation>%1, %2 παραμένουν</translation>
     </message>
     <message>
         <source>%1 remaining</source>
         <comment>You may wish to translate this more like "Time remaining: %1"</comment>
-        <translation>%1 παραμένει</translation>
+        <translation>%1 παραμένουν</translation>
     </message>
 </context>
 <context>
@@ -6235,7 +6247,7 @@
     </message>
     <message>
         <source><h3>Welcome to VirtualBox!</h3><p>The left part of this window is  a list of all virtual machines on your computer. The list is empty now because you haven't created any virtual machines yet.<img src=:/welcome.png align=right/></p><p>In order to create a new virtual machine, press the <b>New</b> button in the main tool bar located at the top of the window.</p><p>You can press the <b>%1</b> key to [...]
-        <translation><h3>Καλώς ήρθατε στο VirtualBox!</h3><p>Το αριστερό τμήμα του παραθύρου περιέχει ένα κατάλογο με όλες τις εικονικές μηχανές στον υπολογιστή σας. Ο κατάλογος είναι άδειος τώρα γιατί δεν έχετε δημιουργήσει ακόμα καμμία εικονική μηχανή.<img src=:/welcome.png align=right/></p><p>Για να δημιουργήσετε μία καινούρια εικονική μηχανή, πατήστε το κουμπί <b>Νέα</b> στον γραμμή εργαλείων που βρίσκεται στο πάνω μέρος του παραθύρου.& [...]
+        <translation><h3>Καλώς ήρθατε στο VirtualBox!</h3><p>Το αριστερό τμήμα του παραθύρου περιέχει ένα κατάλογο με όλες τις εικονικές μηχανές στον υπολογιστή σας. Ο κατάλογος είναι άδειος τώρα γιατί δεν έχετε δημιουργήσει ακόμα καμία εικονική μηχανή.<img src=:/welcome.png align=right/></p><p>Για να δημιουργήσετε μία καινούρια εικονική μηχανή, πατήστε το κουμπί <b>Νέα</b> στον γραμμή εργαλείων που βρίσκεται στο πάνω μέρος του παραθύρου.&l [...]
     </message>
 </context>
 <context>
@@ -6296,7 +6308,7 @@
     </message>
     <message>
         <source>Proxy</source>
-        <translation>Μεσολάβηση</translation>
+        <translation>Διαμεσολάβηση</translation>
     </message>
     <message>
         <source>Display</source>
@@ -6466,7 +6478,7 @@
     <name>UIUpdateStepVirtualBox</name>
     <message>
         <source>Checking for a new VirtualBox version...</source>
-        <translation>Έλεγχος για νεότερη έκδοση του VirtualBox</translation>
+        <translation>Έλεγχος για νεότερη έκδοση του VirtualBox...</translation>
     </message>
 </context>
 <context>
@@ -6493,11 +6505,11 @@
     </message>
     <message>
         <source>S&end the shutdown signal</source>
-        <translation>Στείλτε το σήμα τερματισμού</translation>
+        <translation>Αποστολή του σήματος τερματισμού</translation>
     </message>
     <message>
         <source><p>Turns off the virtual machine.</p><p>Note that this action will stop machine execution immediately so that the guest operating system running inside it will not be able to perform a clean shutdown procedure which may result in <i>data loss</i> inside the virtual machine. Selecting this action is recommended only if the virtual machine does not respond to the <b>Send the shutdown signal</b> action.</p></source>
-        <translation><p>Σβήστε την εικονική μηχανή.</p><p>Σημειώνεται οτι αυτή η ενέργεια θα σταματήσει την εκτέλεση της μηχανής αμέσως και το λειτουργικό σύστημα του επισκέπτη δεν θα μπορέσει να ακολουθήσει μία κανονική διαδικασία τερματισμού, το οποίο μπορεί να έχει αποτέλεσμα την <i>απώλεια δεδομένων</i> στην εικονική μηχανή. Επιλογή αυτής της ενέργειας μόνο αν η εικονική μηχανή δεν ανταποκρίνεται στην ενέργεια <b>Στείλτε το σήμα τερματισμού</b&g [...]
+        <translation><p>Σβήστε την εικονική μηχανή.</p><p>Σημειώνεται οτι αυτή η ενέργεια θα σταματήσει την εκτέλεση της μηχανής αμέσως και το λειτουργικό σύστημα του επισκέπτη δεν θα μπορέσει να ακολουθήσει μία κανονική διαδικασία τερματισμού, το οποίο μπορεί να έχει αποτέλεσμα την <i>απώλεια δεδομένων</i> στην εικονική μηχανή. Επιλογή αυτής της ενέργειας μόνο αν η εικονική μηχανή δεν ανταποκρίνεται στην ενέργεια <b>Αποστολή του σήματος τερματισμού&lt [...]
     </message>
     <message>
         <source>&Power off the machine</source>
@@ -6528,7 +6540,7 @@
     <name>UIVMDesktop</name>
     <message>
         <source>&Details</source>
-        <translation>&Λεπτομέρειες</translation>
+        <translation>Λεπτομέρειες</translation>
     </message>
     <message>
         <source>&Snapshots</source>
@@ -6637,22 +6649,22 @@
     <name>UIVMInformationDialog</name>
     <message>
         <source>%1 - Session Information</source>
-        <translation type="unfinished">%1 - Πληροφορίες συνεδρίας</translation>
+        <translation>%1 - Πληροφορίες συνεδρίας</translation>
     </message>
     <message>
         <source>Configuration &Details</source>
-        <translation type="unfinished">Λεπτομέρειες Ρυθμίσεων</translation>
+        <translation>Λεπτομέρειες Ρυθμίσεων</translation>
     </message>
     <message>
         <source>&Runtime Information</source>
-        <translation type="unfinished">Πληροφορίες Εκτέλεσης</translation>
+        <translation>Πληροφορίες Εκτέλεσης</translation>
     </message>
 </context>
 <context>
     <name>UIVMListView</name>
     <message>
         <source>Inaccessible</source>
-        <translation>Μη προσβάσιμο</translation>
+        <translation>Μη προσβάσιμη</translation>
     </message>
     <message>
         <source><nobr>%1<br></nobr><nobr>%2 since %3</nobr><br><nobr>Session %4</nobr></source>
@@ -6705,7 +6717,7 @@
     </message>
     <message>
         <source>String not found</source>
-        <translation>Η ακολουθία δε βρέθηκε</translation>
+        <translation>Η ακολουθία δεν βρέθηκε</translation>
     </message>
     <message>
         <source><p>No log files found. Press the <b>Refresh</b> button to rescan the log folder <nobr><b>%1</b></nobr>.</p></source>
@@ -6733,15 +6745,15 @@
     </message>
     <message>
         <source>Filter</source>
-        <translation type="unfinished"></translation>
+        <translation>Φίλτρο</translation>
     </message>
     <message>
         <source>Enter filtering string here</source>
-        <translation type="unfinished"></translation>
+        <translation>Εισάγετε μία ακολουθία φίλτρου</translation>
     </message>
     <message>
         <source>Fil&ter</source>
-        <translation type="unfinished"></translation>
+        <translation>Φίλτρο</translation>
     </message>
 </context>
 <context>
@@ -6860,7 +6872,7 @@
     </message>
     <message>
         <source><p>You can also choose to <b>split</b> the hard disk file into several files of up to two gigabytes each. This is mainly useful if you wish to store the virtual machine on removable USB devices or old systems, some of which cannot handle very large files.</source>
-        <translation type="unfinished"></translation>
+        <translation><p>Μπορείτε επίσης να επιλέξετε να <b>χωρίσετε</b> το αρχείο του σκληρού δίσκου σε αρχεία μέγιστου μεγέθους 2 gigabytes το καθένα. Αυτό είναι κυρίως χρήσιμο αν θέλετε να αποθηκεύσετε την εικονική μηχανή σε αποσπώμενη συσκευή USB ή σε παλιά συστήματα, μερικά απ' τα οποία δεν διαχειρίζονται πολύ μεγάλα αρχεία.</translation>
     </message>
 </context>
 <context>
@@ -7214,31 +7226,31 @@
     </message>
     <message>
         <source>Appliance is not signed</source>
-        <translation type="unfinished"></translation>
+        <translation>Η συσκευή δεν είναι υπογεγραμμένη</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>Η συσκευή είναι υπογεγραμμένη από %1 (εμπιστεύσιμο)</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>Η συσκευή είναι υπογεγραμμένη από %1 (έχει λήξει!)</translation>
     </message>
     <message>
         <source>Unverified signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη επιβεβαιωμένη υπογραφή από %1!</translation>
     </message>
     <message>
         <source>Self signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτο-υπογεγραμμένη από %1 (εμπιστεύσιμο)</translation>
     </message>
     <message>
         <source>Self signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτο-υπογεγραμμένη από %1 (έχει λήξει!)</translation>
     </message>
     <message>
         <source>Unverified self signed signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη επιβεβαιωμένη αυτο-υπογραφή από %1!</translation>
     </message>
 </context>
 <context>
@@ -7325,7 +7337,7 @@
     </message>
     <message>
         <source><p>You can also choose to <b>split</b> the hard disk file into several files of up to two gigabytes each. This is mainly useful if you wish to store the virtual machine on removable USB devices or old systems, some of which cannot handle very large files.</source>
-        <translation type="unfinished"></translation>
+        <translation><p>Μπορείτε επίσης να επιλέξετε να <b>χωρίσετε</b> το αρχείο του σκληρού δίσκου σε αρχεία μέγιστου μεγέθους 2 gigabytes το καθένα. Αυτό είναι κυρίως χρήσιμο αν θέλετε να αποθηκεύσετε την εικονική μηχανή σε αποσπώμενη συσκευή USB ή σε παλιά συστήματα, μερικά απ' τα οποία δεν διαχειρίζονται πολύ μεγάλα αρχεία.</translation>
     </message>
 </context>
 <context>
@@ -7384,11 +7396,11 @@
     </message>
     <message>
         <source><p><nobr>Holds the name or full path to the virtual machine folder you are about to create.</nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>Δείχνει την πλήρη διαδρομή του φακέλου της εικονικής μηχανής που θα δημιουργήσετε.</nobr></p></translation>
     </message>
     <message>
         <source><p><nobr>You are about to create the virtual machine in the following folder:</nobr><br><nobr><b>%1</b></nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>Πρόκειται να δημιουργήσετε την εικονική μηχανή στον ακόλουθο φάκελο:</nobr><br><nobr><b>%1</b></nobr></p></translation>
     </message>
 </context>
 <context>
@@ -7643,7 +7655,7 @@
     <message>
         <source>None</source>
         <comment>DeviceType</comment>
-        <translation>Καμμία</translation>
+        <translation>Καμία</translation>
     </message>
     <message>
         <source>Floppy</source>
@@ -7738,7 +7750,7 @@
     <message>
         <source>Disabled</source>
         <comment>ClipboardType</comment>
-        <translation>Απενεργοποιημένο</translation>
+        <translation>Απενεργοποιημένα</translation>
     </message>
     <message>
         <source>Host To Guest</source>
@@ -7753,7 +7765,7 @@
     <message>
         <source>Bidirectional</source>
         <comment>ClipboardType</comment>
-        <translation>Αμφίδρομο</translation>
+        <translation>Αμφίδρομα</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -7808,7 +7820,7 @@
     <message>
         <source>User-defined</source>
         <comment>serial port</comment>
-        <translation>Καθορισμένο από τον χρήστη</translation>
+        <translation>Καθορισμένη από τον χρήστη</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
@@ -8362,7 +8374,7 @@
     <message>
         <source>Unlocked</source>
         <comment>SessionState</comment>
-        <translation>Ξεκλειδωμένο</translation>
+        <translation>Ξεκλειδωμένη</translation>
     </message>
     <message>
         <source>Locked</source>
@@ -8431,7 +8443,7 @@
     <message>
         <source>Disabled</source>
         <comment>DragAndDropType</comment>
-        <translation>Απενεργοποιημένο</translation>
+        <translation>Απενεργοποιημένη</translation>
     </message>
     <message>
         <source>Host To Guest</source>
@@ -8446,7 +8458,7 @@
     <message>
         <source>Bidirectional</source>
         <comment>DragAndDropType</comment>
-        <translation>Αμφίδρομο</translation>
+        <translation>Αμφίδρομη</translation>
     </message>
     <message>
         <source>Normal</source>
@@ -8774,7 +8786,7 @@
     <message>
         <source>None</source>
         <comment>ParavirtProvider</comment>
-        <translation>Καμμία</translation>
+        <translation>Καμία</translation>
     </message>
     <message>
         <source>Default</source>
@@ -8849,7 +8861,7 @@
     <message>
         <source>Optical</source>
         <comment>DeviceType</comment>
-        <translation>Οπτικό</translation>
+        <translation>Οπτικός Δίσκος</translation>
     </message>
     <message>
         <source>TCP</source>
@@ -8915,26 +8927,106 @@
     <message>
         <source>USB</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished">USB</translation>
+        <translation>USB</translation>
     </message>
     <message>
         <source>PCIe</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished"></translation>
+        <translation>PCIe</translation>
     </message>
     <message>
         <source>NVMe</source>
         <comment>StorageControllerType</comment>
-        <translation type="unfinished"></translation>
+        <translation>NVMe</translation>
     </message>
     <message>
         <source>NVMe Port %1</source>
         <comment>StorageSlot</comment>
-        <translation type="unfinished"></translation>
+        <translation>Θύρα NVMe %1</translation>
     </message>
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
+        <translation type="vanished">ΙδιότητεςΕκτέλεσης</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Γενικά</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Προεπισκόπηση</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Σύστημα</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Οθόνη</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Αποθήκευση</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ήχος</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Δίκτυο</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Σειριακές Θύρες</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Παράλληλες Θύρες</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Κοινοί φάκελοι</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Περιβάλλον χρήστη</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Περιγραφή</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -9119,7 +9211,7 @@
     </message>
     <message>
         <source>D&etails:</source>
-        <translation>&Λεπτομέρειες:</translation>
+        <translation>Λεπτομέρειες:</translation>
     </message>
 </context>
 <context>
@@ -9260,12 +9352,12 @@
     <message>
         <source><no devices available></source>
         <comment>USB devices</comment>
-        <translation><καμμία διαθέσιμη συσκευή></translation>
+        <translation><καμία διαθέσιμη συσκευή></translation>
     </message>
     <message>
         <source>No supported devices connected to the host PC</source>
         <comment>USB device tooltip</comment>
-        <translation>Καμμία συνδεδεμένη υποστηριζόμενη συσκευή στον οικοδεσπότη</translation>
+        <translation>Καμία συνδεδεμένη υποστηριζόμενη συσκευή στον οικοδεσπότη</translation>
     </message>
 </context>
 </TS>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
index 0f3617a..dc2f40e 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_es.ts
@@ -1786,27 +1786,27 @@
     </message>
     <message>
         <source>Issuer:               %1</source>
-        <translation>Emisor:               %1</translation>
+        <translation type="vanished">Emisor:               %1</translation>
     </message>
     <message>
         <source>Subject:              %1</source>
-        <translation>Sujeto:              %1</translation>
+        <translation type="vanished">Sujeto:              %1</translation>
     </message>
     <message>
         <source>Not Valid Before:     %1</source>
-        <translation>No válido antes de:     %1</translation>
+        <translation type="vanished">No válido antes de:     %1</translation>
     </message>
     <message>
         <source>Not Valid After:      %1</source>
-        <translation>No válido después de:     %1</translation>
+        <translation type="vanished">No válido después de:     %1</translation>
     </message>
     <message>
         <source>Serial Number:        %1</source>
-        <translation>Número de serie:        %1</translation>
+        <translation type="vanished">Número de serie:        %1</translation>
     </message>
     <message>
         <source>Self-Signed:          %1</source>
-        <translation>Autofirmado:          %1</translation>
+        <translation type="vanished">Autofirmado:          %1</translation>
     </message>
     <message>
         <source>True</source>
@@ -1818,19 +1818,69 @@
     </message>
     <message>
         <source>Authority (CA):       %1</source>
-        <translation>Autoridad (CA):       %1</translation>
+        <translation type="vanished">Autoridad (CA):       %1</translation>
     </message>
     <message>
         <source>Public Algorithm:     %1 (%2)</source>
-        <translation>Algoritmo público:     %1 (%2)</translation>
+        <translation type="vanished">Algoritmo público:     %1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm:  %1 (%2)</source>
-        <translation>Algoritmo de firma:  %1 (%2)</translation>
+        <translation type="vanished">Algoritmo de firma:  %1 (%2)</translation>
     </message>
     <message>
         <source>X.509 Version Number: %1</source>
-        <translation>Número de versión X.509: %1</translation>
+        <translation type="vanished">Número de versión X.509: %1</translation>
+    </message>
+    <message>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Issuer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Subject</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid Before</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid After</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Public Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5616,7 +5666,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation>Audio</translation>
+        <translation type="vanished">Audio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5634,7 +5684,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation>Pantalla</translation>
+        <translation type="vanished">Pantalla</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5697,7 +5747,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation>General</translation>
+        <translation type="vanished">General</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5714,7 +5764,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation>Red</translation>
+        <translation type="vanished">Red</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5760,7 +5810,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation>Estadísticas de red</translation>
+        <translation type="vanished">Estadísticas de red</translation>
     </message>
 </context>
 <context>
@@ -5768,7 +5818,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation>Puertos paralelos</translation>
+        <translation type="vanished">Puertos paralelos</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5786,7 +5836,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation>Atributos de tiempo de ejecución</translation>
+        <translation type="vanished">Atributos de tiempo de ejecución</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5858,7 +5908,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation>Puertos serie</translation>
+        <translation type="vanished">Puertos serie</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5871,7 +5921,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation>Carpetas compartidas</translation>
+        <translation type="vanished">Carpetas compartidas</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5883,7 +5933,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation>Almacenamiento</translation>
+        <translation type="vanished">Almacenamiento</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5911,7 +5961,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation>Estadísticas de almacenamiento</translation>
+        <translation type="vanished">Estadísticas de almacenamiento</translation>
     </message>
 </context>
 <context>
@@ -5919,7 +5969,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation>Sistema</translation>
+        <translation type="vanished">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -6027,7 +6077,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation>USB</translation>
+        <translation type="vanished">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -17465,7 +17515,87 @@ Versión %1</translation>
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
-        <translation>Atributos de tiempo de ejecución</translation>
+        <translation type="vanished">Atributos de tiempo de ejecución</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">General</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Previsualización</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pantalla</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Almacenamiento</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Audio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Red</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Puertos serie</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Puertos paralelos</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Carpetas compartidas</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Interfaz de usuario</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descripción</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts
index 64b3286..6eaeecd 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_eu.ts
@@ -174,7 +174,7 @@
 <context>
     <name>QIMessageBox</name>
     <message>
-        <location filename="../src/extensions/QIMessageBox.cpp" line="+299"/>
+        <location filename="../src/extensions/QIMessageBox.cpp" line="+301"/>
         <location filename="../src/globals/UIMessageCenter.cpp" line="+1796"/>
         <location filename="../src/widgets/UIPopupPaneButtonPane.cpp" line="+180"/>
         <source>OK</source>
@@ -345,7 +345,7 @@
         <translation type="obsolete">Bidali ACPI Indar Botoi sakatze gertaera makina birtualera</translation>
     </message>
     <message>
-        <location filename="../src/globals/UIActionPool.cpp" line="+477"/>
+        <location filename="../src/globals/UIActionPool.cpp" line="+482"/>
         <source>&Close...</source>
         <translation>It&xi...</translation>
     </message>
@@ -1786,65 +1786,78 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+7"/>
-        <source>Issuer:               %1</source>
+        <location line="+5"/>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+2"/>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+1"/>
-        <source>Subject:              %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+1"/>
-        <source>Not Valid Before:     %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+1"/>
-        <source>Not Valid After:      %1</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+1"/>
-        <source>Serial Number:        %1</source>
+        <source>Serial Number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+1"/>
-        <source>Self-Signed:          %1</source>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+0"/>
         <location line="+1"/>
-        <source>True</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-1"/>
+        <location line="+2"/>
+        <source>Public Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+0"/>
         <location line="+1"/>
-        <source>False</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location line="+0"/>
-        <source>Authority (CA):       %1</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+2"/>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <location line="+1"/>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="-5"/>
         <location line="+1"/>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <location line="-1"/>
         <location line="+1"/>
-        <source>X.509 Version Number: %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4211,7 +4224,7 @@
     </message>
     <message>
         <location line="+15"/>
-        <location line="+633"/>
+        <location line="+627"/>
         <source>None</source>
         <translation>Ezer ez</translation>
     </message>
@@ -4283,7 +4296,7 @@
         <translation type="obsolete">Ezker Alt</translation>
     </message>
     <message>
-        <location line="-555"/>
+        <location line="-549"/>
         <location filename="../src/widgets/UIHotKeyEditor.cpp" line="+178"/>
         <source>Unset shortcut</source>
         <translation>Desezarri lastertekla</translation>
@@ -4495,12 +4508,11 @@
 <context>
     <name>UIInformationDataAudio</name>
     <message>
-        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="+375"/>
         <source>Audio</source>
-        <translation type="unfinished">Audioa</translation>
+        <translation type="obsolete">Audioa</translation>
     </message>
     <message>
-        <location line="+17"/>
+        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="+363"/>
         <source>Host Driver</source>
         <comment>details report (audio)</comment>
         <translation type="unfinished">Hostalari Gidagailua</translation>
@@ -4515,13 +4527,7 @@
 <context>
     <name>UIInformationDataDisplay</name>
     <message>
-        <location line="-160"/>
-        <source>Display</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+14"/>
+        <location line="-127"/>
         <source>Video Memory</source>
         <comment>details report</comment>
         <translation type="unfinished">Bideo Oroimena</translation>
@@ -4590,13 +4596,12 @@
 <context>
     <name>UIInformationDataGeneral</name>
     <message>
-        <location line="-180"/>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Orokorra</translation>
+        <translation type="obsolete">Orokorra</translation>
     </message>
     <message>
-        <location line="+13"/>
+        <location line="-147"/>
         <source>Name</source>
         <comment>details report</comment>
         <translation type="unfinished">Izena</translation>
@@ -4611,12 +4616,11 @@
 <context>
     <name>UIInformationDataNetwork</name>
     <message>
-        <location line="+317"/>
         <source>Network</source>
-        <translation type="unfinished">Sarea</translation>
+        <translation type="obsolete">Sarea</translation>
     </message>
     <message>
-        <location line="+27"/>
+        <location line="+295"/>
         <source>Bridged adapter, %1</source>
         <comment>details report (network)</comment>
         <translation type="unfinished">Zubi egokitzailea, %1</translation>
@@ -4655,7 +4659,7 @@
 <context>
     <name>UIInformationDataNetworkStatistics</name>
     <message>
-        <location line="+426"/>
+        <location line="+370"/>
         <source>Data Transmitted</source>
         <translation type="unfinished">Datu Igorrita</translation>
     </message>
@@ -4665,22 +4669,20 @@
         <translation type="unfinished">Datu Jasota</translation>
     </message>
     <message>
-        <location line="+27"/>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sare Estatistikak</translation>
+        <translation type="obsolete">Sare Estatistikak</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
-        <location line="-359"/>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ataka Kidetuak</translation>
+        <translation type="obsolete">Ataka Kidetuak</translation>
     </message>
     <message>
-        <location line="+21"/>
+        <location line="-275"/>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
         <translation type="unfinished">Ataka %1</translation>
@@ -4695,13 +4697,7 @@
 <context>
     <name>UIInformationDataRuntimeAttributes</name>
     <message>
-        <location line="+138"/>
-        <source>Runtime Attributes</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location line="+73"/>
+        <location line="+179"/>
         <source>Not Detected</source>
         <comment>guest additions</comment>
         <translation type="unfinished">Ez da Atzeman</translation>
@@ -4783,12 +4779,11 @@
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
-        <location line="-350"/>
         <source>Serial Ports</source>
-        <translation type="unfinished">Serieko Atakak</translation>
+        <translation type="obsolete">Serieko Atakak</translation>
     </message>
     <message>
-        <location line="+32"/>
+        <location line="-276"/>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
         <translation type="unfinished">Ataka %1</translation>
@@ -4797,13 +4792,12 @@
 <context>
     <name>UIInformationDataSharedFolders</name>
     <message>
-        <location line="+145"/>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Elkarbanatutako Agiritegiak</translation>
+        <translation type="obsolete">Elkarbanatutako Agiritegiak</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+129"/>
         <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
         <translation type="unfinished">Elkarbanatutako Agiritegiak</translation>
@@ -4812,12 +4806,11 @@
 <context>
     <name>UIInformationDataStorage</name>
     <message>
-        <location line="-389"/>
         <source>Storage</source>
-        <translation type="unfinished">Biltegia</translation>
+        <translation type="obsolete">Biltegia</translation>
     </message>
     <message>
-        <location line="+30"/>
+        <location line="-297"/>
         <source>(Optical Drive)</source>
         <translation type="unfinished">(Diska Optikoa)</translation>
     </message>
@@ -4825,7 +4818,7 @@
 <context>
     <name>UIInformationDataStorageStatistics</name>
     <message>
-        <location line="+710"/>
+        <location line="+624"/>
         <location line="+37"/>
         <source>DMA Transfers</source>
         <translation type="unfinished">DMA Eskualdaketak</translation>
@@ -4854,22 +4847,20 @@
         <translation type="unfinished">Datu Idatzita</translation>
     </message>
     <message>
-        <location line="+34"/>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Biltegi Estatistikak</translation>
+        <translation type="obsolete">Biltegi Estatistikak</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataSystem</name>
     <message>
-        <location line="-1060"/>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation type="obsolete">Sistema</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="-905"/>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
         <translation type="unfinished">Gaituta</translation>
@@ -4992,13 +4983,12 @@
 <context>
     <name>UIInformationDataUSB</name>
     <message>
-        <location line="+411"/>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
-        <location line="+20"/>
+        <location line="+360"/>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
         <translation type="unfinished">Ezgaituta</translation>
@@ -5126,7 +5116,7 @@
         <translation>Makina birtualak une honetan Bereizmen Handiko Bideoa eraginkortasunez irakurria izateko behar den kopuru gutxiena baino <b>%1</b> bideo oroimen gutxiago du esleituta.</translation>
     </message>
     <message>
-        <location line="+31"/>
+        <location line="+26"/>
         <source>The virtual machine is set up to use Video Stream Acceleration. As this feature only works with Windows guest systems it will be disabled.</source>
         <translation>Makina birtuala Bideo Jario Bizkorpena erabiltzeko ezarrita dago. Ezaugarri honek Windows gonbidatu sistemekin besterik lan egiten ez duenez ezgaitua izango da.</translation>
     </message>
@@ -5161,12 +5151,12 @@
         <translation>fs-ko</translation>
     </message>
     <message>
-        <location line="-152"/>
+        <location line="-147"/>
         <source>The virtual machine is currently assigned less than <b>%1</b> of video memory which is the minimum amount required to switch to full-screen or seamless mode.</source>
         <translation>Makina birtualak une honetan ikusleiho-osoko edo irudizko modura aldatzeko behar den kopuru gutxiena baino <b>%1</b> bideo oroimen gutxiago du esleituta.</translation>
     </message>
     <message>
-        <location line="+29"/>
+        <location line="+24"/>
         <source>The virtual machine is set up to use hardware graphics acceleration and the operating system hint is set to Windows Vista or later. For best performance you should set the machine's video memory to at least <b>%1</b>.</source>
         <translation>Makina birtuala hardware grafiko bizkorpena erabiltzeko ezarrita dago eta sistema eragilea Windows Vista edo berriagoan zehaztua dago. Egintza hoberenearako makinaren bideo oroimena gutxienez <b>%1</b> balioan ezarri behar duzu.</translation>
     </message>
@@ -5178,12 +5168,12 @@
     <message>
         <location line="+76"/>
         <location line="+1"/>
-        <location line="+484"/>
+        <location line="+480"/>
         <source>%1 MB</source>
         <translation>%1 MB</translation>
     </message>
     <message>
-        <location line="-481"/>
+        <location line="-477"/>
         <location line="+1"/>
         <source>%1%</source>
         <translation>%1%</translation>
@@ -5207,12 +5197,12 @@
         <translation>handia</translation>
     </message>
     <message>
-        <location line="+514"/>
+        <location line="+510"/>
         <source><i>About %1MB per 5 minute video</i></source>
         <translation><i>%1MB 5 minutuko bideo inguru</i></translation>
     </message>
     <message>
-        <location line="-520"/>
+        <location line="-516"/>
         <source>kbps</source>
         <translation>kbs-ko</translation>
     </message>
@@ -6975,8 +6965,8 @@
         <location filename="../src/globals/VBoxGlobal.cpp" line="-704"/>
         <location filename="../src/selector/graphics/details/UIGDetailsElements.cpp" line="-343"/>
         <location filename="../src/settings/machine/UIMachineSettingsStorage.cpp" line="-1730"/>
-        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="-321"/>
-        <location line="+897"/>
+        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="-269"/>
+        <location line="+805"/>
         <source>Controller: %1</source>
         <translation>Kontrolatzailea: %1</translation>
     </message>
@@ -9758,7 +9748,7 @@
 <context>
     <name>UISelectorWindow</name>
     <message>
-        <location filename="../src/selector/UISelectorWindow.cpp" line="+140"/>
+        <location filename="../src/selector/UISelectorWindow.cpp" line="+141"/>
         <source>Show Toolbar</source>
         <translation>Erakutsi Tresnabarra</translation>
     </message>
@@ -9768,7 +9758,7 @@
         <translation>Erakutsi Egoerabarra</translation>
     </message>
     <message>
-        <location line="+330"/>
+        <location line="+338"/>
         <source>Select a virtual machine file</source>
         <translation>Hautatu makina birtual agiria</translation>
     </message>
@@ -9778,12 +9768,12 @@
         <translation>Makina birtual agiriak (%1)</translation>
     </message>
     <message>
-        <location line="-223"/>
+        <location line="-231"/>
         <source><h3>Welcome to VirtualBox!</h3><p>The left part of this window is  a list of all virtual machines on your computer. The list is empty now because you haven't created any virtual machines yet.<img src=:/welcome.png align=right/></p><p>In order to create a new virtual machine, press the <b>New</b> button in the main tool bar located at the top of the window.</p><p>You can press the <b>%1</b> key to [...]
         <translation><h3>Ongi etorri VirtualBox-era!</h3><p>Leiho honetako ezker aldea zure ordenagailuko makina birtualen zerrenda bat da. Zerrenda orain hutsik dago oraindik ez duzulako makina birtualik sortu.<img src=:/welcome.png align=right/></p><p>Makina birtual berri bat sortzeko, sakatu <b>Berria</b> botoia leihoaren goialdeko tresna barra nagusian.</p><p><b>%1</b> tekla sakatu dezakezu berehalako laguntza lo [...]
     </message>
     <message>
-        <location line="+773"/>
+        <location line="+781"/>
         <source>Manager</source>
         <comment>Note: main window title which is pretended by the product name.</comment>
         <translation>Kudeatzailea</translation>
@@ -11165,7 +11155,7 @@
         <translation>Ireki Birtualizazio Heuskarria (%1)</translation>
     </message>
     <message>
-        <location filename="../src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp" line="-204"/>
+        <location filename="../src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp" line="-200"/>
         <location filename="../src/wizards/importappliance/UIWizardImportAppPageExpert.cpp" line="+1"/>
         <source>Appliance settings</source>
         <translation>Gailu ezarpenak</translation>
@@ -11714,7 +11704,7 @@
     </message>
     <message>
         <location filename="../src/UIVMInfoDialog.cpp" line="-221"/>
-        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="-462"/>
+        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="-442"/>
         <source>off</source>
         <comment>guest monitor status</comment>
         <translation>itzalita</translation>
@@ -11778,7 +11768,7 @@
     <message>
         <location line="+191"/>
         <location filename="../src/globals/VBoxGlobal.cpp" line="+205"/>
-        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="+152"/>
+        <location filename="../src/runtime/information/UIInformationDataItem.cpp" line="+142"/>
         <source>Adapter %1</source>
         <comment>details report (network)</comment>
         <translation>Egokitzailea %1</translation>
@@ -13383,125 +13373,204 @@
     <message>
         <location line="+662"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>General</source>
         <comment>DetailsElementType</comment>
         <translation>Orokorra</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Preview</source>
         <comment>DetailsElementType</comment>
         <translation>Aurreikuspena</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>System</source>
         <comment>DetailsElementType</comment>
         <translation>Sistema</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Display</source>
         <comment>DetailsElementType</comment>
         <translation>Erakutsi</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Storage</source>
         <comment>DetailsElementType</comment>
         <translation>Biltegia</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Audio</source>
         <comment>DetailsElementType</comment>
         <translation>Audioa</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Network</source>
         <comment>DetailsElementType</comment>
         <translation>Sarea</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Serial ports</source>
         <comment>DetailsElementType</comment>
         <translation>Serieko Atakak</translation>
     </message>
     <message>
-        <location line="-727"/>
+        <location line="-28"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Parallel ports</source>
         <comment>DetailsElementType</comment>
         <translation>Ataka Kidetuak</translation>
     </message>
     <message>
-        <location line="-727"/>
+        <location line="-28"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>USB</source>
         <comment>DetailsElementType</comment>
         <translation>USB</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Shared folders</source>
         <comment>DetailsElementType</comment>
         <translation>Elkarbanatutako Agiritegiak</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>User interface</source>
         <comment>DetailsElementType</comment>
         <translation>Erabiltzaile interfazea</translation>
     </message>
     <message>
-        <location line="-728"/>
+        <location line="-29"/>
         <location line="+30"/>
-        <location line="+667"/>
-        <location line="+32"/>
         <source>Description</source>
         <comment>DetailsElementType</comment>
         <translation>Azalpena</translation>
     </message>
     <message>
+        <location line="+652"/>
+        <location line="+33"/>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Orokorra</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Aurreikuspena</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Biltegia</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Audioa</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sarea</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Serieko Atakak</translation>
+    </message>
+    <message>
         <location line="-31"/>
-        <location line="+32"/>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <location line="+33"/>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ataka Kidetuak</translation>
+    </message>
+    <message>
+        <location line="-31"/>
+        <location line="+33"/>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Elkarbanatutako Agiritegiak</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Erabiltzaile interfazea</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Azalpena</translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-32"/>
+        <location line="+33"/>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
@@ -13533,7 +13602,7 @@
         <translation>Disketa birtual agiri guztiak (%1)</translation>
     </message>
     <message>
-        <location line="+2065"/>
+        <location line="+2056"/>
         <source>VDI (VirtualBox Disk Image)</source>
         <translation>VDI (VirtualBox Diska Irudia)</translation>
     </message>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fa_IR.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fa_IR.ts
index 63d668f..f4453e3 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fa_IR.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fa_IR.ts
@@ -1467,51 +1467,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -3829,7 +3839,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">صدا</translation>
+        <translation type="obsolete">صدا</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -3847,7 +3857,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">نمایش</translation>
+        <translation type="obsolete">نمایش</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -3910,7 +3920,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">عمومی</translation>
+        <translation type="obsolete">عمومی</translation>
     </message>
     <message>
         <source>Name</source>
@@ -3927,7 +3937,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">شبکه</translation>
+        <translation type="obsolete">شبکه</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -3973,7 +3983,7 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">آمار شبکه</translation>
+        <translation type="obsolete">آمار شبکه</translation>
     </message>
 </context>
 <context>
@@ -3981,7 +3991,7 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">پورت پارالل</translation>
+        <translation type="obsolete">پورت پارالل</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -3999,7 +4009,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">صفات زمان اِجرا</translation>
+        <translation type="obsolete">صفات زمان اِجرا</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -4071,7 +4081,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">پورت سریال</translation>
+        <translation type="obsolete">پورت سریال</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4084,7 +4094,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">پوشه های اشتراکی</translation>
+        <translation type="obsolete">پوشه های اشتراکی</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -4096,7 +4106,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">ذخیره ساز</translation>
+        <translation type="obsolete">ذخیره ساز</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -4124,7 +4134,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">آمار ذخیره ساز</translation>
+        <translation type="obsolete">آمار ذخیره ساز</translation>
     </message>
 </context>
 <context>
@@ -4132,7 +4142,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">سیستم</translation>
+        <translation type="obsolete">سیستم</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -4240,7 +4250,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">یو اِس بی</translation>
+        <translation type="obsolete">یو اِس بی</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -11469,8 +11479,83 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">عمومی</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">پیشنمایش</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">سیستم</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">نمایش</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">ذخیره ساز</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">صدا</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">شبکه</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">پورت سریال</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">پورت پارالل</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">یو اِس بی</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">پوشه های اشتراکی</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">رابط کاربری</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">توضیحات</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts
index 762c422..7a600a6 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fi.ts
@@ -1403,51 +1403,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4403,7 +4413,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Ääni</translation>
+        <translation type="obsolete">Ääni</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4419,11 +4429,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataDisplay</name>
     <message>
-        <source>Display</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Video Memory</source>
         <comment>details report</comment>
         <translation type="unfinished">Videomuisti</translation>
@@ -4484,7 +4489,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Yleiset</translation>
+        <translation type="obsolete">Yleiset</translation>
     </message>
     <message>
         <source>Name</source>
@@ -4501,7 +4506,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Verkko</translation>
+        <translation type="obsolete">Verkko</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4544,18 +4549,13 @@ p, li { white-space: pre-wrap; }
         <source>Data Received</source>
         <translation type="unfinished">Vastaanotettu tieto</translation>
     </message>
-    <message>
-        <source>Network Statistics</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Rinnakkaisportit</translation>
+        <translation type="obsolete">Rinnakkaisportit</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4573,7 +4573,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Suoritusympäristön ominaisuudet</translation>
+        <translation type="obsolete">Suoritusympäristön ominaisuudet</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -4645,7 +4645,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Sarjaportit</translation>
+        <translation type="obsolete">Sarjaportit</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4658,7 +4658,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Jaetut kansiot</translation>
+        <translation type="obsolete">Jaetut kansiot</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -4670,7 +4670,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Levykuvat</translation>
+        <translation type="obsolete">Levykuvat</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -4695,20 +4695,10 @@ p, li { white-space: pre-wrap; }
         <source>Data Written</source>
         <translation type="unfinished">Kirjoitettu tieto</translation>
     </message>
-    <message>
-        <source>Storage Statistics</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>UIInformationDataSystem</name>
     <message>
-        <source>System</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
         <translation type="unfinished">Käytössä</translation>
@@ -4814,7 +4804,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -13816,8 +13806,83 @@ Version %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Yleiset</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Levykuvat</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ääni</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Verkko</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Kuvaus</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts
index 1ddb41b..5857704 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_fr.ts
@@ -1646,51 +1646,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5041,7 +5051,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Son</translation>
+        <translation type="obsolete">Son</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5059,7 +5069,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Affichage</translation>
+        <translation type="obsolete">Affichage</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5122,7 +5132,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Général</translation>
+        <translation type="obsolete">Général</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5139,7 +5149,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Réseau</translation>
+        <translation type="obsolete">Réseau</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5185,17 +5195,12 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistiques du réseau</translation>
+        <translation type="obsolete">Statistiques du réseau</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
-        <source>Parallel Ports</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
         <translation type="unfinished"></translation>
@@ -5209,11 +5214,6 @@
 <context>
     <name>UIInformationDataRuntimeAttributes</name>
     <message>
-        <source>Runtime Attributes</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
         <translation type="unfinished"></translation>
@@ -5283,7 +5283,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Ports séries</translation>
+        <translation type="obsolete">Ports séries</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5295,11 +5295,6 @@
     <name>UIInformationDataSharedFolders</name>
     <message>
         <source>Shared Folders</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -5308,7 +5303,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Stockage</translation>
+        <translation type="obsolete">Stockage</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5336,17 +5331,12 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistiques du stockage</translation>
+        <translation type="obsolete">Statistiques du stockage</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataSystem</name>
     <message>
-        <source>System</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
         <translation type="unfinished"></translation>
@@ -5452,7 +5442,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -13997,8 +13987,83 @@ And the size is not necessarily "in megabytes", the slider chooses the
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Général</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Prévisualisation</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Affichage</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Stockage</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Son</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Réseau</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ports séries</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ports parallèles</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Dossiers partagés</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Interface utilisateur</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Description</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts
index 047e894..065a221 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_gl_ES.ts
@@ -1382,51 +1382,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4590,7 +4600,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Audio</translation>
+        <translation type="obsolete">Audio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4608,7 +4618,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Pantalla</translation>
+        <translation type="obsolete">Pantalla</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -4671,7 +4681,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Xeral</translation>
+        <translation type="obsolete">Xeral</translation>
     </message>
     <message>
         <source>Name</source>
@@ -4688,7 +4698,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Rede</translation>
+        <translation type="obsolete">Rede</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4731,18 +4741,13 @@ p, li { white-space: pre-wrap; }
         <source>Data Received</source>
         <translation type="unfinished">Datos recibidos</translation>
     </message>
-    <message>
-        <source>Network Statistics</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Portos paralelos</translation>
+        <translation type="obsolete">Portos paralelos</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4760,7 +4765,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atributos de tempo de execución</translation>
+        <translation type="obsolete">Atributos de tempo de execución</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -4832,7 +4837,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Portos serie</translation>
+        <translation type="obsolete">Portos serie</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4845,7 +4850,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Cartafoles compartidos</translation>
+        <translation type="obsolete">Cartafoles compartidos</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -4857,7 +4862,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Almacenamento</translation>
+        <translation type="obsolete">Almacenamento</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -4882,18 +4887,13 @@ p, li { white-space: pre-wrap; }
         <source>Data Written</source>
         <translation type="unfinished">Datos escritos</translation>
     </message>
-    <message>
-        <source>Storage Statistics</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>UIInformationDataSystem</name>
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation type="obsolete">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5001,7 +5001,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -13032,8 +13032,83 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Xeral</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pantalla</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Almacenamento</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Audio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Rede</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descrición</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts
index 86b6c44..1cf302d 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_he.ts
@@ -1279,51 +1279,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2956,7 +2966,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">שמע</translation>
+        <translation type="obsolete">שמע</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -2974,7 +2984,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">תצוגה</translation>
+        <translation type="obsolete">תצוגה</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -3037,7 +3047,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">כללי</translation>
+        <translation type="obsolete">כללי</translation>
     </message>
     <message>
         <source>Name</source>
@@ -3054,7 +3064,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">רשת</translation>
+        <translation type="obsolete">רשת</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -3100,17 +3110,12 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">סטטיסטיקת רשת</translation>
+        <translation type="obsolete">סטטיסטיקת רשת</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
-        <source>Parallel Ports</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
         <translation type="unfinished">פורט %1</translation>
@@ -3124,11 +3129,6 @@
 <context>
     <name>UIInformationDataRuntimeAttributes</name>
     <message>
-        <source>Runtime Attributes</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
         <translation type="unfinished"></translation>
@@ -3197,10 +3197,6 @@
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
-        <source>Serial Ports</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
         <translation type="unfinished">פורט %1</translation>
@@ -3211,7 +3207,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">תיקיות משותפות</translation>
+        <translation type="obsolete">תיקיות משותפות</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -3223,7 +3219,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">אחסון</translation>
+        <translation type="obsolete">אחסון</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -3251,7 +3247,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">סטטיסטיקת אחסון</translation>
+        <translation type="obsolete">סטטיסטיקת אחסון</translation>
     </message>
 </context>
 <context>
@@ -3259,7 +3255,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">מערכת</translation>
+        <translation type="obsolete">מערכת</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -3365,11 +3361,6 @@
 <context>
     <name>UIInformationDataUSB</name>
     <message>
-        <source>USB</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
         <translation type="unfinished"></translation>
@@ -9335,11 +9326,6 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>(Optical Drive)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -9365,6 +9351,86 @@
         <source>Please choose a location for new virtual hard disk file</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">כללי</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">תצוגה מקדימה</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">מערכת</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">תצוגה</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">אחסון</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">שמע</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">רשת</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">תיקיות משותפות</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">תיאור</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>VBoxGlobalSettings</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts
index ad806e5..2846d5b 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_hu.ts
@@ -1733,51 +1733,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5527,7 +5537,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Audió</translation>
+        <translation type="obsolete">Audió</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5545,7 +5555,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Képernyő</translation>
+        <translation type="obsolete">Képernyő</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5608,7 +5618,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Általános</translation>
+        <translation type="obsolete">Általános</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5625,7 +5635,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Hálózat</translation>
+        <translation type="obsolete">Hálózat</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5671,7 +5681,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Hálózati statisztika</translation>
+        <translation type="obsolete">Hálózati statisztika</translation>
     </message>
 </context>
 <context>
@@ -5679,7 +5689,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Párhuzamos portok</translation>
+        <translation type="obsolete">Párhuzamos portok</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5697,7 +5707,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Futtatókörnyezet paraméterei</translation>
+        <translation type="obsolete">Futtatókörnyezet paraméterei</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5769,7 +5779,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Soros portok</translation>
+        <translation type="obsolete">Soros portok</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5782,7 +5792,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Megosztott mappák</translation>
+        <translation type="obsolete">Megosztott mappák</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5794,7 +5804,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Tároló</translation>
+        <translation type="obsolete">Tároló</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5822,7 +5832,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Tároló statisztika</translation>
+        <translation type="obsolete">Tároló statisztika</translation>
     </message>
 </context>
 <context>
@@ -5830,7 +5840,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Rendszer</translation>
+        <translation type="obsolete">Rendszer</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5938,7 +5948,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -16822,8 +16832,83 @@ Verzió %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Általános</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Előnézet</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Rendszer</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Képernyő</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Tároló</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Audió</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Hálózat</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Soros portok</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Párhuzamos portok</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Megosztott mappák</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Felhasználói felület</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Leírás</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts
index e9edfd9..6a84493 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_id.ts
@@ -1637,51 +1637,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5035,7 +5045,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Suara</translation>
+        <translation type="obsolete">Suara</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5053,7 +5063,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Tampilan</translation>
+        <translation type="obsolete">Tampilan</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5114,11 +5124,6 @@
 <context>
     <name>UIInformationDataGeneral</name>
     <message>
-        <source>General</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Name</source>
         <comment>details report</comment>
         <translation type="unfinished">Nama</translation>
@@ -5133,7 +5138,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Jaringan</translation>
+        <translation type="obsolete">Jaringan</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5179,7 +5184,7 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistik Jaringan</translation>
+        <translation type="obsolete">Statistik Jaringan</translation>
     </message>
 </context>
 <context>
@@ -5187,7 +5192,7 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Port Paralel</translation>
+        <translation type="obsolete">Port Paralel</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5205,7 +5210,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atribut Runtime</translation>
+        <translation type="obsolete">Atribut Runtime</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5277,7 +5282,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Port Serial</translation>
+        <translation type="obsolete">Port Serial</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5289,11 +5294,6 @@
     <name>UIInformationDataSharedFolders</name>
     <message>
         <source>Shared Folders</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -5302,7 +5302,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Penyimpanan</translation>
+        <translation type="obsolete">Penyimpanan</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5330,7 +5330,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistik Penyimpanan</translation>
+        <translation type="obsolete">Statistik Penyimpanan</translation>
     </message>
 </context>
 <context>
@@ -5338,7 +5338,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistem</translation>
+        <translation type="obsolete">Sistem</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5446,7 +5446,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -15354,8 +15354,83 @@ Versi %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pratinjau</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistem</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Tampilan</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Penyimpanan</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Suara</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Jaringan</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Port serial</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Port paralel</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Folder bersama</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Deskripsi</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
index 0773f61..f6939f0 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_it.ts
@@ -1914,27 +1914,27 @@
     </message>
     <message>
         <source>Issuer:               %1</source>
-        <translation>Emittente:          %1</translation>
+        <translation type="vanished">Emittente:          %1</translation>
     </message>
     <message>
         <source>Subject:              %1</source>
-        <translation>Oggetto:             %1</translation>
+        <translation type="vanished">Oggetto:             %1</translation>
     </message>
     <message>
         <source>Not Valid Before:     %1</source>
-        <translation>Non valido prima:   %1</translation>
+        <translation type="vanished">Non valido prima:   %1</translation>
     </message>
     <message>
         <source>Not Valid After:      %1</source>
-        <translation>Non valido dopo:   %1</translation>
+        <translation type="vanished">Non valido dopo:   %1</translation>
     </message>
     <message>
         <source>Serial Number:        %1</source>
-        <translation>Numero di serie:     %1</translation>
+        <translation type="vanished">Numero di serie:     %1</translation>
     </message>
     <message>
         <source>Self-Signed:          %1</source>
-        <translation>Auto-firmato:        %1</translation>
+        <translation type="vanished">Auto-firmato:        %1</translation>
     </message>
     <message>
         <source>True</source>
@@ -1946,19 +1946,69 @@
     </message>
     <message>
         <source>Authority (CA):       %1</source>
-        <translation>Autorità (CA):        %1</translation>
+        <translation type="vanished">Autorità (CA):        %1</translation>
     </message>
     <message>
         <source>Public Algorithm:     %1 (%2)</source>
-        <translation>Algoritmo pubblico: %1 (%2)</translation>
+        <translation type="vanished">Algoritmo pubblico: %1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm:  %1 (%2)</source>
-        <translation>Algoritmo di firma:    %1 (%2)</translation>
+        <translation type="vanished">Algoritmo di firma:    %1 (%2)</translation>
     </message>
     <message>
         <source>X.509 Version Number: %1</source>
-        <translation>Numero versione X.509: %1</translation>
+        <translation type="vanished">Numero versione X.509: %1</translation>
+    </message>
+    <message>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Issuer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Subject</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid Before</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid After</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Public Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -5978,7 +6028,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation>Audio</translation>
+        <translation type="vanished">Audio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5996,7 +6046,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation>Schermo</translation>
+        <translation type="vanished">Schermo</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -6059,7 +6109,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation>Generale</translation>
+        <translation type="vanished">Generale</translation>
     </message>
     <message>
         <source>Name</source>
@@ -6076,7 +6126,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation>Rete</translation>
+        <translation type="vanished">Rete</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -6122,7 +6172,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation>Statistiche di rete</translation>
+        <translation type="vanished">Statistiche di rete</translation>
     </message>
 </context>
 <context>
@@ -6130,7 +6180,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation>Porte parallele</translation>
+        <translation type="vanished">Porte parallele</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -6148,7 +6198,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation>Attributi di esecuzione</translation>
+        <translation type="vanished">Attributi di esecuzione</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -6220,7 +6270,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation>Porte seriali</translation>
+        <translation type="vanished">Porte seriali</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -6233,7 +6283,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation>Cartelle condivise</translation>
+        <translation type="vanished">Cartelle condivise</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -6245,7 +6295,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation>Archiviazione</translation>
+        <translation type="vanished">Archiviazione</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -6273,7 +6323,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation>Statistiche di archiviazione</translation>
+        <translation type="vanished">Statistiche di archiviazione</translation>
     </message>
 </context>
 <context>
@@ -6281,7 +6331,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation>Sistema</translation>
+        <translation type="vanished">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -6389,7 +6439,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation>USB</translation>
+        <translation type="vanished">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -17818,7 +17868,87 @@ Versione %1</translation>
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
-        <translation>Attributi di esecuzione</translation>
+        <translation type="vanished">Attributi di esecuzione</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Generale</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Anteprima</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Schermo</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Archiviazione</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Audio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Rete</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Porte seriali</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Porte parallele</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Cartelle condivise</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Interfaccia utente</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descrizione</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts
index 0930dea..caf1744 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ja.ts
@@ -1813,51 +1813,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5509,7 +5519,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">オーディオ</translation>
+        <translation type="obsolete">オーディオ</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5527,7 +5537,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">ディスプレイ</translation>
+        <translation type="obsolete">ディスプレイ</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5590,7 +5600,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">一般</translation>
+        <translation type="obsolete">一般</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5607,7 +5617,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">ネットワーク</translation>
+        <translation type="obsolete">ネットワーク</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5653,7 +5663,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">ネットワーク 統計</translation>
+        <translation type="obsolete">ネットワーク 統計</translation>
     </message>
 </context>
 <context>
@@ -5661,7 +5671,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">パラレルポート</translation>
+        <translation type="obsolete">パラレルポート</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5679,7 +5689,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">ランタイム属性</translation>
+        <translation type="obsolete">ランタイム属性</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5751,7 +5761,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">シリアルポート</translation>
+        <translation type="obsolete">シリアルポート</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5764,7 +5774,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">共有フォルダー</translation>
+        <translation type="obsolete">共有フォルダー</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5776,7 +5786,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">ストレージ</translation>
+        <translation type="obsolete">ストレージ</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5804,7 +5814,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">ストレージ統計</translation>
+        <translation type="obsolete">ストレージ統計</translation>
     </message>
 </context>
 <context>
@@ -5812,7 +5822,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">システム</translation>
+        <translation type="obsolete">システム</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5920,7 +5930,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -16946,8 +16956,83 @@ Version %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">一般</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">プレビュー</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">システム</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">ディスプレイ</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">ストレージ</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">オーディオ</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">ネットワーク</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">シリアルポート</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">パラレルポート</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">共有フォルダー</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">ユーザーインターフェース</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">説明</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
index 5dbd70c..a7f93ae 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_km_KH.ts
@@ -1351,51 +1351,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4492,7 +4502,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">អូឌីយ៉ូ</translation>
+        <translation type="obsolete">អូឌីយ៉ូ</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4510,7 +4520,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">បង្ហាញ​</translation>
+        <translation type="obsolete">បង្ហាញ​</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -4573,7 +4583,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">ទូទៅ</translation>
+        <translation type="obsolete">ទូទៅ</translation>
     </message>
     <message>
         <source>Name</source>
@@ -4590,7 +4600,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">បណ្ដាញ</translation>
+        <translation type="obsolete">បណ្ដាញ</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4636,17 +4646,12 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">ស្ថិតិ​បណ្ដាញ</translation>
+        <translation type="obsolete">ស្ថិតិ​បណ្ដាញ</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
-        <source>Parallel Ports</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
         <translation type="unfinished">ច្រក %1</translation>
@@ -4662,7 +4667,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">គុណលក្ខណៈ​ពេលវេលា​រត់</translation>
+        <translation type="obsolete">គុណលក្ខណៈ​ពេលវេលា​រត់</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -4733,10 +4738,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
-        <source>Serial Ports</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
         <translation type="unfinished">ច្រក %1</translation>
@@ -4746,11 +4747,6 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSharedFolders</name>
     <message>
         <source>Shared Folders</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -4758,10 +4754,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataStorage</name>
     <message>
-        <source>Storage</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>(Optical Drive)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4787,7 +4779,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">ស្ថិតិ​ផ្ទុក​</translation>
+        <translation type="obsolete">ស្ថិតិ​ផ្ទុក​</translation>
     </message>
 </context>
 <context>
@@ -4795,7 +4787,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">ប្រព័ន្ធ</translation>
+        <translation type="obsolete">ប្រព័ន្ធ</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -4903,7 +4895,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -13592,8 +13584,83 @@ medium</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">ទូទៅ</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">ប្រព័ន្ធ</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">បង្ហាញ​</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">អូឌីយ៉ូ</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">បណ្ដាញ</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">សេច​ក្តី​ពិណណ៌នា​</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts
index a406e9d..fba4bd8 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ko.ts
@@ -1744,51 +1744,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5567,7 +5577,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">오디오</translation>
+        <translation type="obsolete">오디오</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5585,7 +5595,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">디스플레이</translation>
+        <translation type="obsolete">디스플레이</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5648,7 +5658,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">일반</translation>
+        <translation type="obsolete">일반</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5665,7 +5675,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">네트워크</translation>
+        <translation type="obsolete">네트워크</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5711,7 +5721,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">네트워크 통계</translation>
+        <translation type="obsolete">네트워크 통계</translation>
     </message>
 </context>
 <context>
@@ -5719,7 +5729,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">병렬 포트</translation>
+        <translation type="obsolete">병렬 포트</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5737,7 +5747,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">런타임 속성</translation>
+        <translation type="obsolete">런타임 속성</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5809,7 +5819,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">직렬 포트</translation>
+        <translation type="obsolete">직렬 포트</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5822,7 +5832,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">공유 폴더</translation>
+        <translation type="obsolete">공유 폴더</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5834,7 +5844,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">저장소</translation>
+        <translation type="obsolete">저장소</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5862,7 +5872,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">저장소 통계</translation>
+        <translation type="obsolete">저장소 통계</translation>
     </message>
 </context>
 <context>
@@ -5870,7 +5880,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">시스템</translation>
+        <translation type="obsolete">시스템</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5978,7 +5988,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -16178,8 +16188,83 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">일반</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">미리 보기</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">시스템</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">디스플레이</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">저장소</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">오디오</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">네트워크</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">직렬 포트</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">병렬 포트</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">공유 폴더</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">사용자 인터페이스</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">설명</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
index b66c2db..515bc53 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_lt.ts
@@ -1543,51 +1543,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5001,7 +5011,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Garsas</translation>
+        <translation type="obsolete">Garsas</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5019,7 +5029,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ekranas</translation>
+        <translation type="obsolete">Ekranas</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5082,7 +5092,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Bendra</translation>
+        <translation type="obsolete">Bendra</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5099,7 +5109,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Tinklas</translation>
+        <translation type="obsolete">Tinklas</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5145,17 +5155,12 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Tinklo statistika</translation>
+        <translation type="obsolete">Tinklo statistika</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
-        <source>Parallel Ports</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
         <translation type="unfinished">%1 prievadas</translation>
@@ -5171,7 +5176,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Vykdymo ypatybės</translation>
+        <translation type="obsolete">Vykdymo ypatybės</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5243,7 +5248,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Nuoseklieji prievadai</translation>
+        <translation type="obsolete">Nuoseklieji prievadai</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5256,7 +5261,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Bendrieji aplankai</translation>
+        <translation type="obsolete">Bendrieji aplankai</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5268,7 +5273,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Atminties įtaisas</translation>
+        <translation type="obsolete">Atminties įtaisas</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5296,7 +5301,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atminties įtaisų statistika</translation>
+        <translation type="obsolete">Atminties įtaisų statistika</translation>
     </message>
 </context>
 <context>
@@ -5304,7 +5309,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation type="obsolete">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5412,7 +5417,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -15118,8 +15123,83 @@ IPv6.</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Bendra</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Peržiūra</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ekranas</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Atminties įtaisas</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Garsas</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Tinklas</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Aprašas</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
index 5a3cfe7..5ab333f 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_nl.ts
@@ -1635,51 +1635,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4851,7 +4861,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Audio</translation>
+        <translation type="obsolete">Audio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4869,7 +4879,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Beeldscherm</translation>
+        <translation type="obsolete">Beeldscherm</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -4932,7 +4942,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Algemeen</translation>
+        <translation type="obsolete">Algemeen</translation>
     </message>
     <message>
         <source>Name</source>
@@ -4949,7 +4959,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Netwerk</translation>
+        <translation type="obsolete">Netwerk</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4995,17 +5005,12 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Netwerkstatistieken</translation>
+        <translation type="obsolete">Netwerkstatistieken</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
-        <source>Parallel Ports</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
         <translation type="unfinished">Poort %1</translation>
@@ -5021,7 +5026,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Runtime attributen</translation>
+        <translation type="obsolete">Runtime attributen</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5093,7 +5098,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Seriële poorten</translation>
+        <translation type="obsolete">Seriële poorten</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5106,7 +5111,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Gedeelde mappen</translation>
+        <translation type="obsolete">Gedeelde mappen</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5118,7 +5123,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Opslag</translation>
+        <translation type="obsolete">Opslag</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5146,7 +5151,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Opslagstatistieken</translation>
+        <translation type="obsolete">Opslagstatistieken</translation>
     </message>
 </context>
 <context>
@@ -5154,7 +5159,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Systeem</translation>
+        <translation type="obsolete">Systeem</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5262,7 +5267,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -13363,8 +13368,83 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Algemeen</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Preview</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Systeem</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Beeldscherm</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Opslag</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Audio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Netwerk</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Seriële poorten</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Parallelle porten</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Gedeelde mappen</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Gebruikersinterface</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Beschrijving</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts
index f315b49..96791de 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pl.ts
@@ -1513,51 +1513,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4802,7 +4812,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Dźwięk</translation>
+        <translation type="obsolete">Dźwięk</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4820,7 +4830,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ekran</translation>
+        <translation type="obsolete">Ekran</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -4883,7 +4893,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ogólne</translation>
+        <translation type="obsolete">Ogólne</translation>
     </message>
     <message>
         <source>Name</source>
@@ -4900,7 +4910,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Sieć</translation>
+        <translation type="obsolete">Sieć</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4946,7 +4956,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statystyka sieci</translation>
+        <translation type="obsolete">Statystyka sieci</translation>
     </message>
 </context>
 <context>
@@ -4954,7 +4964,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Porty równoległe</translation>
+        <translation type="obsolete">Porty równoległe</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4972,7 +4982,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Parametry maszyny</translation>
+        <translation type="obsolete">Parametry maszyny</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5044,7 +5054,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Porty szeregowe</translation>
+        <translation type="obsolete">Porty szeregowe</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5057,7 +5067,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Współdzielone katalogi</translation>
+        <translation type="obsolete">Współdzielone katalogi</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5069,7 +5079,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Nośniki</translation>
+        <translation type="obsolete">Nośniki</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5097,7 +5107,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statystyka nośników</translation>
+        <translation type="obsolete">Statystyka nośników</translation>
     </message>
 </context>
 <context>
@@ -5105,7 +5115,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">System</translation>
+        <translation type="obsolete">System</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5213,7 +5223,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -15259,8 +15269,83 @@ Wersja %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ogólne</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">System</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ekran</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Nośniki</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Dźwięk</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sieć</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Opis</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts
index 40ab163..5be469f 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt.ts
@@ -1525,51 +1525,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4683,7 +4693,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Áudio</translation>
+        <translation type="obsolete">Áudio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4699,11 +4709,6 @@
 <context>
     <name>UIInformationDataDisplay</name>
     <message>
-        <source>Display</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Video Memory</source>
         <comment>details report</comment>
         <translation type="unfinished">Memória Gráfica</translation>
@@ -4764,7 +4769,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Geral</translation>
+        <translation type="obsolete">Geral</translation>
     </message>
     <message>
         <source>Name</source>
@@ -4781,7 +4786,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Rede</translation>
+        <translation type="obsolete">Rede</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4827,7 +4832,7 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estatísticas da Rede</translation>
+        <translation type="obsolete">Estatísticas da Rede</translation>
     </message>
 </context>
 <context>
@@ -4835,7 +4840,7 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Portas Paralelas</translation>
+        <translation type="obsolete">Portas Paralelas</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4853,7 +4858,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atributos de Execução</translation>
+        <translation type="obsolete">Atributos de Execução</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -4925,7 +4930,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Portas Série</translation>
+        <translation type="obsolete">Portas Série</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4938,7 +4943,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Pastas Partilhadas</translation>
+        <translation type="obsolete">Pastas Partilhadas</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -4950,7 +4955,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Armazenamento</translation>
+        <translation type="obsolete">Armazenamento</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -4978,7 +4983,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estatísticas de Armazenamento</translation>
+        <translation type="obsolete">Estatísticas de Armazenamento</translation>
     </message>
 </context>
 <context>
@@ -4986,7 +4991,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation type="obsolete">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5094,7 +5099,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -14606,8 +14611,83 @@ Versão %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Geral</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Prever</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Armazenamento</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Áudio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Rede</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descrição</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
index 2dfcaeb..4263e0d 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_pt_BR.ts
@@ -153,22 +153,22 @@
     </message>
     <message>
         <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>as root.</source>
-        <translation type="unfinished"></translation>
+        <translation>O módulo de kernel Linux do VirtualBox (vboxdrv) não está carregado ou existe um problema de permissões no arquivo /dev/vboxdrv. Reinstale o módulo de kernel executando o comando <br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>como root.</translation>
     </message>
     <message>
         <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
-        <translation type="unfinished"></translation>
+        <translation>Os módulos de kernel do VirtualBox não coincidem com esta versão do VirtualBox. Aparentemente a instalação do VirtualBox não obteve êxito. Executar<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>pode corrigir isto. Certifique-se de que não esteja misturando a versão OSE e a versão PUEL do VirtualBox.</translation>
     </message>
 </context>
 <context>
     <name>QIArrowButtonPress</name>
     <message>
         <source>&Back</source>
-        <translation type="unfinished">Voltar (&B)</translation>
+        <translation>Voltar (&B)</translation>
     </message>
     <message>
         <source>&Next</source>
-        <translation type="unfinished">Próximo(&N)</translation>
+        <translation>Próximo(&N)</translation>
     </message>
 </context>
 <context>
@@ -183,11 +183,11 @@
     </message>
     <message>
         <source>&Details</source>
-        <translation type="unfinished">&Detalhes</translation>
+        <translation>&Detalhes</translation>
     </message>
     <message>
         <source>&Details (%1 of %2)</source>
-        <translation type="unfinished">&Detalhes (%1 de %2)</translation>
+        <translation>&Detalhes (%1 de %2)</translation>
     </message>
 </context>
 <context>
@@ -1622,39 +1622,39 @@
     </message>
     <message>
         <source>&VirtualBox Bug Tracker...</source>
-        <translation type="unfinished"></translation>
+        <translation>Acompanhamento de Bugs do &VirtualBox...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product bug tracker</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir o navegador e visitar a página de gerenciamento dos bugs do produto VirtualBox</translation>
     </message>
     <message>
         <source>&VirtualBox Forums...</source>
-        <translation type="unfinished"></translation>
+        <translation>Forums do &VirtualBox...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product forums</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir o navegador e visitiar os fóruns do produto VirtualBox</translation>
     </message>
     <message>
         <source>&Oracle Web Site...</source>
-        <translation type="unfinished"></translation>
+        <translation>Site da &Oracle...</translation>
     </message>
     <message>
         <source>Open the browser and go to the Oracle web site</source>
-        <translation type="unfinished"></translation>
+        <translation>Abrir o navegador e visitar a página da Oracle</translation>
     </message>
     <message>
         <source>&Detach GUI</source>
-        <translation type="unfinished"></translation>
+        <translation>&Destacar a GUI</translation>
     </message>
     <message>
         <source>Detach the GUI from headless VM</source>
-        <translation type="unfinished"></translation>
+        <translation>Destacar a GUI de uma VM headless</translation>
     </message>
     <message>
         <source>Disable Dock Icon Overlay</source>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitar Barra de Ícones do Dock</translation>
     </message>
 </context>
 <context>
@@ -1873,62 +1873,72 @@
     <name>UIApplianceUnverifiedCertificateViewer</name>
     <message>
         <source>Unverifiable Certificate! Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>Certificado não pode ser verificado! Continuar?</translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified self signed certificate issued by '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>O appliance está assinado por um certificado auto-assinado não verificado, emitido por '%1'. Recomendamos que você continue com a importação apenas se confiar nesta entidade.</b></translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified certificate issued to '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>O appliance está assinado por um certificado emitido para '%1'. Recomendamos que você continue com a importação apenas se confiar nesta entidade.</b></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
-        <translation type="unfinished"></translation>
+        <source>True</source>
+        <translation>Emissor:               %1</translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
-        <translation type="unfinished"></translation>
+        <source>False</source>
+        <translation>Entidade:              %1</translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
-        <translation type="unfinished"></translation>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation>Não Válido Antes De:     %1</translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
-        <translation type="unfinished"></translation>
+        <source>Issuer</source>
+        <translation>Não Válido Depois De:     %1</translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
-        <translation type="unfinished"></translation>
+        <source>Subject</source>
+        <translation>Número de Série:        %1</translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
-        <translation type="unfinished"></translation>
+        <source>Not Valid Before</source>
+        <translation>Auto-Assinado:          %1</translation>
     </message>
     <message>
-        <source>True</source>
-        <translation type="unfinished"></translation>
+        <source>Not Valid After</source>
+        <translation>Verdadeiro</translation>
     </message>
     <message>
-        <source>False</source>
-        <translation type="unfinished"></translation>
+        <source>Serial Number</source>
+        <translation>Falso</translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
-        <translation type="unfinished"></translation>
+        <source>Self-Signed</source>
+        <translation>Autoridade (CA):       %1</translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
-        <translation type="unfinished"></translation>
+        <source>Authority (CA)</source>
+        <translation>Algoritmo Público:     %1 (%2)</translation>
+    </message>
+    <message>
+        <source>Public Algorithm</source>
+        <translation>Algoritmo de Assinatura:  %1 (%2)</translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation>Número de Versão X.509: %1</translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2748,7 +2758,7 @@
     <name>UIEmptyFilePathSelector</name>
     <message>
         <source>Choose...</source>
-        <translation type="unfinished">Escolher...</translation>
+        <translation>Escolher...</translation>
     </message>
 </context>
 <context>
@@ -3124,55 +3134,55 @@ p, li { white-space: pre-wrap; }
     <name>UIFilePathSelector</name>
     <message>
         <source>&Copy</source>
-        <translation type="unfinished">&Copiar</translation>
+        <translation>&Copiar</translation>
     </message>
     <message>
         <source>Other...</source>
-        <translation type="unfinished">Outro...</translation>
+        <translation>Outro...</translation>
     </message>
     <message>
         <source>Reset</source>
-        <translation type="unfinished"></translation>
+        <translation>Padrão</translation>
     </message>
     <message>
         <source>Displays a window to select a different folder.</source>
-        <translation type="unfinished">Abre uma janela para selecionar uma pasta diferente.</translation>
+        <translation>Abre uma janela para selecionar uma pasta diferente.</translation>
     </message>
     <message>
         <source>Resets the folder path to the default value.</source>
-        <translation type="unfinished">Redefine o caminho da pasta para o valor padrão.</translation>
+        <translation>Redefine o caminho da pasta para o valor padrão.</translation>
     </message>
     <message>
         <source>Displays a window to select a different file.</source>
-        <translation type="unfinished">Abre uma janela para selecionar um arquivo diferente.</translation>
+        <translation>Abre uma janela para selecionar um arquivo diferente.</translation>
     </message>
     <message>
         <source>Resets the file path to the default value.</source>
-        <translation type="unfinished">Redefine o caminho da pasta para o valor padrão.</translation>
+        <translation>Redefine o caminho da pasta para o valor padrão.</translation>
     </message>
     <message>
         <source><reset to default></source>
-        <translation type="unfinished"><redefinir para o padrão></translation>
+        <translation><redefinir para o padrão></translation>
     </message>
     <message>
         <source>The actual default path value will be displayed after accepting the changes and opening this window again.</source>
-        <translation type="unfinished">O valor padrão real do caminho será exibido após aceitar as mudanças e abrir este diálogo novamente.</translation>
+        <translation>O valor padrão real do caminho será exibido após aceitar as mudanças e abrir este diálogo novamente.</translation>
     </message>
     <message>
         <source><not selected></source>
-        <translation type="unfinished"><não selecionado></translation>
+        <translation><não selecionado></translation>
     </message>
     <message>
         <source>Please use the <b>Other...</b> item from the drop-down list to select a path.</source>
-        <translation type="unfinished">Por favor utilize o item <b>Outro...</b> da lista de opções para selecionar o caminho desejado.</translation>
+        <translation>Por favor utilize o item <b>Outro...</b> da lista de opções para selecionar o caminho desejado.</translation>
     </message>
     <message>
         <source>Holds the folder path.</source>
-        <translation type="unfinished">Contém o caminho da pasta.</translation>
+        <translation>Contém o caminho da pasta.</translation>
     </message>
     <message>
         <source>Holds the file path.</source>
-        <translation type="unfinished">Contém o caminho do arquivo.</translation>
+        <translation>Contém o caminho do arquivo.</translation>
     </message>
 </context>
 <context>
@@ -4873,7 +4883,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Host interface <b>%1</b> does not currently have a valid IPv6 network mask prefix length.</source>
-        <translation type="unfinished"></translation>
+        <translation>A interface do hospedeiro <b>%1</b> não possui uma máscara IPv6 de tamanho válido.</translation>
     </message>
 </context>
 <context>
@@ -5244,27 +5254,27 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>When chosen, VirtualBox will try to auto-detect host proxy settings for tasks like downloading Guest Additions from the network or checking for updates.</source>
-        <translation type="unfinished"></translation>
+        <translation>Quando selecionado, o VirtualBox irá tentar auto-detectar as configurações de proxy para atividades como baixar os Adicionais para Convidado da rede ou verificação de atualizações.</translation>
     </message>
     <message>
         <source>&Auto-detect Host Proxy Settings</source>
-        <translation type="unfinished"></translation>
+        <translation>&Auto-detectar Configurações de Proxy do Hospedeiro</translation>
     </message>
     <message>
         <source>When chosen, VirtualBox will use direct Internet connection for tasks like downloading Guest Additions from the network or checking for updates.</source>
-        <translation type="unfinished"></translation>
+        <translation>Quando selecionado, o VirtualBox irá utilizar conexões diretas para atividades como baixar os Adicionais para Convidado da rede ou verificação de atualizações.</translation>
     </message>
     <message>
         <source>&Direct Connection to the Internet</source>
-        <translation type="unfinished"></translation>
+        <translation>Conexão &Direta à Internet</translation>
     </message>
     <message>
         <source>When chosen, VirtualBox will use the proxy settings supplied for tasks like downloading Guest Additions from the network or checking for updates.</source>
-        <translation type="unfinished"></translation>
+        <translation>Quando selecionado, o VirtualBox irá utilizar as configurações de proxy fornecidas para atividades como baixar os Adicionais para Convidado da rede ou verificação de atualizações.</translation>
     </message>
     <message>
         <source>&Manual Proxy Configuration</source>
-        <translation type="unfinished"></translation>
+        <translation>&Configuração Manual de Proxy</translation>
     </message>
 </context>
 <context>
@@ -5881,17 +5891,17 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Áudio</translation>
+        <translation type="vanished">Áudio</translation>
     </message>
     <message>
         <source>Host Driver</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished">Driver do Hospedeiro </translation>
+        <translation>Driver do Hospedeiro </translation>
     </message>
     <message>
         <source>Controller</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished">Controladora</translation>
+        <translation>Controladora</translation>
     </message>
 </context>
 <context>
@@ -5899,62 +5909,62 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">Tela</translation>
     </message>
     <message>
         <source>Video Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished">Memória de Vídeo</translation>
+        <translation>Memória de Vídeo</translation>
     </message>
     <message>
         <source>Screens</source>
         <comment>details report</comment>
-        <translation type="unfinished">Telas</translation>
+        <translation>Telas</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Habilitada</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitada</translation>
     </message>
     <message>
         <source>3D Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">Aceleração 3D</translation>
+        <translation>Aceleração 3D</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Habilitada</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitada</translation>
     </message>
     <message>
         <source>2D Video Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">Aceleração de Vídeo 2D</translation>
+        <translation>Aceleração de Vídeo 2D</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Porta para Servidor de Desktop Remoto</translation>
     </message>
     <message>
         <source>Remote Desktop Server</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">Servidor de Desktop Remoto</translation>
+        <translation>Servidor de Desktop Remoto</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitado</translation>
     </message>
 </context>
 <context>
@@ -5962,70 +5972,70 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Geral</translation>
+        <translation type="vanished">Geral</translation>
     </message>
     <message>
         <source>Name</source>
         <comment>details report</comment>
-        <translation type="unfinished">Nome</translation>
+        <translation>Nome</translation>
     </message>
     <message>
         <source>OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished">Tipo de Sistema</translation>
+        <translation>Tipo de Sistema Operacional</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Rede</translation>
+        <translation type="vanished">Rede</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Placa em modo Bridge, %1</translation>
+        <translation>Placa em modo Bridge, %1</translation>
     </message>
     <message>
         <source>Internal network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Rede interna, '%1'</translation>
+        <translation>Rede interna, '%1'</translation>
     </message>
     <message>
         <source>Host-only adapter, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Placa de rede exclusiva de hospedeiro (host-only), '%1'</translation>
+        <translation>Placa de rede exclusiva de hospedeiro (host-only), '%1'</translation>
     </message>
     <message>
         <source>Generic, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Genérico, '%1'</translation>
+        <translation>Genérico, '%1'</translation>
     </message>
     <message>
         <source>NAT network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Rede NAT, '%1'</translation>
+        <translation>Rede NAT, '%1'</translation>
     </message>
     <message>
         <source>Adapter %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">Adaptador %1</translation>
+        <translation>Adaptador %1</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetworkStatistics</name>
     <message>
         <source>Data Transmitted</source>
-        <translation type="unfinished">Dados Transmitidos</translation>
+        <translation>Dados Transmitidos</translation>
     </message>
     <message>
         <source>Data Received</source>
-        <translation type="unfinished">Dados Recebidos</translation>
+        <translation>Dados Recebidos</translation>
     </message>
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estatísticas de Rede</translation>
+        <translation type="vanished">Estatísticas de Rede</translation>
     </message>
 </context>
 <context>
@@ -6033,17 +6043,17 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Portas Paralelas</translation>
+        <translation type="vanished">Portas Paralelas</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished">Porta %1</translation>
+        <translation>Porta %1</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitadas</translation>
     </message>
 </context>
 <context>
@@ -6051,84 +6061,84 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atributos de Tempo de Execução</translation>
+        <translation type="vanished">Atributos de Tempo de Execução</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
-        <translation type="unfinished">Não Detectado</translation>
+        <translation>Não Detectado</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest os type</comment>
-        <translation type="unfinished">Não Detectado</translation>
+        <translation>Não Detectado</translation>
     </message>
     <message>
         <source>Not Available</source>
         <comment>details report (VRDE server port)</comment>
-        <translation type="unfinished">Não Disponível</translation>
+        <translation>Não Disponível</translation>
     </message>
     <message>
         <source>Screen Resolution</source>
-        <translation type="unfinished">Resolução da Tela</translation>
+        <translation>Resolução da Tela</translation>
     </message>
     <message>
         <source>VM Uptime</source>
-        <translation type="unfinished">Uptime da VM</translation>
+        <translation>Uptime da VM</translation>
     </message>
     <message>
         <source>Clipboard Mode</source>
-        <translation type="unfinished">Modo de Área de Transferência</translation>
+        <translation>Modo de Área de Transferência</translation>
     </message>
     <message>
         <source>Drag and Drop Mode</source>
-        <translation type="unfinished">Modo Arrastar e Soltar</translation>
+        <translation>Modo Arrastar e Soltar</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">Paginação Aninhada</translation>
+        <translation>Paginação Aninhada</translation>
     </message>
     <message>
         <source>Unrestricted Execution</source>
         <comment>details report</comment>
-        <translation type="unfinished">Execução Sem Limites</translation>
+        <translation>Execução Sem Limites</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">Interface de paravirtualização</translation>
+        <translation>Interface de paravirtualização</translation>
     </message>
     <message>
         <source>Guest Additions</source>
-        <translation type="unfinished">Adicionais Para Convidado</translation>
+        <translation>Adicionais Para Convidado</translation>
     </message>
     <message>
         <source>Guest OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished">Tipo de Sistema Operacional Convidado</translation>
+        <translation>Tipo de Sistema Operacional Convidado</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Portas Seriais</translation>
+        <translation type="vanished">Portas Seriais</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
-        <translation type="unfinished">Porta %1</translation>
+        <translation>Porta %1</translation>
     </message>
 </context>
 <context>
@@ -6136,47 +6146,47 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Pastas Compartilhadas</translation>
+        <translation type="vanished">Pastas Compartilhadas</translation>
     </message>
     <message>
         <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
-        <translation type="unfinished">Pastas Compartilhadas</translation>
+        <translation>Pastas Compartilhadas</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Armazenamento</translation>
+        <translation type="vanished">Armazenamento</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
-        <translation type="unfinished">(Drive Óptico)</translation>
+        <translation>(Drive Óptico)</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorageStatistics</name>
     <message>
         <source>DMA Transfers</source>
-        <translation type="unfinished">Transferências de DMA</translation>
+        <translation>Transferências de DMA</translation>
     </message>
     <message>
         <source>PIO Transfers</source>
-        <translation type="unfinished">Transferências de PIO</translation>
+        <translation>Transferências de PIO</translation>
     </message>
     <message>
         <source>Data Read</source>
-        <translation type="unfinished">Dados Lidos</translation>
+        <translation>Dados Lidos</translation>
     </message>
     <message>
         <source>Data Written</source>
-        <translation type="unfinished">Dados Gravados</translation>
+        <translation>Dados Gravados</translation>
     </message>
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Estatísticas de Armazenamento</translation>
+        <translation type="vanished">Estatísticas de Armazenamento</translation>
     </message>
 </context>
 <context>
@@ -6184,107 +6194,107 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistema</translation>
+        <translation type="vanished">Sistema</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Habilitado</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitado</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Habilitado</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitado</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Habilitado</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitado</translation>
     </message>
     <message>
         <source>Base Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished">Memória Principal</translation>
+        <translation>Memória Principal</translation>
     </message>
     <message>
         <source>Processor(s)</source>
         <comment>details report</comment>
-        <translation type="unfinished">Processador(es)</translation>
+        <translation>Processador(es)</translation>
     </message>
     <message>
         <source>Execution Cap</source>
         <comment>details report</comment>
-        <translation type="unfinished"></translation>
+        <translation>Restrição de execução</translation>
     </message>
     <message>
         <source>Boot Order</source>
         <comment>details report</comment>
-        <translation type="unfinished">Ordem de Boot</translation>
+        <translation>Ordem de Boot</translation>
     </message>
     <message>
         <source>ACPI</source>
         <comment>details report</comment>
-        <translation type="unfinished">ACPI</translation>
+        <translation>ACPI</translation>
     </message>
     <message>
         <source>I/O APIC</source>
         <comment>details report</comment>
-        <translation type="unfinished">I/O APIC</translation>
+        <translation>I/O APIC</translation>
     </message>
     <message>
         <source>PAE/NX</source>
         <comment>details report</comment>
-        <translation type="unfinished">PAE/NX</translation>
+        <translation>PAE/NX</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Habilitado</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitado</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Habilitada</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitada</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">Paginação Aninhada</translation>
+        <translation>Paginação Aninhada</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">Interface de paravirtualização</translation>
+        <translation>Interface de paravirtualização</translation>
     </message>
 </context>
 <context>
@@ -6292,22 +6302,22 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="vanished">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished"></translation>
+        <translation>Desabilitado</translation>
     </message>
     <message>
         <source>Device Filters</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">Filtros de Dispositivo</translation>
+        <translation>Filtros de Dispositivo</translation>
     </message>
     <message>
         <source>%1 (%2 active)</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">%1 (%2 ativos)</translation>
+        <translation>%1 (%2 ativos)</translation>
     </message>
 </context>
 <context>
@@ -6719,7 +6729,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Scale Factor:</source>
-        <translation>Fator de E&scalonamento</translation>
+        <translation>Fator de E&scalonamento:</translation>
     </message>
     <message>
         <source>Controls the guest screen scale factor.</source>
@@ -8673,7 +8683,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Add NVMe Controller</source>
-        <translation type="unfinished"></translation>
+        <translation>Adicionar Controladora NVMe</translation>
     </message>
 </context>
 <context>
@@ -9389,27 +9399,27 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>This type of medium is attached directly or indirectly, preserved when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>Este tipo de mídia é conectada direta ou indiretamente, e é preservada quando são feitos snapshots.</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, changes are wiped out the next time the virtual machine is started.</source>
-        <translation type="unfinished"></translation>
+        <translation>Este tipo de mídia é conectado indiretamente, e as mudanças são perdidas na próxima vez que a máquina virtual for iniciada.</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, ignored when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>Este tipo de mídia é conectada diretamente, e é ignorada quando são feitos snapshots.</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, allowed to be used concurrently by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>Este tipo de mídia é conectada diretamente, e pode ser utilizada concorrentemente por várias máquinas.</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, and can be used by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>Este tipo de mídia é conectada diretamente, e pode ser utilizada por várias máquinas.</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, so that one base medium can be used for several VMs which have their own differencing medium to store their modifications.</source>
-        <translation type="unfinished"></translation>
+        <translation>Este tipo de mídia é conectado indiretamente, de tal forma que uma mídia-base possa ser utilizada por várias VMs e cada uma delas possui uma mídia diferencial para armazenar suas modificações.</translation>
     </message>
 </context>
 <context>
@@ -11437,7 +11447,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source><p>Failed to acquire the VirtualBox COM object.</p><p>The application will now terminate.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>Falha ao carregar o objeto COM do VirtualBox.</p><p>A aplicação será finalizada.</p></translation>
     </message>
 </context>
 <context>
@@ -11554,7 +11564,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Holds the location of the virtual machine.</source>
-        <translation type="unfinished"></translation>
+        <translation>Contém a localização da máquina virtual.</translation>
     </message>
 </context>
 <context>
@@ -11700,7 +11710,7 @@ p, li { white-space: pre-wrap; }
     </message>
     <message>
         <source>Url not found on the server</source>
-        <translation type="unfinished"></translation>
+        <translation>URL não encontrada no servidor</translation>
     </message>
 </context>
 <context>
@@ -13469,15 +13479,15 @@ utilizando o diálogo de Configurações da MV.</p></translation>
     <name>UIVMInformationDialog</name>
     <message>
         <source>%1 - Session Information</source>
-        <translation type="unfinished">%1 - Informações sobre a Sessão</translation>
+        <translation>%1 - Informações sobre a Sessão</translation>
     </message>
     <message>
         <source>Configuration &Details</source>
-        <translation type="unfinished">&Detalhes de Configuração</translation>
+        <translation>&Detalhes de Configuração</translation>
     </message>
     <message>
         <source>&Runtime Information</source>
-        <translation type="unfinished">Informações de &Runtime</translation>
+        <translation>Informações de &Runtime</translation>
     </message>
 </context>
 <context>
@@ -13629,15 +13639,15 @@ utilizando o diálogo de Configurações da MV.</p></translation>
     </message>
     <message>
         <source>Filter</source>
-        <translation type="unfinished"></translation>
+        <translation>Filtro</translation>
     </message>
     <message>
         <source>Enter filtering string here</source>
-        <translation type="unfinished"></translation>
+        <translation>Entre com os termos para filtragem aqui</translation>
     </message>
     <message>
         <source>Fil&ter</source>
-        <translation type="unfinished"></translation>
+        <translation>Fil&tro</translation>
     </message>
 </context>
 <context>
@@ -14241,31 +14251,31 @@ utilizando o diálogo de Configurações da MV.</p></translation>
     </message>
     <message>
         <source>Appliance is not signed</source>
-        <translation type="unfinished"></translation>
+        <translation>O appliance não está assinado</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>Appliance assinado por %1 (confiável)</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>Appliance assinado por %1 (expirado!)</translation>
     </message>
     <message>
         <source>Unverified signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>Assinatura não verificada por %1!</translation>
     </message>
     <message>
         <source>Self signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>Auto-assinado por %1 (confiável)</translation>
     </message>
     <message>
         <source>Self signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>Auto-assinado por %1 (expirado!)</translation>
     </message>
     <message>
         <source>Unverified self signed signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>Assinatura não verificada auto-assinada por %1!</translation>
     </message>
 </context>
 <context>
@@ -14511,11 +14521,11 @@ utilizando o diálogo de Configurações da MV.</p></translation>
     </message>
     <message>
         <source><p><nobr>Holds the name or full path to the virtual machine folder you are about to create.</nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>Contém o nome ou caminho completo da pasta para a máquina virtual que você está prestes a criar</nobr></p></translation>
     </message>
     <message>
         <source><p><nobr>You are about to create the virtual machine in the following folder:</nobr><br><nobr><b>%1</b></nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>Você está prestes a criar uma máquina virtual na seguinte pasta:</nobr><br><nobr><b>%1</b></nobr></p></translation>
     </message>
 </context>
 <context>
@@ -17905,26 +17915,106 @@ Versão %1</translation>
     <message>
         <source>USB</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished">USB</translation>
+        <translation>USB</translation>
     </message>
     <message>
         <source>PCIe</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished"></translation>
+        <translation>PCIe</translation>
     </message>
     <message>
         <source>NVMe</source>
         <comment>StorageControllerType</comment>
-        <translation type="unfinished"></translation>
+        <translation>NVMe</translation>
     </message>
     <message>
         <source>NVMe Port %1</source>
         <comment>StorageSlot</comment>
-        <translation type="unfinished"></translation>
+        <translation>Porta NVMe %1</translation>
     </message>
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
+        <translation type="vanished">Atributos de Tempo de Execução</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Geral</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pré-Visualização</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistema</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Armazenamento</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Áudio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Rede</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Portas Seriais</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Portas Paralelas</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pastas Compartilhadas</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Interface do Usuário</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descrição</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts
index b611344..c626c48 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ro.ts
@@ -1454,51 +1454,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4514,7 +4524,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Sunet</translation>
+        <translation type="obsolete">Sunet</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4532,7 +4542,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Afișare</translation>
+        <translation type="obsolete">Afișare</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -4593,11 +4603,6 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
 <context>
     <name>UIInformationDataGeneral</name>
     <message>
-        <source>General</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Name</source>
         <comment>details report</comment>
         <translation type="unfinished">Nume</translation>
@@ -4612,7 +4617,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Rețea</translation>
+        <translation type="obsolete">Rețea</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4658,7 +4663,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistici rețea</translation>
+        <translation type="obsolete">Statistici rețea</translation>
     </message>
 </context>
 <context>
@@ -4666,7 +4671,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Porturi paralele</translation>
+        <translation type="obsolete">Porturi paralele</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4684,7 +4689,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Atribute la rulare</translation>
+        <translation type="obsolete">Atribute la rulare</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -4756,7 +4761,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Porturi seriale</translation>
+        <translation type="obsolete">Porturi seriale</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4769,7 +4774,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Directoare partajate</translation>
+        <translation type="obsolete">Directoare partajate</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -4781,7 +4786,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Stocare</translation>
+        <translation type="obsolete">Stocare</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -4809,7 +4814,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistici stocare</translation>
+        <translation type="obsolete">Statistici stocare</translation>
     </message>
 </context>
 <context>
@@ -4817,7 +4822,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistem</translation>
+        <translation type="obsolete">Sistem</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -4925,7 +4930,7 @@ Acest director este folosit, dacă nu este explicit specificat altfel, atunci c
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -14566,8 +14571,83 @@ Versiunea %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistem</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Afișare</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Stocare</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sunet</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Rețea</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Descriere</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
index d125a72..fd0c273 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_ru.ts
@@ -1705,27 +1705,27 @@
     </message>
     <message>
         <source>Issuer:               %1</source>
-        <translation>Издатель:                   %1</translation>
+        <translation type="vanished">Издатель:                   %1</translation>
     </message>
     <message>
         <source>Subject:              %1</source>
-        <translation>Пользователь:               %1</translation>
+        <translation type="vanished">Пользователь:               %1</translation>
     </message>
     <message>
         <source>Not Valid Before:     %1</source>
-        <translation>Срок действия (начало):     %1</translation>
+        <translation type="vanished">Срок действия (начало):     %1</translation>
     </message>
     <message>
         <source>Not Valid After:      %1</source>
-        <translation>Срок действия (конец):      %1</translation>
+        <translation type="vanished">Срок действия (конец):      %1</translation>
     </message>
     <message>
         <source>Serial Number:        %1</source>
-        <translation>Серийный номер:             %1</translation>
+        <translation type="vanished">Серийный номер:             %1</translation>
     </message>
     <message>
         <source>Self-Signed:          %1</source>
-        <translation>Самозаверенный сертификат:  %1</translation>
+        <translation type="vanished">Самозаверенный сертификат:  %1</translation>
     </message>
     <message>
         <source>True</source>
@@ -1737,19 +1737,69 @@
     </message>
     <message>
         <source>Authority (CA):       %1</source>
-        <translation>Доверенный сертификат:      %1</translation>
+        <translation type="vanished">Доверенный сертификат:      %1</translation>
     </message>
     <message>
         <source>Public Algorithm:     %1 (%2)</source>
-        <translation>Алгоритм открытого ключа:   %1 (%2)</translation>
+        <translation type="vanished">Алгоритм открытого ключа:   %1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm:  %1 (%2)</source>
-        <translation>Алгоритм подписи:           %1 (%2)</translation>
+        <translation type="vanished">Алгоритм подписи:           %1 (%2)</translation>
     </message>
     <message>
         <source>X.509 Version Number: %1</source>
-        <translation>Версия X.509:               %1</translation>
+        <translation type="vanished">Версия X.509:               %1</translation>
+    </message>
+    <message>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Issuer</source>
+        <translation>Издатель</translation>
+    </message>
+    <message>
+        <source>Subject</source>
+        <translation>Пользователь</translation>
+    </message>
+    <message>
+        <source>Not Valid Before</source>
+        <translation>Срок действия (начало)</translation>
+    </message>
+    <message>
+        <source>Not Valid After</source>
+        <translation>Срок действия (конец)</translation>
+    </message>
+    <message>
+        <source>Serial Number</source>
+        <translation>Серийный номер</translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation>Самозаверенный сертификат</translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
+        <translation>Доверенный сертификат</translation>
+    </message>
+    <message>
+        <source>Public Algorithm</source>
+        <translation>Алгоритм открытого ключа</translation>
+    </message>
+    <message>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation>Алгоритм подписи</translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
+        <translation>Версия X.509</translation>
     </message>
 </context>
 <context>
@@ -5423,7 +5473,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation>Аудио</translation>
+        <translation type="vanished">Аудио</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5441,7 +5491,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation>Дисплей</translation>
+        <translation type="vanished">Дисплей</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5504,7 +5554,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation>Общие</translation>
+        <translation type="vanished">Общие</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5521,7 +5571,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation>Сеть</translation>
+        <translation type="vanished">Сеть</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5567,7 +5617,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation>Статистика сетевых адаптеров</translation>
+        <translation type="vanished">Статистика сетевых адаптеров</translation>
     </message>
 </context>
 <context>
@@ -5575,7 +5625,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation>LPT-порты</translation>
+        <translation type="vanished">LPT-порты</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5593,7 +5643,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation>Рабочие характеристики</translation>
+        <translation type="vanished">Рабочие характеристики</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5665,7 +5715,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation>COM-порты</translation>
+        <translation type="vanished">COM-порты</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5678,7 +5728,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation>Общие папки</translation>
+        <translation type="vanished">Общие папки</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5690,7 +5740,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation>Носители</translation>
+        <translation type="vanished">Носители</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5718,7 +5768,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation>Статистика носителей информации</translation>
+        <translation type="vanished">Статистика носителей информации</translation>
     </message>
 </context>
 <context>
@@ -5726,7 +5776,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation>Система</translation>
+        <translation type="vanished">Система</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5832,11 +5882,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataUSB</name>
     <message>
-        <source>USB</source>
-        <comment>details report</comment>
-        <translation></translation>
-    </message>
-    <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
         <translation>Выключено</translation>
@@ -16095,8 +16140,88 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
+        <translation type="vanished">Рабочие характеристики</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation>Общие</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation>Превью</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation>Система</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation>Дисплей</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation>Носители</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation>Аудио</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation>Сеть</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation>COM-порты</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation>LPT-порты</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation>USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation>Общие папки</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation>Интерфейс пользователя</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation>Описание</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
         <translation>Рабочие характеристики</translation>
     </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation>Статистика носителей информации</translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
+        <translation>Статистика сетевых адаптеров</translation>
+    </message>
 </context>
 <context>
     <name>VBoxGlobalSettings</name>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts
index 0c6ae7c..ccf1a62 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sk.ts
@@ -1480,51 +1480,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -4921,7 +4931,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Audio</translation>
+        <translation type="obsolete">Audio</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4939,7 +4949,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Displej</translation>
+        <translation type="obsolete">Displej</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5002,7 +5012,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Všeobecné</translation>
+        <translation type="obsolete">Všeobecné</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5019,7 +5029,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Sieť</translation>
+        <translation type="obsolete">Sieť</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5065,7 +5075,7 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sieťové štatistiky</translation>
+        <translation type="obsolete">Sieťové štatistiky</translation>
     </message>
 </context>
 <context>
@@ -5073,7 +5083,7 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Paralelné porty</translation>
+        <translation type="obsolete">Paralelné porty</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5089,11 +5099,6 @@
 <context>
     <name>UIInformationDataRuntimeAttributes</name>
     <message>
-        <source>Runtime Attributes</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
         <translation type="unfinished"></translation>
@@ -5163,7 +5168,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Sériové porty</translation>
+        <translation type="obsolete">Sériové porty</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5176,7 +5181,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Zdieľané priečinky</translation>
+        <translation type="obsolete">Zdieľané priečinky</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5188,7 +5193,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Úložisko</translation>
+        <translation type="obsolete">Úložisko</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5216,7 +5221,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Štatistiky o úložiskách</translation>
+        <translation type="obsolete">Štatistiky o úložiskách</translation>
     </message>
 </context>
 <context>
@@ -5224,7 +5229,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Systém</translation>
+        <translation type="obsolete">Systém</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5332,7 +5337,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -14370,8 +14375,83 @@ verzia %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Všeobecné</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Náhľad</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Systém</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Displej</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Úložisko</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Audio</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sieť</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Popis</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts
index 2431cb9..bdbdd1a 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sl.ts
@@ -1131,51 +1131,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2774,7 +2784,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Zvok</translation>
+        <translation type="obsolete">Zvok</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -2792,7 +2802,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Zaslon</translation>
+        <translation type="obsolete">Zaslon</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -2855,7 +2865,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Splošno</translation>
+        <translation type="obsolete">Splošno</translation>
     </message>
     <message>
         <source>Name</source>
@@ -2872,7 +2882,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Omrežje</translation>
+        <translation type="obsolete">Omrežje</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -2918,7 +2928,7 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Omrežna statistika</translation>
+        <translation type="obsolete">Omrežna statistika</translation>
     </message>
 </context>
 <context>
@@ -2926,7 +2936,7 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Vzporedna vrata</translation>
+        <translation type="obsolete">Vzporedna vrata</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -2944,7 +2954,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Lastnosti izvajanja</translation>
+        <translation type="obsolete">Lastnosti izvajanja</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -3016,7 +3026,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Zaporedna vrata</translation>
+        <translation type="obsolete">Zaporedna vrata</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -3029,7 +3039,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Deljene mape</translation>
+        <translation type="obsolete">Deljene mape</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -3041,7 +3051,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Pomnilnške naprave</translation>
+        <translation type="obsolete">Pomnilnške naprave</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -3069,7 +3079,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Statistika pomnilniških naprav</translation>
+        <translation type="obsolete">Statistika pomnilniških naprav</translation>
     </message>
 </context>
 <context>
@@ -3077,7 +3087,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Sistem</translation>
+        <translation type="obsolete">Sistem</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -3185,7 +3195,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -8949,8 +8959,83 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Splošno</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Predogled</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistem</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Zaslon</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Pomnilnške naprave</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Zvok</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Omrežje</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Zaporedna vrata</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Vzporedna vrata</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Deljene mape</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Uporabniški vmesnik</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Opis</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts
index bb22f35..766dbf4 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sr.ts
@@ -1483,51 +1483,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5022,7 +5032,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Аудио</translation>
+        <translation type="obsolete">Аудио</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5040,7 +5050,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Дисплеј</translation>
+        <translation type="obsolete">Дисплеј</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5103,7 +5113,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Опште</translation>
+        <translation type="obsolete">Опште</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5120,7 +5130,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Мрежа</translation>
+        <translation type="obsolete">Мрежа</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5166,7 +5176,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Мрежне статистике</translation>
+        <translation type="obsolete">Мрежне статистике</translation>
     </message>
 </context>
 <context>
@@ -5174,7 +5184,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Паралелни портови</translation>
+        <translation type="obsolete">Паралелни портови</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5192,7 +5202,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Атрибути рада</translation>
+        <translation type="obsolete">Атрибути рада</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5264,7 +5274,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Серијски портови</translation>
+        <translation type="obsolete">Серијски портови</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5277,7 +5287,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Дељене фасцикле</translation>
+        <translation type="obsolete">Дељене фасцикле</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5289,7 +5299,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Стовариште</translation>
+        <translation type="obsolete">Стовариште</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5317,7 +5327,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Статистике стоваришта</translation>
+        <translation type="obsolete">Статистике стоваришта</translation>
     </message>
 </context>
 <context>
@@ -5325,7 +5335,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Систем</translation>
+        <translation type="obsolete">Систем</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5431,11 +5441,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataUSB</name>
     <message>
-        <source>USB</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
         <translation type="unfinished"></translation>
@@ -14969,8 +14974,83 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Опште</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Преглед</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Систем</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Дисплеј</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Стовариште</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Аудио</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Мрежа</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Опис</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts
index 7e46114..c75ba9e 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_sv.ts
@@ -1708,51 +1708,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5573,7 +5583,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Ljud</translation>
+        <translation type="obsolete">Ljud</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5591,7 +5601,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Skärm</translation>
+        <translation type="obsolete">Skärm</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5654,7 +5664,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">Allmänt</translation>
+        <translation type="obsolete">Allmänt</translation>
     </message>
     <message>
         <source>Name</source>
@@ -5671,7 +5681,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Nätverk</translation>
+        <translation type="obsolete">Nätverk</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5717,7 +5727,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Nätverksstatistik</translation>
+        <translation type="obsolete">Nätverksstatistik</translation>
     </message>
 </context>
 <context>
@@ -5725,7 +5735,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Parallellportar</translation>
+        <translation type="obsolete">Parallellportar</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5743,7 +5753,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Körtidsattribut</translation>
+        <translation type="obsolete">Körtidsattribut</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5815,7 +5825,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Serieportar</translation>
+        <translation type="obsolete">Serieportar</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5828,7 +5838,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">Delade mappar</translation>
+        <translation type="obsolete">Delade mappar</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5840,7 +5850,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Lagring</translation>
+        <translation type="obsolete">Lagring</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5868,7 +5878,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Lagringsstatistik</translation>
+        <translation type="obsolete">Lagringsstatistik</translation>
     </message>
 </context>
 <context>
@@ -5876,7 +5886,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">System</translation>
+        <translation type="obsolete">System</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5984,7 +5994,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -16701,8 +16711,83 @@ Version %1</translation>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Allmänt</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Förhandsvisning</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">System</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Skärm</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Lagring</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ljud</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Nätverk</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Serieportar</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Parallelportar</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Delade mappar</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Beskrivning</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
index 8f42ba2..5cb38aa 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_tr.ts
@@ -1722,27 +1722,27 @@
     </message>
     <message>
         <source>Issuer:               %1</source>
-        <translation>Veren:                %1</translation>
+        <translation type="vanished">Veren:                %1</translation>
     </message>
     <message>
         <source>Subject:              %1</source>
-        <translation>Konu:                  %1</translation>
+        <translation type="vanished">Konu:                  %1</translation>
     </message>
     <message>
         <source>Not Valid Before:     %1</source>
-        <translation>Geçerlilik Başlangıcı: %1</translation>
+        <translation type="vanished">Geçerlilik Başlangıcı: %1</translation>
     </message>
     <message>
         <source>Not Valid After:      %1</source>
-        <translation>Geçerlilik Sonu:      %1</translation>
+        <translation type="vanished">Geçerlilik Sonu:      %1</translation>
     </message>
     <message>
         <source>Serial Number:        %1</source>
-        <translation>Seri Numarası:        %1</translation>
+        <translation type="vanished">Seri Numarası:        %1</translation>
     </message>
     <message>
         <source>Self-Signed:          %1</source>
-        <translation>Kendinden İmzalı: %1</translation>
+        <translation type="vanished">Kendinden İmzalı: %1</translation>
     </message>
     <message>
         <source>True</source>
@@ -1754,19 +1754,69 @@
     </message>
     <message>
         <source>Authority (CA):       %1</source>
-        <translation>Yetkili (CA):             %1</translation>
+        <translation type="vanished">Yetkili (CA):             %1</translation>
     </message>
     <message>
         <source>Public Algorithm:     %1 (%2)</source>
-        <translation>Ortak Algoritma:    %1 (%2)</translation>
+        <translation type="vanished">Ortak Algoritma:    %1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm:  %1 (%2)</source>
-        <translation>İmza Algoritması:       %1 (%2)</translation>
+        <translation type="vanished">İmza Algoritması:       %1 (%2)</translation>
     </message>
     <message>
         <source>X.509 Version Number: %1</source>
-        <translation>X.509 Sürüm Numarası: %1</translation>
+        <translation type="vanished">X.509 Sürüm Numarası: %1</translation>
+    </message>
+    <message>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Issuer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Subject</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid Before</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid After</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Public Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -4829,7 +4879,7 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation>Ses</translation>
+        <translation type="vanished">Ses</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -4847,7 +4897,7 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation>Ekran</translation>
+        <translation type="vanished">Ekran</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -4910,7 +4960,7 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation>Genel</translation>
+        <translation type="vanished">Genel</translation>
     </message>
     <message>
         <source>Name</source>
@@ -4927,7 +4977,7 @@
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation>Ağ</translation>
+        <translation type="vanished">Ağ</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -4973,7 +5023,7 @@
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation>Ağ İstatistikleri</translation>
+        <translation type="vanished">Ağ İstatistikleri</translation>
     </message>
 </context>
 <context>
@@ -4981,7 +5031,7 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation>Paralel B.Noktaları</translation>
+        <translation type="vanished">Paralel B.Noktaları</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -4999,7 +5049,7 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation>Çalışma Zamanı Öznitelikleri</translation>
+        <translation type="vanished">Çalışma Zamanı Öznitelikleri</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5071,7 +5121,7 @@
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation>Seri B.Noktaları</translation>
+        <translation type="vanished">Seri B.Noktaları</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5084,7 +5134,7 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation>Paylaşılan Klasörler</translation>
+        <translation type="vanished">Paylaşılan Klasörler</translation>
     </message>
     <message>
         <source>Shared Folders</source>
@@ -5096,7 +5146,7 @@
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation>Depolama</translation>
+        <translation type="vanished">Depolama</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5124,7 +5174,7 @@
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation>Depolama İstatistikleri</translation>
+        <translation type="vanished">Depolama İstatistikleri</translation>
     </message>
 </context>
 <context>
@@ -5132,7 +5182,7 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation>Sistem</translation>
+        <translation type="vanished">Sistem</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5240,7 +5290,7 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation>USB</translation>
+        <translation type="vanished">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -15246,7 +15296,87 @@ Version %1</source>
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
-        <translation>Çalışma Zamanı Öznitelikleri</translation>
+        <translation type="vanished">Çalışma Zamanı Öznitelikleri</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Genel</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Önizleme</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Sistem</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ekran</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Depolama</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ses</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Ağ</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Seri b.noktaları</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Paralel b.noktaları</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Paylaşılan klasörler</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Kullanıcı arayüzü</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Açıklama</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
index abbcf74..c1349d9 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_uk.ts
@@ -1661,51 +1661,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Signature Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5166,7 +5176,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">Аудіо</translation>
+        <translation type="obsolete">Аудіо</translation>
     </message>
     <message>
         <source>Host Driver</source>
@@ -5184,7 +5194,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">Екран</translation>
+        <translation type="obsolete">Екран</translation>
     </message>
     <message>
         <source>Video Memory</source>
@@ -5245,11 +5255,6 @@ p, li { white-space: pre-wrap; }
 <context>
     <name>UIInformationDataGeneral</name>
     <message>
-        <source>General</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Name</source>
         <comment>details report</comment>
         <translation type="unfinished">Назва</translation>
@@ -5264,7 +5269,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">Мережа</translation>
+        <translation type="obsolete">Мережа</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
@@ -5310,7 +5315,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Статистика мережі</translation>
+        <translation type="obsolete">Статистика мережі</translation>
     </message>
 </context>
 <context>
@@ -5318,7 +5323,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">Паралельні порти</translation>
+        <translation type="obsolete">Паралельні порти</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5336,7 +5341,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">Параметри часу обробки</translation>
+        <translation type="obsolete">Параметри часу обробки</translation>
     </message>
     <message>
         <source>Not Detected</source>
@@ -5408,7 +5413,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">Послідовні порти</translation>
+        <translation type="obsolete">Послідовні порти</translation>
     </message>
     <message>
         <source>Port %1</source>
@@ -5420,11 +5425,6 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataSharedFolders</name>
     <message>
         <source>Shared Folders</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -5433,7 +5433,7 @@ p, li { white-space: pre-wrap; }
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">Пам'ять</translation>
+        <translation type="obsolete">Пам'ять</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
@@ -5461,7 +5461,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">Статистика пам'яті</translation>
+        <translation type="obsolete">Статистика пам'яті</translation>
     </message>
 </context>
 <context>
@@ -5469,7 +5469,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">Система</translation>
+        <translation type="obsolete">Система</translation>
     </message>
     <message>
         <source>Enabled</source>
@@ -5577,7 +5577,7 @@ p, li { white-space: pre-wrap; }
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="obsolete">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
@@ -15411,8 +15411,83 @@ p, li { white-space: pre-wrap; }
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Перегляд</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Система</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Екран</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Пам'ять</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Аудіо</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Мережа</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Серійні порти</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Паралельні порти</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Спільні теки</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Інтерфейс користувача</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">Опис</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
index 4a0dba8..43e4b94 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_xx_YY.ts
@@ -1105,51 +1105,61 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Issuer:               %1</source>
+        <source>True</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Subject:              %1</source>
+        <source>False</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid Before:     %1</source>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Not Valid After:      %1</source>
+        <source>Issuer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Serial Number:        %1</source>
+        <source>Subject</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Self-Signed:          %1</source>
+        <source>Not Valid Before</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>True</source>
+        <source>Not Valid After</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>False</source>
+        <source>Serial Number</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Authority (CA):       %1</source>
+        <source>Self-Signed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Public Algorithm:     %1 (%2)</source>
+        <source>Authority (CA)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Signature Algorithm:  %1 (%2)</source>
+        <source>Public Algorithm</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>X.509 Version Number: %1</source>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2730,10 +2740,6 @@
 <context>
     <name>UIInformationDataAudio</name>
     <message>
-        <source>Audio</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Host Driver</source>
         <comment>details report (audio)</comment>
         <translation type="unfinished"></translation>
@@ -2747,11 +2753,6 @@
 <context>
     <name>UIInformationDataDisplay</name>
     <message>
-        <source>Display</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Video Memory</source>
         <comment>details report</comment>
         <translation type="unfinished"></translation>
@@ -2810,11 +2811,6 @@
 <context>
     <name>UIInformationDataGeneral</name>
     <message>
-        <source>General</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Name</source>
         <comment>details report</comment>
         <translation type="unfinished"></translation>
@@ -2828,10 +2824,6 @@
 <context>
     <name>UIInformationDataNetwork</name>
     <message>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Bridged adapter, %1</source>
         <comment>details report (network)</comment>
         <translation type="unfinished"></translation>
@@ -2872,20 +2864,10 @@
         <source>Data Received</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source>Network Statistics</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>UIInformationDataParallelPorts</name>
     <message>
-        <source>Parallel Ports</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
         <translation type="unfinished"></translation>
@@ -2899,11 +2881,6 @@
 <context>
     <name>UIInformationDataRuntimeAttributes</name>
     <message>
-        <source>Runtime Attributes</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
         <translation type="unfinished"></translation>
@@ -2972,10 +2949,6 @@
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
-        <source>Serial Ports</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
         <translation type="unfinished"></translation>
@@ -2985,11 +2958,6 @@
     <name>UIInformationDataSharedFolders</name>
     <message>
         <source>Shared Folders</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
         <translation type="unfinished"></translation>
     </message>
@@ -2997,10 +2965,6 @@
 <context>
     <name>UIInformationDataStorage</name>
     <message>
-        <source>Storage</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>(Optical Drive)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -3023,20 +2987,10 @@
         <source>Data Written</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source>Storage Statistics</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
 </context>
 <context>
     <name>UIInformationDataSystem</name>
     <message>
-        <source>System</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
         <translation type="unfinished"></translation>
@@ -3140,11 +3094,6 @@
 <context>
     <name>UIInformationDataUSB</name>
     <message>
-        <source>USB</source>
-        <comment>details report</comment>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
         <translation type="unfinished"></translation>
@@ -8823,8 +8772,83 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>RuntimeAttributes</source>
-        <comment>DetailsElementType</comment>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
index a987814..fe8c690 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_CN.ts
@@ -93,22 +93,22 @@
     </message>
     <message>
         <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>as root.</source>
-        <translation type="unfinished"></translation>
+        <translation>VirtualBox Linux 内核驱动程序 (vboxdrv) 没有加载,或 /dev/vboxdrv 有权限问题。请以 root 权限执行<br/><br/><font color=blue>“/sbin/rcvboxdrv setup”</font><br/><br/>,以便重新安装内核模块。</translation>
     </message>
     <message>
         <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
-        <translation type="unfinished"></translation>
+        <translation>现有的内核模块与当前版本的VirtualBox不匹配。因此导致安装失败。可尝试执行 <br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>以修复该问题。并确认你没有混合OSE和PUEL版本的VirtualBox.</translation>
     </message>
 </context>
 <context>
     <name>QIArrowButtonPress</name>
     <message>
         <source>&Back</source>
-        <translation type="unfinished">返回(&B)</translation>
+        <translation>返回(&B)</translation>
     </message>
     <message>
         <source>&Next</source>
-        <translation type="unfinished"></translation>
+        <translation>下一步(&N)</translation>
     </message>
 </context>
 <context>
@@ -123,11 +123,12 @@
     </message>
     <message>
         <source>&Details</source>
-        <translation type="unfinished"></translation>
+        <translation>明细(&D)</translation>
     </message>
     <message>
         <source>&Details (%1 of %2)</source>
-        <translation type="unfinished">明细 (%2/%1)(&D)</translation>
+        <translatorcomment>todo</translatorcomment>
+        <translation>明细 (%1/%2)(&D)</translation>
     </message>
 </context>
 <context>
@@ -1140,7 +1141,7 @@
     <message>
         <source>&Insert %1</source>
         <comment>that means send the %1 key sequence to the virtual machine</comment>
-        <translation>载入 %1 (&I)</translation>
+        <translation>传入 %1 (&I)</translation>
     </message>
     <message>
         <source>&Hard Disks</source>
@@ -1366,39 +1367,40 @@
     </message>
     <message>
         <source>&VirtualBox Bug Tracker...</source>
-        <translation type="unfinished"></translation>
+        <translation>VirtualBox 缺陷跟踪(&V)...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product bug tracker</source>
-        <translation type="unfinished"></translation>
+        <translation>打开浏览器并转到 VirtualBox 缺陷跟踪网站</translation>
     </message>
     <message>
         <source>&VirtualBox Forums...</source>
-        <translation type="unfinished"></translation>
+        <translation>VirtualBox 论坛(&V)...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product forums</source>
-        <translation type="unfinished"></translation>
+        <translation>打开浏览器并转到 VirtualBox 在线论坛</translation>
     </message>
     <message>
         <source>&Oracle Web Site...</source>
-        <translation type="unfinished"></translation>
+        <translation>Oracle 网站(&O)...</translation>
     </message>
     <message>
         <source>Open the browser and go to the Oracle web site</source>
-        <translation type="unfinished"></translation>
+        <translation>打开浏览器并转到 Oracle 网站</translation>
     </message>
     <message>
         <source>&Detach GUI</source>
-        <translation type="unfinished"></translation>
+        <translation>分离式界面(&D)</translation>
     </message>
     <message>
         <source>Detach the GUI from headless VM</source>
-        <translation type="unfinished"></translation>
+        <translation>将界面与虚拟机分离</translation>
     </message>
     <message>
         <source>Disable Dock Icon Overlay</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>todo</translatorcomment>
+        <translation>禁用停靠图标</translation>
     </message>
 </context>
 <context>
@@ -1601,62 +1603,114 @@
     <name>UIApplianceUnverifiedCertificateViewer</name>
     <message>
         <source>Unverifiable Certificate! Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>未经验证的证书! 是否继续访问?</translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified self signed certificate issued by '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>此虚拟电脑由未经确认的自签署证书 '%1' 签发。 建议你仅导入可信任的资源。</b></translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified certificate issued to '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>此虚拟电脑由未经确认的证书 '%1' 签发。 建议你仅导入可信任的资源。</b></translation>
     </message>
     <message>
         <source>Issuer:               %1</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>todo</translatorcomment>
+        <translation type="vanished">签发者:               %1</translation>
     </message>
     <message>
         <source>Subject:              %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">主题:              %1</translation>
     </message>
     <message>
         <source>Not Valid Before:     %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">在此之前无效:     %1</translation>
     </message>
     <message>
         <source>Not Valid After:      %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">在此之后无效:      %1</translation>
     </message>
     <message>
         <source>Serial Number:        %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">序列号:        %1</translation>
     </message>
     <message>
         <source>Self-Signed:          %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">自行签署:          %1</translation>
     </message>
     <message>
         <source>True</source>
-        <translation type="unfinished"></translation>
+        <translation>是</translation>
     </message>
     <message>
         <source>False</source>
-        <translation type="unfinished"></translation>
+        <translation>否</translation>
     </message>
     <message>
         <source>Authority (CA):       %1</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>todo</translatorcomment>
+        <translation type="vanished">授权机构 (CA):       %1</translation>
     </message>
     <message>
         <source>Public Algorithm:     %1 (%2)</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">公钥算法:     %1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm:  %1 (%2)</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">签名算法:  %1 (%2)</translation>
     </message>
     <message>
         <source>X.509 Version Number: %1</source>
+        <translation type="vanished">X.509 版本: %1</translation>
+    </message>
+    <message>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Issuer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Subject</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid Before</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid After</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Public Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -2375,7 +2429,7 @@
     <name>UIEmptyFilePathSelector</name>
     <message>
         <source>Choose...</source>
-        <translation type="unfinished">选择...</translation>
+        <translation>选择...</translation>
     </message>
 </context>
 <context>
@@ -2551,55 +2605,55 @@
     <name>UIFilePathSelector</name>
     <message>
         <source>&Copy</source>
-        <translation type="unfinished">复制(&C)</translation>
+        <translation>复制(&C)</translation>
     </message>
     <message>
         <source>Other...</source>
-        <translation type="unfinished">其它...</translation>
+        <translation>其它...</translation>
     </message>
     <message>
         <source>Reset</source>
-        <translation type="unfinished"></translation>
+        <translation>默认</translation>
     </message>
     <message>
         <source>Displays a window to select a different folder.</source>
-        <translation type="unfinished">打开对话框选择另一文件夹.</translation>
+        <translation>打开对话框选择另一文件夹.</translation>
     </message>
     <message>
         <source>Resets the folder path to the default value.</source>
-        <translation type="unfinished">重置为默认文件夹.</translation>
+        <translation>重置为默认文件夹.</translation>
     </message>
     <message>
         <source>Displays a window to select a different file.</source>
-        <translation type="unfinished">打开对话框选择另一文件.</translation>
+        <translation>打开对话框选择另一文件.</translation>
     </message>
     <message>
         <source>Resets the file path to the default value.</source>
-        <translation type="unfinished">重置为默认文件.</translation>
+        <translation>重置为默认文件.</translation>
     </message>
     <message>
         <source><reset to default></source>
-        <translation type="unfinished"><恢复为默认值></translation>
+        <translation><恢复为默认值></translation>
     </message>
     <message>
         <source>The actual default path value will be displayed after accepting the changes and opening this window again.</source>
-        <translation type="unfinished">当保存变化后再打开本对话框时,将显示新的默认路径.</translation>
+        <translation>当保存变化后再打开本对话框时,将显示新的默认路径.</translation>
     </message>
     <message>
         <source><not selected></source>
-        <translation type="unfinished"><未指定></translation>
+        <translation><未指定></translation>
     </message>
     <message>
         <source>Please use the <b>Other...</b> item from the drop-down list to select a path.</source>
-        <translation type="unfinished">请在下拉列表中点击 <b>其它...</b>  来指定一个目标路径.</translation>
+        <translation>请在下拉列表中点击 <b>其它...</b>  来指定一个目标路径.</translation>
     </message>
     <message>
         <source>Holds the folder path.</source>
-        <translation type="unfinished">文件夹路径。</translation>
+        <translation>文件夹路径。</translation>
     </message>
     <message>
         <source>Holds the file path.</source>
-        <translation type="unfinished">文件路径。</translation>
+        <translation>文件路径。</translation>
     </message>
 </context>
 <context>
@@ -3966,7 +4020,8 @@
     </message>
     <message>
         <source>Host interface <b>%1</b> does not currently have a valid IPv6 network mask prefix length.</source>
-        <translation type="unfinished"></translation>
+        <translatorcomment>todo</translatorcomment>
+        <translation>主机网卡 <b>%1</b> 目前没有有效的 IPv6 掩码前缀长度。</translation>
     </message>
 </context>
 <context>
@@ -4798,17 +4853,17 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">声音</translation>
+        <translation type="vanished">声音</translation>
     </message>
     <message>
         <source>Host Driver</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished"></translation>
+        <translation>主机音频驱动</translation>
     </message>
     <message>
         <source>Controller</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished">控制芯片</translation>
+        <translation>控制芯片</translation>
     </message>
 </context>
 <context>
@@ -4816,62 +4871,62 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">显示</translation>
+        <translation type="vanished">显示</translation>
     </message>
     <message>
         <source>Video Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished">显存大小</translation>
+        <translation>显存大小</translation>
     </message>
     <message>
         <source>Screens</source>
         <comment>details report</comment>
-        <translation type="unfinished">屏幕</translation>
+        <translation>屏幕</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已启用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>3D Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">3D 加速</translation>
+        <translation>3D 加速</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已启用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>2D Video Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">2D视频加速</translation>
+        <translation>2D视频加速</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">远程桌面服务器端口</translation>
+        <translation>远程桌面服务器端口</translation>
     </message>
     <message>
         <source>Remote Desktop Server</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">远程桌面服务器</translation>
+        <translation>远程桌面服务器</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
 </context>
 <context>
@@ -4879,70 +4934,70 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">常规</translation>
+        <translation type="vanished">常规</translation>
     </message>
     <message>
         <source>Name</source>
         <comment>details report</comment>
-        <translation type="unfinished"></translation>
+        <translation>名称</translation>
     </message>
     <message>
         <source>OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished">系统类型</translation>
+        <translation>系统类型</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">网络</translation>
+        <translation type="vanished">网络</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">桥接网络, %1</translation>
+        <translation>桥接网络, %1</translation>
     </message>
     <message>
         <source>Internal network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished"></translation>
+        <translation>内部网络,“%1”</translation>
     </message>
     <message>
         <source>Host-only adapter, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished"></translation>
+        <translation>仅主机(Host-Only)网络, '%1'</translation>
     </message>
     <message>
         <source>Generic, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">通用,“%1”</translation>
+        <translation>通用,“%1”</translation>
     </message>
     <message>
         <source>NAT network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">NAT 网络, '%1'</translation>
+        <translation>NAT 网络, '%1'</translation>
     </message>
     <message>
         <source>Adapter %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">网卡 %1</translation>
+        <translation>网卡 %1</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetworkStatistics</name>
     <message>
         <source>Data Transmitted</source>
-        <translation type="unfinished">数据传输</translation>
+        <translation>数据传输</translation>
     </message>
     <message>
         <source>Data Received</source>
-        <translation type="unfinished">数据接收</translation>
+        <translation>数据接收</translation>
     </message>
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">网络连接</translation>
+        <translation type="vanished">网络统计</translation>
     </message>
 </context>
 <context>
@@ -4950,17 +5005,17 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">并口</translation>
+        <translation type="vanished">并口</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished">端口 %1</translation>
+        <translation>端口 %1</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
 </context>
 <context>
@@ -4968,84 +5023,84 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">硬件特征</translation>
+        <translation type="vanished">运行属性</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
-        <translation type="unfinished">未检测到</translation>
+        <translation>未检测到</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest os type</comment>
-        <translation type="unfinished">未检测到</translation>
+        <translation>未检测到</translation>
     </message>
     <message>
         <source>Not Available</source>
         <comment>details report (VRDE server port)</comment>
-        <translation type="unfinished">不可用</translation>
+        <translation>不可用</translation>
     </message>
     <message>
         <source>Screen Resolution</source>
-        <translation type="unfinished">显示设置</translation>
+        <translation>显示设置</translation>
     </message>
     <message>
         <source>VM Uptime</source>
-        <translation type="unfinished">运行时间</translation>
+        <translation>运行时间</translation>
     </message>
     <message>
         <source>Clipboard Mode</source>
-        <translation type="unfinished">剪贴板模式</translation>
+        <translation>剪贴板模式</translation>
     </message>
     <message>
         <source>Drag and Drop Mode</source>
-        <translation type="unfinished">拖放模式</translation>
+        <translation>拖放模式</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">嵌套分页</translation>
+        <translation>嵌套分页</translation>
     </message>
     <message>
         <source>Unrestricted Execution</source>
         <comment>details report</comment>
-        <translation type="unfinished">不受限执行</translation>
+        <translation>不受限执行</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">半虚拟化接口</translation>
+        <translation>半虚拟化接口</translation>
     </message>
     <message>
         <source>Guest Additions</source>
-        <translation type="unfinished">增强功能</translation>
+        <translation>增强功能</translation>
     </message>
     <message>
         <source>Guest OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished"></translation>
+        <translation>虚拟电脑操作系统类型</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">远程桌面服务器端口</translation>
+        <translation>远程桌面服务器端口</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">串口</translation>
+        <translation type="vanished">串口</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
-        <translation type="unfinished">端口 %1</translation>
+        <translation>端口 %1</translation>
     </message>
 </context>
 <context>
@@ -5053,47 +5108,47 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished">共享文件夹</translation>
+        <translation type="vanished">共享文件夹</translation>
     </message>
     <message>
         <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
-        <translation type="unfinished">共享文件夹</translation>
+        <translation>共享文件夹</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">存储</translation>
+        <translation type="vanished">存储</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
-        <translation type="unfinished">(光驱)</translation>
+        <translation>(光驱)</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorageStatistics</name>
     <message>
         <source>DMA Transfers</source>
-        <translation type="unfinished">DMA 传输</translation>
+        <translation>DMA 传输</translation>
     </message>
     <message>
         <source>PIO Transfers</source>
-        <translation type="unfinished">PIO 传输</translation>
+        <translation>PIO 传输</translation>
     </message>
     <message>
         <source>Data Read</source>
-        <translation type="unfinished">读数据</translation>
+        <translation>读数据</translation>
     </message>
     <message>
         <source>Data Written</source>
-        <translation type="unfinished">写数据</translation>
+        <translation>写数据</translation>
     </message>
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">存储介质</translation>
+        <translation type="vanished">存储统计</translation>
     </message>
 </context>
 <context>
@@ -5101,107 +5156,107 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">系统</translation>
+        <translation type="vanished">系统</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已启用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已启用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已启用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>Base Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished">内存大小</translation>
+        <translation>内存大小</translation>
     </message>
     <message>
         <source>Processor(s)</source>
         <comment>details report</comment>
-        <translation type="unfinished">处理器</translation>
+        <translation>处理器</translation>
     </message>
     <message>
         <source>Execution Cap</source>
         <comment>details report</comment>
-        <translation type="unfinished">运行峰值</translation>
+        <translation>运行峰值</translation>
     </message>
     <message>
         <source>Boot Order</source>
         <comment>details report</comment>
-        <translation type="unfinished">启动顺序</translation>
+        <translation>启动顺序</translation>
     </message>
     <message>
         <source>ACPI</source>
         <comment>details report</comment>
-        <translation type="unfinished">ACPI</translation>
+        <translation>ACPI</translation>
     </message>
     <message>
         <source>I/O APIC</source>
         <comment>details report</comment>
-        <translation type="unfinished">I/O APIC</translation>
+        <translation>I/O APIC</translation>
     </message>
     <message>
         <source>PAE/NX</source>
         <comment>details report</comment>
-        <translation type="unfinished">PAE/NX</translation>
+        <translation>PAE/NX</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已启用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已启用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">嵌套分页</translation>
+        <translation>嵌套分页</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">半虚拟化接口</translation>
+        <translation>半虚拟化接口</translation>
     </message>
 </context>
 <context>
@@ -5209,22 +5264,22 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">USB设备</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished"></translation>
+        <translation>已禁用</translation>
     </message>
     <message>
         <source>Device Filters</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">设备筛选</translation>
+        <translation>设备筛选</translation>
     </message>
     <message>
         <source>%1 (%2 active)</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">%1 (%2 活动)</translation>
+        <translation>%1 (%2 活动)</translation>
     </message>
 </context>
 <context>
@@ -7038,7 +7093,7 @@
     </message>
     <message>
         <source>Add NVMe Controller</source>
-        <translation type="unfinished"></translation>
+        <translation>添加NVMe控制器</translation>
     </message>
 </context>
 <context>
@@ -7730,27 +7785,27 @@
     </message>
     <message>
         <source>This type of medium is attached directly or indirectly, preserved when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>这种介质是直接或间接分配的,生成快照时保存状态。</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, changes are wiped out the next time the virtual machine is started.</source>
-        <translation type="unfinished"></translation>
+        <translation>这种介质为间接分配, 其所做修改在虚拟机下次启动时清除。</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, ignored when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>该介质是直接分配的,生成快照时忽略。</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, allowed to be used concurrently by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>该介质是直接分配的,允许多个虚拟机同步访问。</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, and can be used by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>该介质是直接分配的,允许多个虚拟机访问。</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, so that one base medium can be used for several VMs which have their own differencing medium to store their modifications.</source>
-        <translation type="unfinished"></translation>
+        <translation>该介质是间接分配的, 多个虚拟机可共用一个基础介质,每个虚拟机各自存储一个差分介质。</translation>
     </message>
 </context>
 <context>
@@ -9337,7 +9392,7 @@
     </message>
     <message>
         <source><p>Failed to acquire the VirtualBox COM object.</p><p>The application will now terminate.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>获取 VirtualBox COM 对象失败.</p><p>应用程序将被中断.</p></translation>
     </message>
 </context>
 <context>
@@ -9436,7 +9491,7 @@
     </message>
     <message>
         <source>Holds the location of the virtual machine.</source>
-        <translation type="unfinished"></translation>
+        <translation>虚拟机的存放位置。</translation>
     </message>
 </context>
 <context>
@@ -9547,7 +9602,7 @@
     </message>
     <message>
         <source>Url not found on the server</source>
-        <translation type="unfinished"></translation>
+        <translation>未发现网址</translation>
     </message>
 </context>
 <context>
@@ -10503,15 +10558,15 @@
     <name>UIVMInformationDialog</name>
     <message>
         <source>%1 - Session Information</source>
-        <translation type="unfinished">%1 - 的运行状态</translation>
+        <translation>%1 - 的运行状态</translation>
     </message>
     <message>
         <source>Configuration &Details</source>
-        <translation type="unfinished">配置详情(&D)</translation>
+        <translation>配置详情(&D)</translation>
     </message>
     <message>
         <source>&Runtime Information</source>
-        <translation type="unfinished">运行状态(&R)</translation>
+        <translation>运行状态(&R)</translation>
     </message>
 </context>
 <context>
@@ -10599,15 +10654,15 @@
     </message>
     <message>
         <source>Filter</source>
-        <translation type="unfinished"></translation>
+        <translation>筛选器</translation>
     </message>
     <message>
         <source>Enter filtering string here</source>
-        <translation type="unfinished"></translation>
+        <translation>输入搜索字符串</translation>
     </message>
     <message>
         <source>Fil&ter</source>
-        <translation type="unfinished"></translation>
+        <translation>筛选(&T)</translation>
     </message>
 </context>
 <context>
@@ -11216,31 +11271,31 @@
     </message>
     <message>
         <source>Appliance is not signed</source>
-        <translation type="unfinished"></translation>
+        <translation>虚拟电脑未签名</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>虚拟电脑由 %1 签署(可信)</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>虚拟电脑由 %1 签署(已过期!)</translation>
     </message>
     <message>
         <source>Unverified signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>未验证的签名 %1!</translation>
     </message>
     <message>
         <source>Self signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>由 %1 自行签署(可信)</translation>
     </message>
     <message>
         <source>Self signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>由 %1 自行签署(已过期!)</translation>
     </message>
     <message>
         <source>Unverified self signed signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>未验证的自签署签名 %1!</translation>
     </message>
 </context>
 <context>
@@ -11488,11 +11543,11 @@
     </message>
     <message>
         <source><p><nobr>Holds the name or full path to the virtual machine folder you are about to create.</nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>拟创建的虚拟机的存储文件夹的名称或路径。</nobr></p></translation>
     </message>
     <message>
         <source><p><nobr>You are about to create the virtual machine in the following folder:</nobr><br><nobr><b>%1</b></nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>拟创建的虚拟机位于:</nobr><br><nobr><b>%1</b></nobr></p></translation>
     </message>
 </context>
 <context>
@@ -12264,7 +12319,7 @@
     <message>
         <source>Host-only Adapter</source>
         <comment>NetworkAttachmentType</comment>
-        <translation>仅主机(Host-Only)适配器</translation>
+        <translation>仅主机(Host-Only)网络</translation>
     </message>
     <message>
         <source><nobr>%1 MB</nobr></source>
@@ -13287,26 +13342,106 @@
     <message>
         <source>USB</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished"></translation>
+        <translation>USB设备</translation>
     </message>
     <message>
         <source>PCIe</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished"></translation>
+        <translation>PCIe</translation>
     </message>
     <message>
         <source>NVMe</source>
         <comment>StorageControllerType</comment>
-        <translation type="unfinished"></translation>
+        <translation>NVMe</translation>
     </message>
     <message>
         <source>NVMe Port %1</source>
         <comment>StorageSlot</comment>
-        <translation type="unfinished"></translation>
+        <translation>NVMe 端口 %1</translation>
     </message>
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
+        <translation type="vanished">运行属性</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">常规</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">预览</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">系统</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">显示</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">存储</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">声音</translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">网络</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">串口</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">并口</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">共享文件夹</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">用户界面</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">描述</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
index 71aae2a..c4ad723 100644
--- a/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/VirtualBox_zh_TW.ts
@@ -76,54 +76,38 @@
         <translation>VirtualBox 核心模組不符合這個 VirtualBox 的版本。 顯然 VirtualBox 的安裝不成功。 請嘗試完整解除安裝並重新安裝 VirtualBox。</translation>
     </message>
     <message>
-        <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/>  <font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
-        <translation type="vanished">VirtualBox 核心模組不符合這個 VirtualBox 的版本。 顯然 VirtualBox 的安裝不成功。 執行<br/><br/>  <font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>應能修正問題。 請確認您未混合 VirtualBox 的 OSE 版本與 PUEL 版本。</translation>
-    </message>
-    <message>
         <source>This error means that the kernel driver was either not able to allocate enough memory or that some mapping operation failed.</source>
         <translation>這個錯誤代表核心驅動程式無法配置足夠的記憶體或某些對應操作失敗。</translation>
     </message>
     <message>
-        <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/>  <font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>as root. If it is available in your distribution, you should install the DKMS package first. This package keeps track of Linux kernel changes and recompiles the vboxdrv kernel module if necessary. [...]
-        <translation type="vanished">未載入 VirtualBox Linux 核心驅動程式 (vboxdrv) 或是 /dev/vboxdrv 的權限問題。 請以 root 執行 <br/><br/>  <font color=blue>'/sbin/rcvboxdrv setup'</font><br/><br/>來重新安裝核心模組。 如果在您的發行中可以使用,您應先安裝 DKMS 套件。 這個套件保留 Linux 核心變更的追蹤並在需要時重新編譯 vboxdrv 核心模組。</translation>
-    </message>
-    <message>
         <source>The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>as root.</source>
-        <translation type="unfinished"></translation>
+        <translation>未載入 VirtualBox Linux 核心驅動程式 (vboxdrv) 或是 /dev/vboxdrv 的權限問題。 請以 root 身分執行 <br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>來重新安裝核心模組。</translation>
     </message>
     <message>
         <source>The VirtualBox kernel modules do not match this version of VirtualBox. The installation of VirtualBox was apparently not successful. Executing<br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>may correct this. Make sure that you do not mix the OSE version and the PUEL version of VirtualBox.</source>
-        <translation type="unfinished"></translation>
+        <translation>VirtualBox 核心模組不符合這個 VirtualBox 的版本。 顯然 VirtualBox 的安裝不成功。 執行br/><br/>  <font color=blue>'/sbin/vboxconfig'</font><br/><br/>應可以修正問題。 請確認您未混合 VirtualBox 的 OSE 版本與 PUEL 版本。</translation>
     </message>
 </context>
 <context>
     <name>QIArrowButtonPress</name>
     <message>
         <source>&Back</source>
-        <translation type="unfinished">上一步(&B)</translation>
+        <translation>上一步(&B)</translation>
     </message>
     <message>
         <source>&Next</source>
-        <translation type="unfinished"></translation>
+        <translation>下一步(&N)</translation>
     </message>
 </context>
 <context>
     <name>QIArrowSplitter</name>
     <message>
-        <source>&Back</source>
-        <translation type="vanished">上一步(&B)</translation>
-    </message>
-    <message>
-        <source>&Next</source>
-        <translation type="vanished">下一步(&N)</translation>
-    </message>
-    <message>
         <source>&Details</source>
-        <translation type="unfinished">詳細資料(&D)</translation>
+        <translation>詳細資料(&D)</translation>
     </message>
     <message>
         <source>&Details (%1 of %2)</source>
-        <translation type="unfinished">詳細資料 (%1 / %2)(&D)</translation>
+        <translation>詳細資料 (%1 / %2)(&D)</translation>
     </message>
 </context>
 <context>
@@ -163,14 +147,6 @@
         <translation>取消</translation>
     </message>
     <message>
-        <source>&Details</source>
-        <translation type="vanished">詳細資料(&D)</translation>
-    </message>
-    <message>
-        <source>&Details (%1 of %2)</source>
-        <translation type="vanished">詳細資料 (%1 / %2)(&D)</translation>
-    </message>
-    <message>
         <source>Copy all errors to the clipboard</source>
         <translation>複製所有錯誤到剪貼簿</translation>
     </message>
@@ -475,7 +451,7 @@
     </message>
     <message>
         <source>&VirtualBox</source>
-        <translation>&VirtualBox</translation>
+        <translation>VirtualBox(&V)</translation>
     </message>
     <message>
         <source>&Menu Bar</source>
@@ -662,7 +638,7 @@
     </message>
     <message>
         <source>Take guest display screenshot</source>
-        <translation>取得客體顯示快照</translation>
+        <translation>取得客體顯示螢幕快照</translation>
     </message>
     <message>
         <source>Display virtual machine settings window to configure video capture</source>
@@ -922,39 +898,39 @@
     </message>
     <message>
         <source>&VirtualBox Bug Tracker...</source>
-        <translation type="unfinished"></translation>
+        <translation>VirtualBox 偵錯追蹤器(&V)...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product bug tracker</source>
-        <translation type="unfinished"></translation>
+        <translation>開啟瀏覽器並移至 VirtualBox 產品偵錯追蹤器</translation>
     </message>
     <message>
         <source>&VirtualBox Forums...</source>
-        <translation type="unfinished"></translation>
+        <translation>VirtualBox 討論區(&V)...</translation>
     </message>
     <message>
         <source>Open the browser and go to the VirtualBox product forums</source>
-        <translation type="unfinished"></translation>
+        <translation>開啟瀏覽器並移至 VirtualBox 產品討論區</translation>
     </message>
     <message>
         <source>&Oracle Web Site...</source>
-        <translation type="unfinished"></translation>
+        <translation>Oracle 網站(&O)...</translation>
     </message>
     <message>
         <source>Open the browser and go to the Oracle web site</source>
-        <translation type="unfinished"></translation>
+        <translation>開啟瀏覽器並移至 Oracle 網站</translation>
     </message>
     <message>
         <source>&Detach GUI</source>
-        <translation type="unfinished"></translation>
+        <translation>卸除 GUI(&D)</translation>
     </message>
     <message>
         <source>Detach the GUI from headless VM</source>
-        <translation type="unfinished"></translation>
+        <translation>從無表頭 VM 卸除 GUI</translation>
     </message>
     <message>
         <source>Disable Dock Icon Overlay</source>
-        <translation type="unfinished"></translation>
+        <translation>停用停駐圖示重疊</translation>
     </message>
 </context>
 <context>
@@ -1118,62 +1094,112 @@
     <name>UIApplianceUnverifiedCertificateViewer</name>
     <message>
         <source>Unverifiable Certificate! Continue?</source>
-        <translation type="unfinished"></translation>
+        <translation>無法驗證憑證! 繼續?</translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified self signed certificate issued by '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>應用程式由無法驗證的自我簽章憑證所簽署,發行者「%1」。 我們建議只在匯入時進行,如果您確認這個項目是受信任的。</b></translation>
     </message>
     <message>
         <source><b>The appliance is signed by an unverified certificate issued to '%1'. We recommend to only proceed with the importing if you are sure you should trust this entity.</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>應用程式由無法驗證的憑證所簽署,發行給「%1」。 我們建議只在匯入時繼續,如果您確認這個項目是受信任的。</b></translation>
     </message>
     <message>
         <source>Issuer:               %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">發行者:               %1</translation>
     </message>
     <message>
         <source>Subject:              %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">主旨:              %1</translation>
     </message>
     <message>
         <source>Not Valid Before:     %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">在此之前無效:     %1</translation>
     </message>
     <message>
         <source>Not Valid After:      %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">在此之後無效:      %1</translation>
     </message>
     <message>
         <source>Serial Number:        %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">序號:        %1</translation>
     </message>
     <message>
         <source>Self-Signed:          %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">自我簽章:          %1</translation>
     </message>
     <message>
         <source>True</source>
-        <translation type="unfinished"></translation>
+        <translation>True</translation>
     </message>
     <message>
         <source>False</source>
-        <translation type="unfinished"></translation>
+        <translation>False</translation>
     </message>
     <message>
         <source>Authority (CA):       %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">機構 (CA):       %1</translation>
     </message>
     <message>
         <source>Public Algorithm:     %1 (%2)</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">公開演算法:     %1 (%2)</translation>
     </message>
     <message>
         <source>Signature Algorithm:  %1 (%2)</source>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">簽章演算法:  %1 (%2)</translation>
     </message>
     <message>
         <source>X.509 Version Number: %1</source>
+        <translation type="vanished">X.509 版號: %1</translation>
+    </message>
+    <message>
+        <source><tr><td>%1:</td><td>%2</td></tr></source>
+        <comment>key: value</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Issuer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Subject</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid Before</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not Valid After</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Self-Signed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Authority (CA)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Public Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 (%2)</source>
+        <comment>value (clarification)</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Signature Algorithm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>X.509 Version Number</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1243,62 +1269,62 @@
     <name>UIEmptyFilePathSelector</name>
     <message>
         <source>Choose...</source>
-        <translation type="unfinished">選擇...</translation>
+        <translation>選擇...</translation>
     </message>
 </context>
 <context>
     <name>UIFilePathSelector</name>
     <message>
         <source>&Copy</source>
-        <translation type="unfinished">複製(&C)</translation>
+        <translation>複製(&C)</translation>
     </message>
     <message>
         <source>Other...</source>
-        <translation type="unfinished">其它...</translation>
+        <translation>其它...</translation>
     </message>
     <message>
         <source>Reset</source>
-        <translation type="unfinished">重設</translation>
+        <translation>重設</translation>
     </message>
     <message>
         <source>Displays a window to select a different folder.</source>
-        <translation type="unfinished">顯示選取不同資料夾的視窗。</translation>
+        <translation>顯示視窗以選取不同資料夾。</translation>
     </message>
     <message>
         <source>Resets the folder path to the default value.</source>
-        <translation type="unfinished">重設資料夾路徑為預設值。</translation>
+        <translation>重設資料夾路徑為預設值。</translation>
     </message>
     <message>
         <source>Displays a window to select a different file.</source>
-        <translation type="unfinished">顯示選取不同檔案的視窗。</translation>
+        <translation>顯示視窗以選取不同檔案。</translation>
     </message>
     <message>
         <source>Resets the file path to the default value.</source>
-        <translation type="unfinished">重設檔案路徑為預設值。</translation>
+        <translation>重設檔案路徑為預設值。</translation>
     </message>
     <message>
         <source><reset to default></source>
-        <translation type="unfinished"><重設為預設值></translation>
+        <translation><重設為預設值></translation>
     </message>
     <message>
         <source>The actual default path value will be displayed after accepting the changes and opening this window again.</source>
-        <translation type="unfinished">接受變更並重新開啟這個視窗後,將顯示實際的預設路徑值。</translation>
+        <translation>接受變更並再次開啟這個視窗後將顯示實際預設路徑值。</translation>
     </message>
     <message>
         <source><not selected></source>
-        <translation type="unfinished"><未選取></translation>
+        <translation><未選取></translation>
     </message>
     <message>
         <source>Please use the <b>Other...</b> item from the drop-down list to select a path.</source>
-        <translation type="unfinished">請從下拉清單使用 [<b>其它...</b>] 項目選取路徑。</translation>
+        <translation>請從下拉清單使用 <b>其它...</b> 項目來選取路徑。</translation>
     </message>
     <message>
         <source>Holds the folder path.</source>
-        <translation type="unfinished">保留資料夾路徑。</translation>
+        <translation>保留資料夾路徑。</translation>
     </message>
     <message>
         <source>Holds the file path.</source>
-        <translation type="unfinished">保留檔案路徑。</translation>
+        <translation>保留檔案路徑。</translation>
     </message>
 </context>
 <context>
@@ -2237,7 +2263,7 @@
     </message>
     <message>
         <source>Host interface <b>%1</b> does not currently have a valid IPv6 network mask prefix length.</source>
-        <translation type="unfinished"></translation>
+        <translation>主機介面 <b>%1</b> 目前的 IPv6 網路遮罩前置長度無效。</translation>
     </message>
 </context>
 <context>
@@ -2755,17 +2781,17 @@
     <name>UIInformationDataAudio</name>
     <message>
         <source>Audio</source>
-        <translation type="unfinished">音效</translation>
+        <translation type="vanished">音訊</translation>
     </message>
     <message>
         <source>Host Driver</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished">主機驅動程式</translation>
+        <translation>主機驅動程式</translation>
     </message>
     <message>
         <source>Controller</source>
         <comment>details report (audio)</comment>
-        <translation type="unfinished">控制器</translation>
+        <translation>控制器</translation>
     </message>
 </context>
 <context>
@@ -2773,62 +2799,62 @@
     <message>
         <source>Display</source>
         <comment>details report</comment>
-        <translation type="unfinished">顯示</translation>
+        <translation type="vanished">顯示</translation>
     </message>
     <message>
         <source>Video Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished">視訊記憶體</translation>
+        <translation>視訊記憶體</translation>
     </message>
     <message>
         <source>Screens</source>
         <comment>details report</comment>
-        <translation type="unfinished">畫面</translation>
+        <translation>畫面</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished">啟用</translation>
+        <translation>啟用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (3D Acceleration)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>3D Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">3D 加速</translation>
+        <translation>3D 加速</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished">啟用</translation>
+        <translation>啟用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (2D Video Acceleration)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>2D Video Acceleration</source>
         <comment>details report</comment>
-        <translation type="unfinished">2D 視訊加速</translation>
+        <translation>2D 視訊加速</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">遠端桌面伺服器連接埠</translation>
+        <translation>遠端桌面伺服器埠</translation>
     </message>
     <message>
         <source>Remote Desktop Server</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">遠端桌面伺服器</translation>
+        <translation>遠端桌面伺服器</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
 </context>
 <context>
@@ -2836,70 +2862,70 @@
     <message>
         <source>General</source>
         <comment>details report</comment>
-        <translation type="unfinished">一般</translation>
+        <translation type="vanished">一般</translation>
     </message>
     <message>
         <source>Name</source>
         <comment>details report</comment>
-        <translation type="unfinished">名稱</translation>
+        <translation>名稱</translation>
     </message>
     <message>
         <source>OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished">作業系統類型</translation>
+        <translation>OS 類型</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetwork</name>
     <message>
         <source>Network</source>
-        <translation type="unfinished">網路</translation>
+        <translation type="vanished">網路</translation>
     </message>
     <message>
         <source>Bridged adapter, %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">橋接介面卡,%1</translation>
+        <translation>橋接的介面卡,%1</translation>
     </message>
     <message>
         <source>Internal network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">內部網路,「%1」</translation>
+        <translation>內部網路,「%1」</translation>
     </message>
     <message>
         <source>Host-only adapter, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">「僅限主機」介面卡,「%1」</translation>
+        <translation>僅限主機介面卡,「%1」</translation>
     </message>
     <message>
         <source>Generic, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">通用,「%1」</translation>
+        <translation>通用,「%1」</translation>
     </message>
     <message>
         <source>NAT network, '%1'</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished">NAT 網路,「%1」</translation>
+        <translation>NAT 網路,「%1」</translation>
     </message>
     <message>
         <source>Adapter %1</source>
         <comment>details report (network)</comment>
-        <translation type="unfinished"></translation>
+        <translation>介面卡 %1</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataNetworkStatistics</name>
     <message>
         <source>Data Transmitted</source>
-        <translation type="unfinished">資料已傳送</translation>
+        <translation>傳送的資料</translation>
     </message>
     <message>
         <source>Data Received</source>
-        <translation type="unfinished">資料已接收</translation>
+        <translation>接收的資料</translation>
     </message>
     <message>
         <source>Network Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">網路統計</translation>
+        <translation type="vanished">網路統計</translation>
     </message>
 </context>
 <context>
@@ -2907,17 +2933,17 @@
     <message>
         <source>Parallel Ports</source>
         <comment>details report</comment>
-        <translation type="unfinished">並列埠</translation>
+        <translation type="vanished">並列埠</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished">連接埠 %1</translation>
+        <translation>連接埠 %1</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (parallel ports)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
 </context>
 <context>
@@ -2925,84 +2951,84 @@
     <message>
         <source>Runtime Attributes</source>
         <comment>details report</comment>
-        <translation type="unfinished">執行階段屬性</translation>
+        <translation type="vanished">執行階段屬性</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest additions</comment>
-        <translation type="unfinished">未偵測到</translation>
+        <translation>未偵測到</translation>
     </message>
     <message>
         <source>Not Detected</source>
         <comment>guest os type</comment>
-        <translation type="unfinished">未偵測到</translation>
+        <translation>未偵測到</translation>
     </message>
     <message>
         <source>Not Available</source>
         <comment>details report (VRDE server port)</comment>
-        <translation type="unfinished">不可用</translation>
+        <translation>不可使用</translation>
     </message>
     <message>
         <source>Screen Resolution</source>
-        <translation type="unfinished">螢幕解析度</translation>
+        <translation>螢幕解析度</translation>
     </message>
     <message>
         <source>VM Uptime</source>
-        <translation type="unfinished">VM 開機時間</translation>
+        <translation>VM 正常運行時間</translation>
     </message>
     <message>
         <source>Clipboard Mode</source>
-        <translation type="unfinished">剪貼簿模式</translation>
+        <translation>剪貼簿模式</translation>
     </message>
     <message>
         <source>Drag and Drop Mode</source>
-        <translation type="unfinished">拖放模式</translation>
+        <translation>拖放模式</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">巢式分頁</translation>
+        <translation>Nested Paging</translation>
     </message>
     <message>
         <source>Unrestricted Execution</source>
         <comment>details report</comment>
-        <translation type="unfinished">無限制的執行</translation>
+        <translation>未受限制的執行</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">半虛擬化介面</translation>
+        <translation>半虛擬化介面</translation>
     </message>
     <message>
         <source>Guest Additions</source>
-        <translation type="unfinished">Guest Additions</translation>
+        <translation>Guest Additions</translation>
     </message>
     <message>
         <source>Guest OS Type</source>
         <comment>details report</comment>
-        <translation type="unfinished">客體作業系統類型</translation>
+        <translation>客體 OS 類型</translation>
     </message>
     <message>
         <source>Remote Desktop Server Port</source>
         <comment>details report (VRDE Server)</comment>
-        <translation type="unfinished">遠端桌面伺服器連接埠</translation>
+        <translation>遠端桌面伺服器埠</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataSerialPorts</name>
     <message>
         <source>Serial Ports</source>
-        <translation type="unfinished">串列埠</translation>
+        <translation type="vanished">串列埠</translation>
     </message>
     <message>
         <source>Port %1</source>
         <comment>details report (serial ports)</comment>
-        <translation type="unfinished">連接埠 %1</translation>
+        <translation>連接埠 %1</translation>
     </message>
 </context>
 <context>
@@ -3010,47 +3036,47 @@
     <message>
         <source>Shared Folders</source>
         <comment>details report</comment>
-        <translation type="unfinished"></translation>
+        <translation type="vanished">共用的資料夾</translation>
     </message>
     <message>
         <source>Shared Folders</source>
         <comment>details report (shared folders)</comment>
-        <translation type="unfinished"></translation>
+        <translation>共用的資料夾</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorage</name>
     <message>
         <source>Storage</source>
-        <translation type="unfinished">存放裝置</translation>
+        <translation type="vanished">存放裝置</translation>
     </message>
     <message>
         <source>(Optical Drive)</source>
-        <translation type="unfinished">(光碟機)</translation>
+        <translation>(光碟機)</translation>
     </message>
 </context>
 <context>
     <name>UIInformationDataStorageStatistics</name>
     <message>
         <source>DMA Transfers</source>
-        <translation type="unfinished">DMA 傳輸</translation>
+        <translation>DMA 傳輸</translation>
     </message>
     <message>
         <source>PIO Transfers</source>
-        <translation type="unfinished">PIO 傳輸</translation>
+        <translation>PIO 傳輸</translation>
     </message>
     <message>
         <source>Data Read</source>
-        <translation type="unfinished">資料讀取</translation>
+        <translation>資料讀取</translation>
     </message>
     <message>
         <source>Data Written</source>
-        <translation type="unfinished">資料寫入</translation>
+        <translation>資料寫入</translation>
     </message>
     <message>
         <source>Storage Statistics</source>
         <comment>details report</comment>
-        <translation type="unfinished">存放裝置統計</translation>
+        <translation type="vanished">存放裝置統計</translation>
     </message>
 </context>
 <context>
@@ -3058,107 +3084,107 @@
     <message>
         <source>System</source>
         <comment>details report</comment>
-        <translation type="unfinished">系統</translation>
+        <translation type="vanished">系統</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished">啟用</translation>
+        <translation>啟用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (ACPI)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished">啟用</translation>
+        <translation>啟用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (I/O APIC)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished">啟用</translation>
+        <translation>啟用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (PAE/NX)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>Base Memory</source>
         <comment>details report</comment>
-        <translation type="unfinished"></translation>
+        <translation>基礎記憶體</translation>
     </message>
     <message>
         <source>Processor(s)</source>
         <comment>details report</comment>
-        <translation type="unfinished">處理器</translation>
+        <translation>處理器</translation>
     </message>
     <message>
         <source>Execution Cap</source>
         <comment>details report</comment>
-        <translation type="unfinished">執行上限</translation>
+        <translation>執行上限</translation>
     </message>
     <message>
         <source>Boot Order</source>
         <comment>details report</comment>
-        <translation type="unfinished">開機順序</translation>
+        <translation>開機順序</translation>
     </message>
     <message>
         <source>ACPI</source>
         <comment>details report</comment>
-        <translation type="unfinished">ACPI</translation>
+        <translation>ACPI</translation>
     </message>
     <message>
         <source>I/O APIC</source>
         <comment>details report</comment>
-        <translation type="unfinished">I/O APIC</translation>
+        <translation>I/O APIC</translation>
     </message>
     <message>
         <source>PAE/NX</source>
         <comment>details report</comment>
-        <translation type="unfinished">PAE/NX</translation>
+        <translation>PAE/NX</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished">啟用</translation>
+        <translation>啟用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (VT-x/AMD-V)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>VT-x/AMD-V</source>
         <comment>details report</comment>
-        <translation type="unfinished">VT-x/AMD-V</translation>
+        <translation>VT-x/AMD-V</translation>
     </message>
     <message>
         <source>Enabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished">啟用</translation>
+        <translation>啟用</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (Nested Paging)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>Nested Paging</source>
         <comment>details report</comment>
-        <translation type="unfinished">巢式分頁</translation>
+        <translation>Nested Paging</translation>
     </message>
     <message>
         <source>Paravirtualization Interface</source>
         <comment>details report</comment>
-        <translation type="unfinished">半虛擬化介面</translation>
+        <translation>半虛擬化介面</translation>
     </message>
 </context>
 <context>
@@ -3166,22 +3192,22 @@
     <message>
         <source>USB</source>
         <comment>details report</comment>
-        <translation type="unfinished">USB</translation>
+        <translation type="vanished">USB</translation>
     </message>
     <message>
         <source>Disabled</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">停用</translation>
+        <translation>停用</translation>
     </message>
     <message>
         <source>Device Filters</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">裝置篩選器</translation>
+        <translation>裝置篩選器</translation>
     </message>
     <message>
         <source>%1 (%2 active)</source>
         <comment>details report (USB)</comment>
-        <translation type="unfinished">%1 (%2 個啟用)</translation>
+        <translation>%1 (%2 個啟用)</translation>
     </message>
 </context>
 <context>
@@ -3195,7 +3221,7 @@
     <name>UIMachineLogic</name>
     <message>
         <source>Select a filename for the screenshot ...</source>
-        <translation>選取快照的檔案名稱 ...</translation>
+        <translation>選取螢幕快照的檔案名稱 ...</translation>
     </message>
 </context>
 <context>
@@ -4351,7 +4377,7 @@
     </message>
     <message>
         <source>Add NVMe Controller</source>
-        <translation type="unfinished"></translation>
+        <translation>加入 NVMe 控制器</translation>
     </message>
 </context>
 <context>
@@ -4539,12 +4565,12 @@
     <message>
         <source>%1 CPU</source>
         <comment>%1 is 1 for now</comment>
-        <translation>%1 CPU</translation>
+        <translation>%1 個 CPU</translation>
     </message>
     <message>
         <source>%1 CPUs</source>
         <comment>%1 is host cpu count * 2 for now</comment>
-        <translation>%1 CPUs</translation>
+        <translation>%1 個 CPUs</translation>
     </message>
     <message>
         <source>%1%</source>
@@ -4826,7 +4852,7 @@
     <name>UIMediumTypeChangeDialog</name>
     <message>
         <source>Modify medium attributes</source>
-        <translation>修改磁碟映像檔案屬性</translation>
+        <translation>修改媒體屬性</translation>
     </message>
     <message>
         <source><p>You are about to change the settings of the disk image file <b>%1</b>.</p><p>Please choose one of the following modes and press <b>%2</b> to proceed or <b>%3</b> otherwise.</p></source>
@@ -4838,27 +4864,27 @@
     </message>
     <message>
         <source>This type of medium is attached directly or indirectly, preserved when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>這個媒體類型是直接或間接附加,取得快照時保留。</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, changes are wiped out the next time the virtual machine is started.</source>
-        <translation type="unfinished"></translation>
+        <translation>這個媒體類型是間接附加,下次虛擬電腦啟動時清除變更。</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, ignored when taking snapshots.</source>
-        <translation type="unfinished"></translation>
+        <translation>這個媒體類型是直接附加,取得快照時忽略。</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, allowed to be used concurrently by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>這個媒體類型是直接附加,允許由數部電腦同時使用。</translation>
     </message>
     <message>
         <source>This type of medium is attached directly, and can be used by several machines.</source>
-        <translation type="unfinished"></translation>
+        <translation>這個媒體類型是直接附加,能由數部電腦使用。</translation>
     </message>
     <message>
         <source>This type of medium is attached indirectly, so that one base medium can be used for several VMs which have their own differencing medium to store their modifications.</source>
-        <translation type="unfinished"></translation>
+        <translation>這個媒體類型是間接附加,因此數部虛擬電腦能使用一個基礎媒體,虛擬電腦有自己的差異媒體來存放自己的修改。</translation>
     </message>
 </context>
 <context>
@@ -5923,7 +5949,7 @@
     </message>
     <message>
         <source><p>Failed to acquire the VirtualBox COM object.</p><p>The application will now terminate.</p></source>
-        <translation type="unfinished"></translation>
+        <translation><p>獲取 VirtualBox COM 物件失敗。</p><p>應用程式現在將終止。</p></translation>
     </message>
 </context>
 <context>
@@ -5984,7 +6010,7 @@
     </message>
     <message>
         <source>Holds the location of the virtual machine.</source>
-        <translation type="unfinished"></translation>
+        <translation>保留虛擬機器的位置。</translation>
     </message>
 </context>
 <context>
@@ -6627,15 +6653,15 @@
     <name>UIVMInformationDialog</name>
     <message>
         <source>%1 - Session Information</source>
-        <translation type="unfinished">%1 - 工作階段資訊</translation>
+        <translation>%1 - 工作階段資訊</translation>
     </message>
     <message>
         <source>Configuration &Details</source>
-        <translation type="unfinished">組態詳細資料(&D)</translation>
+        <translation>組態詳細資料(&D)</translation>
     </message>
     <message>
         <source>&Runtime Information</source>
-        <translation type="unfinished">執行階段資訊(&R)</translation>
+        <translation>執行階段資訊(&R)</translation>
     </message>
 </context>
 <context>
@@ -6723,15 +6749,15 @@
     </message>
     <message>
         <source>Filter</source>
-        <translation type="unfinished"></translation>
+        <translation>篩選器</translation>
     </message>
     <message>
         <source>Enter filtering string here</source>
-        <translation type="unfinished"></translation>
+        <translation>在此輸入篩選器字串</translation>
     </message>
     <message>
         <source>Fil&ter</source>
-        <translation type="unfinished"></translation>
+        <translation>篩選器(&T)</translation>
     </message>
 </context>
 <context>
@@ -7200,31 +7226,31 @@
     </message>
     <message>
         <source>Appliance is not signed</source>
-        <translation type="unfinished"></translation>
+        <translation>應用裝置未簽署</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>應用裝置由 %1 簽署 (受信任!)</translation>
     </message>
     <message>
         <source>Appliance signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>應用裝置由 %1 簽署 (過期!)</translation>
     </message>
     <message>
         <source>Unverified signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 簽署的未驗證簽章!</translation>
     </message>
     <message>
         <source>Self signed by %1 (trusted)</source>
-        <translation type="unfinished"></translation>
+        <translation>由 %1 自我簽章 (受信任!)</translation>
     </message>
     <message>
         <source>Self signed by %1 (expired!)</source>
-        <translation type="unfinished"></translation>
+        <translation>由 %1 自我簽章 (過期!)</translation>
     </message>
     <message>
         <source>Unverified self signed signature by %1!</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 簽署的未驗證自我簽章!</translation>
     </message>
 </context>
 <context>
@@ -7366,11 +7392,11 @@
     </message>
     <message>
         <source><p><nobr>Holds the name or full path to the virtual machine folder you are about to create.</nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>保留您能建立到虛擬機器資料夾的名稱或完整路徑。</nobr></p></translation>
     </message>
     <message>
         <source><p><nobr>You are about to create the virtual machine in the following folder:</nobr><br><nobr><b>%1</b></nobr></p></source>
-        <translation type="unfinished"></translation>
+        <translation><p><nobr>您即將在以下資料夾建立虛擬機器:</nobr><br><nobr><b>%1</b></nobr></p></translation>
     </message>
 </context>
 <context>
@@ -7389,68 +7415,6 @@
     </message>
 </context>
 <context>
-    <name>VBoxEmptyFileSelector</name>
-    <message>
-        <source>Choose...</source>
-        <translation type="vanished">選擇...</translation>
-    </message>
-</context>
-<context>
-    <name>VBoxFilePathSelectorWidget</name>
-    <message>
-        <source><reset to default></source>
-        <translation type="vanished"><重設為預設值></translation>
-    </message>
-    <message>
-        <source><not selected></source>
-        <translation type="vanished"><未選取></translation>
-    </message>
-    <message>
-        <source>Please use the <b>Other...</b> item from the drop-down list to select a path.</source>
-        <translation type="vanished">請從下拉清單使用 [<b>其它...</b>] 項目選取路徑。</translation>
-    </message>
-    <message>
-        <source>Other...</source>
-        <translation type="vanished">其它...</translation>
-    </message>
-    <message>
-        <source>Reset</source>
-        <translation type="vanished">重設</translation>
-    </message>
-    <message>
-        <source>Resets the folder path to the default value.</source>
-        <translation type="vanished">重設資料夾路徑為預設值。</translation>
-    </message>
-    <message>
-        <source>Resets the file path to the default value.</source>
-        <translation type="vanished">重設檔案路徑為預設值。</translation>
-    </message>
-    <message>
-        <source>&Copy</source>
-        <translation type="vanished">複製(&C)</translation>
-    </message>
-    <message>
-        <source>The actual default path value will be displayed after accepting the changes and opening this window again.</source>
-        <translation type="vanished">接受變更並重新開啟這個視窗後,將顯示實際的預設路徑值。</translation>
-    </message>
-    <message>
-        <source>Displays a window to select a different folder.</source>
-        <translation type="vanished">顯示選取不同資料夾的視窗。</translation>
-    </message>
-    <message>
-        <source>Displays a window to select a different file.</source>
-        <translation type="vanished">顯示選取不同檔案的視窗。</translation>
-    </message>
-    <message>
-        <source>Holds the folder path.</source>
-        <translation type="vanished">保留資料夾路徑。</translation>
-    </message>
-    <message>
-        <source>Holds the file path.</source>
-        <translation type="vanished">保留檔案路徑。</translation>
-    </message>
-</context>
-<context>
     <name>VBoxGlobal</name>
     <message>
         <source>Unknown device %1:%2</source>
@@ -8891,26 +8855,106 @@
     <message>
         <source>USB</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished">USB</translation>
+        <translation>USB</translation>
     </message>
     <message>
         <source>PCIe</source>
         <comment>StorageBus</comment>
-        <translation type="unfinished"></translation>
+        <translation>PCIe</translation>
     </message>
     <message>
         <source>NVMe</source>
         <comment>StorageControllerType</comment>
-        <translation type="unfinished"></translation>
+        <translation>NVMe</translation>
     </message>
     <message>
         <source>NVMe Port %1</source>
         <comment>StorageSlot</comment>
-        <translation type="unfinished"></translation>
+        <translation>NVMe 連接埠 %1</translation>
     </message>
     <message>
         <source>RuntimeAttributes</source>
         <comment>DetailsElementType</comment>
+        <translation type="vanished">執行階段屬性</translation>
+    </message>
+    <message>
+        <source>General</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">一般</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">預覽</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">系統</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">顯示</translation>
+    </message>
+    <message>
+        <source>Storage</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">存放裝置</translation>
+    </message>
+    <message>
+        <source>Audio</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">網路</translation>
+    </message>
+    <message>
+        <source>Serial ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">串列埠</translation>
+    </message>
+    <message>
+        <source>Parallel ports</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">並列埠</translation>
+    </message>
+    <message>
+        <source>USB</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">USB</translation>
+    </message>
+    <message>
+        <source>Shared folders</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">共用的資料夾</translation>
+    </message>
+    <message>
+        <source>User interface</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">使用者介面</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished">描述</translation>
+    </message>
+    <message>
+        <source>Runtime attributes</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage statistics</source>
+        <comment>InformationElementType</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network statistics</source>
+        <comment>InformationElementType</comment>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -9060,15 +9104,15 @@
     <name>VBoxScreenshotViewer</name>
     <message>
         <source>Screenshot of %1 (%2)</source>
-        <translation>%1 (%2) 的快照</translation>
+        <translation>%1 (%2) 的螢幕快照</translation>
     </message>
     <message>
         <source>Click to view non-scaled screenshot.</source>
-        <translation>按一下檢視非縮放的快照。</translation>
+        <translation>按一下檢視非縮放的螢幕快照。</translation>
     </message>
     <message>
         <source>Click to view scaled screenshot.</source>
-        <translation>按一下檢視縮放的快照。</translation>
+        <translation>按一下檢視縮放的螢幕快照。</translation>
     </message>
 </context>
 <context>
@@ -9079,7 +9123,7 @@
     </message>
     <message>
         <source>Click to enlarge the screenshot.</source>
-        <translation>按一下放大快照。</translation>
+        <translation>按一下放大螢幕快照。</translation>
     </message>
     <message>
         <source>&Name:</source>
diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_el.ts b/src/VBox/Frontends/VirtualBox/nls/qt_el.ts
index 5eea599..1e64dab 100644
--- a/src/VBox/Frontends/VirtualBox/nls/qt_el.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/qt_el.ts
@@ -104,8 +104,8 @@ have libgstreamer-plugins-base installed.</source>
     <message numerus="yes">
         <source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
         <translation>
-            <numerusform>Ένα απαιτούμενο codec λείπει. Χρειάζεται να εγκαταστήσετε το ακόλουθο codec για να παίξετε το περιεχόμενο: %0</numerusform>
-            <numerusform>Ένα απαιτούμενο codec λείπει. Χρειάζεται να εγκαταστήσετε τα ακόλουθα codec για να παίξετε το περιεχόμενο: %0</numerusform>
+            <numerusform>Ένα απαιτούμενο codec λείπει. Χρειάζεται να εγκαταστήσετε το ακόλουθο codec για να αναπαράγετε το περιεχόμενο: %0</numerusform>
+            <numerusform>Κάποια απαιτούμενα codec λείπουν. Χρειάζεται να εγκαταστήσετε τα ακόλουθα codec για να αναπαράγετε το περιεχόμενο: %0</numerusform>
         </translation>
     </message>
     <message>
@@ -1710,7 +1710,7 @@ Do you want to delete it anyway?</source>
     </message>
     <message>
         <source>Proxy authentication required</source>
-        <translation>Ο μεσολαβητής απαιτεί αυθεντικοποίηση</translation>
+        <translation>Ο διαμεσολαβητής απαιτεί αυθεντικοποίηση</translation>
     </message>
     <message>
         <source>Authentication required</source>
@@ -1722,7 +1722,7 @@ Do you want to delete it anyway?</source>
     </message>
     <message>
         <source>Proxy requires authentication</source>
-        <translation>Ο μεσολαβητής απαιτεί αυθεντικοποίηση</translation>
+        <translation>Ο διαμεσολαβητής απαιτεί αυθεντικοποίηση</translation>
     </message>
     <message>
         <source>Host requires authentication</source>
@@ -2352,7 +2352,7 @@ Do you want to delete it anyway?</source>
     </message>
     <message>
         <source>The proxy type is invalid for this operation</source>
-        <translation>Ο μεσολαβητής δεν είναι έγκυρος για αυτή τη λειτουργία</translation>
+        <translation>Ο διαμεσολαβητής δεν είναι έγκυρος για αυτή τη λειτουργία</translation>
     </message>
 </context>
 <context>
@@ -3061,7 +3061,7 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>None</source>
-        <translation>Καμμία</translation>
+        <translation>Καμία</translation>
     </message>
     <message>
         <source>Long side</source>
@@ -3995,47 +3995,47 @@ Please choose a different file name.</source>
     <name>QUnicodeControlCharacterMenu</name>
     <message>
         <source>LRM Left-to-right mark</source>
-        <translation type="unfinished"></translation>
+        <translation>LRM Σημάδι από αριστερά στα δεξιά</translation>
     </message>
     <message>
         <source>RLM Right-to-left mark</source>
-        <translation type="unfinished"></translation>
+        <translation>RLM Σημάδι από δεξιά στα αριστερά</translation>
     </message>
     <message>
         <source>ZWJ Zero width joiner</source>
-        <translation type="unfinished"></translation>
+        <translation>ZWJ Μηδενικό πλάτος συνδετήρα</translation>
     </message>
     <message>
         <source>ZWNJ Zero width non-joiner</source>
-        <translation type="unfinished"></translation>
+        <translation>ZWNJ Μηδενικό πλάτος μη-συνδετήρα</translation>
     </message>
     <message>
         <source>ZWSP Zero width space</source>
-        <translation type="unfinished"></translation>
+        <translation>ZWSP Μηδενικό πλάτος διαστήματος</translation>
     </message>
     <message>
         <source>LRE Start of left-to-right embedding</source>
-        <translation type="unfinished"></translation>
+        <translation>LRE Εκκίνηση ενσωμάτωσης από αριστερά στα δεξιά</translation>
     </message>
     <message>
         <source>RLE Start of right-to-left embedding</source>
-        <translation type="unfinished"></translation>
+        <translation>RLE Εκκίνηση ενσωμάτωσης από δεξιά στα αριστερά</translation>
     </message>
     <message>
         <source>LRO Start of left-to-right override</source>
-        <translation type="unfinished"></translation>
+        <translation>LRO Εκκίνηση παράκαμψης από αριστερά στα δεξιά</translation>
     </message>
     <message>
         <source>RLO Start of right-to-left override</source>
-        <translation type="unfinished"></translation>
+        <translation>RLO Εκκίνηση παράκαμψης από δεξιά στα αριστερά</translation>
     </message>
     <message>
         <source>PDF Pop directional formatting</source>
-        <translation type="unfinished"></translation>
+        <translation>PDF Αναδυόμενη κατευθυντική διαμόρφωση</translation>
     </message>
     <message>
         <source>Insert Unicode control character</source>
-        <translation type="unfinished"></translation>
+        <translation>Εισαγωγή χαρακτήρα ελέγχου Unicode</translation>
     </message>
 </context>
 <context>
@@ -4144,12 +4144,12 @@ Please choose a different file name.</source>
     <message>
         <source>Go Back</source>
         <comment>Back context menu item</comment>
-        <translation>Πήγαινε πίσω</translation>
+        <translation>Πίσω</translation>
     </message>
     <message>
         <source>Go Forward</source>
         <comment>Forward context menu item</comment>
-        <translation>Πήγαινε μπροστά</translation>
+        <translation>Μπροστά</translation>
     </message>
     <message>
         <source>Stop</source>
@@ -4334,11 +4334,11 @@ Please choose a different file name.</source>
     <name>QWizard</name>
     <message>
         <source>Go Back</source>
-        <translation>Πήγαινε πίσω</translation>
+        <translation>Πίσω</translation>
     </message>
     <message>
         <source>Continue</source>
-        <translation>Συνέχισε</translation>
+        <translation>Συνέχεια</translation>
     </message>
     <message>
         <source>Commit</source>
@@ -4508,27 +4508,27 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>internal general entity reference not allowed in DTD</source>
-        <translation type="unfinished"></translation>
+        <translation>εσωτερική γενική αναφορά οντότητας δεν επιτρέπεται στο DTD</translation>
     </message>
     <message>
         <source>external parsed general entity reference not allowed in attribute value</source>
-        <translation type="unfinished"></translation>
+        <translation>εξωτερικά αναλυμένη γενική αναφορά οντότητας δεν επιτρέπεται σε τιμή ιδιότητας</translation>
     </message>
     <message>
         <source>external parsed general entity reference not allowed in DTD</source>
-        <translation type="unfinished"></translation>
+        <translation>εξωτερικά αναλυμένη γενική αναφορά οντότητας δεν επιτρέπεται στο DTD</translation>
     </message>
     <message>
         <source>unparsed entity reference in wrong context</source>
-        <translation type="unfinished"></translation>
+        <translation>μη αναλυμένη αναφορά οντότητας σε λάθος πλαίσιο</translation>
     </message>
     <message>
         <source>recursive entities</source>
-        <translation type="unfinished"></translation>
+        <translation>αναδρομικές οντότητες</translation>
     </message>
     <message>
         <source>error in the text declaration of an external entity</source>
-        <translation type="unfinished"></translation>
+        <translation>λάθος στη δήλωση κειμένου μιας εξωτερικής οντότητας</translation>
     </message>
 </context>
 <context>
@@ -4559,7 +4559,7 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>Unexpected character '%1' in public id literal.</source>
-        <translation type="unfinished"></translation>
+        <translation>Απρόσμενος χαρακτήρας '%1' σε δημόσια ταυτότητα κυριολεκτικά.</translation>
     </message>
     <message>
         <source>Invalid XML version string.</source>
@@ -4579,75 +4579,75 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>Standalone accepts only yes or no.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αυτόνομη αποδοχή μόνο ναι ή όχι.</translation>
     </message>
     <message>
         <source>Invalid attribute in XML declaration.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη έγκυρη ιδιότητα στη δήλωση XML.</translation>
     </message>
     <message>
         <source>Premature end of document.</source>
-        <translation type="unfinished"></translation>
+        <translation>Πρόωρο τέλος εγγράφου.</translation>
     </message>
     <message>
         <source>Invalid document.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη έγκυρο έγγραφο.</translation>
     </message>
     <message>
         <source>Expected </source>
-        <translation type="unfinished"></translation>
+        <translation>Αναμενόμενο </translation>
     </message>
     <message>
         <source>, but got '</source>
-        <translation type="unfinished"></translation>
+        <translation>, αλλά έχει '</translation>
     </message>
     <message>
         <source>Unexpected '</source>
-        <translation type="unfinished"></translation>
+        <translation>Απροσδόκητο '</translation>
     </message>
     <message>
         <source>Expected character data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αναμενόμενα δεδομένα χαρακτήρα.</translation>
     </message>
     <message>
         <source>Recursive entity detected.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αναδρομική οντότητα εντοπίστηκε.</translation>
     </message>
     <message>
         <source>Start tag expected.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αναμένεται ετικέτα εκκίνησης.</translation>
     </message>
     <message>
         <source>XML declaration not at start of document.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η δήλωση XML δεν είναι στην αρχή του εγγράφου.</translation>
     </message>
     <message>
         <source>NDATA in parameter entity declaration.</source>
-        <translation type="unfinished"></translation>
+        <translation>NDATA σε δήλωση παράμετρου οντότητας.</translation>
     </message>
     <message>
         <source>%1 is an invalid processing instruction name.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 είναι ένα άκυρο όνομα επεξεργασίας οδηγίας.</translation>
     </message>
     <message>
         <source>Invalid processing instruction name.</source>
-        <translation type="unfinished"></translation>
+        <translation>άκυρο όνομα επεξεργασίας οδηγίας.</translation>
     </message>
     <message>
         <source>Illegal namespace declaration.</source>
-        <translation type="unfinished"></translation>
+        <translation>Παράνομη δήλωση χώρου ονομάτων.</translation>
     </message>
     <message>
         <source>Invalid XML name.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη έγκυρο όνομα XML.</translation>
     </message>
     <message>
         <source>Opening and ending tag mismatch.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ασυμβατότητα ετικέτας ανοιγμάτος και κλεισίματος.</translation>
     </message>
     <message>
         <source>Reference to unparsed entity '%1'.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αναφορά σε μη αναλυμένη οντότητα '%1'.</translation>
     </message>
     <message>
         <source>Entity '%1' not declared.</source>
@@ -4655,598 +4655,600 @@ Please choose a different file name.</source>
     </message>
     <message>
         <source>Reference to external entity '%1' in attribute value.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αναφορά στην εξωτερική οντότητα '%1' στην τιμή ιδιότητας.</translation>
     </message>
     <message>
         <source>Invalid character reference.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη έγκυρη αναφορά χαρακτήρα.</translation>
     </message>
     <message>
         <source>Encountered incorrectly encoded content.</source>
-        <translation type="unfinished"></translation>
+        <translation>Βρέθηκε λάθος κωδικοποιημένο περιεχόμενο.</translation>
     </message>
     <message>
         <source>The standalone pseudo attribute must appear after the encoding.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η αυτόνομη ψευδο-ιδιότητα πρέπει να εμφανίζεται μετά την κωδικοποίηση.</translation>
     </message>
     <message>
         <source>%1 is an invalid PUBLIC identifier.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 είναι μη έγκυρο ΔΗΜΟΣΙΟ αναγνωριστικό.</translation>
     </message>
 </context>
 <context>
     <name>QtXmlPatterns</name>
     <message>
         <source>An %1-attribute with value %2 has already been declared.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια ιδιότητα-%1 με τιμή %2 έχει ήδη δηλωθεί.</translation>
     </message>
     <message>
         <source>An %1-attribute must have a valid %2 as value, which %3 isn't.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια ιδιότητα-%1 πρέπει να έχει έγκυρη τιμή %2, ενώ η %3 δεν είναι.</translation>
     </message>
     <message>
         <source>Network timeout.</source>
-        <translation type="unfinished"></translation>
+        <translation>Χρονικό περιθώριο δικτύου.</translation>
     </message>
     <message>
         <source>Element %1 can't be serialized because it appears outside the document element.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το στοιχείο %1 δεν μπορεί να είναι σειριακό γιατί εμφανίζεται εκτός του στοιχείου του αρχείου.</translation>
     </message>
     <message>
         <source>Year %1 is invalid because it begins with %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το έτος %1 δεν είναι έγκυρο γιατί αρχίζει με %2.</translation>
     </message>
     <message>
         <source>Day %1 is outside the range %2..%3.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η ημέρα %1 είναι εκτός του εύρους %2..%3.</translation>
     </message>
     <message>
         <source>Month %1 is outside the range %2..%3.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο μήνας %1 είναι εκτός του εύρους %2..%3.</translation>
     </message>
     <message>
         <source>Overflow: Can't represent date %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Υπερχείλιση: Δεν μπορεί να αντιπροσωπευθεί η ημέρα %1.</translation>
     </message>
     <message>
         <source>Day %1 is invalid for month %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η ημέρα %1 δεν είναι έγκυρη για το μήνα %2.</translation>
     </message>
     <message>
         <source>Time 24:%1:%2.%3 is invalid. Hour is 24, but minutes, seconds, and milliseconds are not all 0; </source>
-        <translation type="unfinished"></translation>
+        <translation>Η ώρα 24:%1:%2.%3 δεν είναι έγκυρη. Η ώρα είναι 24, αλλά τα λεπτά, δευτερόλεπτα και χιλιοστά του δευτερολέπτου δεν είναι όλα 0</translation>
     </message>
     <message>
         <source>Time %1:%2:%3.%4 is invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η ώρα %1:%2:%3.%4 δεν είναι έγκυρη.</translation>
     </message>
     <message>
         <source>Overflow: Date can't be represented.</source>
-        <translation type="unfinished"></translation>
+        <translation>Υπερχείλιση: Δεν μπορεί να αντιπροσωπευθεί η ημέρα.</translation>
     </message>
     <message>
         <source>At least one component must be present.</source>
-        <translation type="unfinished"></translation>
+        <translation>Τουλάχιστον ένα στοιχείο πρέπει να είναι παρών.</translation>
     </message>
     <message>
         <source>At least one time component must appear after the %1-delimiter.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένα τουλάχιστον στοιχείο του χρόνου πρέπει να είναι εμφανίζεται μετά το διαχωριστικό %1.</translation>
     </message>
     <message>
         <source>No operand in an integer division, %1, can be %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μη τελεστής σε διαίρεση ακέραιων, %1, μπορεί να είναι %2.</translation>
     </message>
     <message>
         <source>The first operand in an integer division, %1, cannot be infinity (%2).</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο πρώτος τελεστής σε διαίρεση ακέραιων, %1, δεν μπορεί ναι είναι το άπειρο (%2).</translation>
     </message>
     <message>
         <source>The second operand in a division, %1, cannot be zero (%2).</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο δεύτερος τελεστής σε μια διαίρεση, %1, δεν μπορεί να είναι το μηδέν (%2).</translation>
     </message>
     <message>
         <source>%1 is not a valid value of type %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι έγκυρη τιμή τύπου %2.</translation>
     </message>
     <message>
         <source>When casting to %1 from %2, the source value cannot be %3.</source>
-        <translation type="unfinished"></translation>
+        <translation>Όταν γίνεται τροποποίηση στο %1 από το %2, η αρχική τιμή δεν μπορεί να είναι %3.</translation>
     </message>
     <message>
         <source>Integer division (%1) by zero (%2) is undefined.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η διαίρεση ακεραίου (%1) με το μηδέν (%2) είναι απροσδιόριστη.</translation>
     </message>
     <message>
         <source>Division (%1) by zero (%2) is undefined.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η διαίρεση (%1) με το μηδέν (%2) είναι απροσδιόριστη.</translation>
     </message>
     <message>
         <source>Modulus division (%1) by zero (%2) is undefined.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η διαίρεση μέτρου (%1) με το μηδέν (%2) είναι απροσδιόριστη.</translation>
     </message>
     <message>
         <source>Dividing a value of type %1 by %2 (not-a-number) is not allowed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η διαίρεση μιας τιμής τύπου %1 με το %2 (όχι αριθμό) δεν επιτρέπεται.</translation>
     </message>
     <message>
         <source>Dividing a value of type %1 by %2 or %3 (plus or minus zero) is not allowed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η διαίρεση μιας τιμής τύπου %1 με το %2 ή με το %3 (συν ή πλην μηδέν) δεν επιτρέπεται.</translation>
     </message>
     <message>
         <source>Multiplication of a value of type %1 by %2 or %3 (plus or minus infinity) is not allowed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο πολλαπλασιασμός μιας τιμής τύπου %1 με το %2 ή το %3 (συν ή πλην άπειρο) δεν επιτρέπεται.</translation>
     </message>
     <message>
         <source>A value of type %1 cannot have an Effective Boolean Value.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια τιμή του τύπου %1 δεν μπορεί να έχει μια Αποτελεσματική Μπούλεια Τιμή.</translation>
     </message>
     <message>
         <source>Effective Boolean Value cannot be calculated for a sequence containing two or more atomic values.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η Αποτελεσματική Μπούλεια Τιμή δεν μπορεί να υπολογιστεί για μια ακολουθία που περιέχει δύο ή περισσότερες ατομικές τιμές.</translation>
     </message>
     <message>
         <source>Value %1 of type %2 exceeds maximum (%3).</source>
-        <translation type="unfinished"></translation>
+        <translation>Η τιμή %1 του τύπου %2 υπερβαίνει το μέγιστο (%3).</translation>
     </message>
     <message>
         <source>Value %1 of type %2 is below minimum (%3).</source>
-        <translation type="unfinished"></translation>
+        <translation>Η τιμή %1 του τύπου %2 είναι κάτω του ελάχιστου (%3).</translation>
     </message>
     <message>
         <source>A value of type %1 must contain an even number of digits. The value %2 does not.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια τιμή του τύπου %1 πρέπει να περιέχει έναν ζυγό αριθμό ψηφίων. Η τιμή %2 δεν τον περιέχει.</translation>
     </message>
     <message>
         <source>%1 is not valid as a value of type %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι έγκυρη σαν τιμή τύπου %2.</translation>
     </message>
     <message>
         <source>Operator %1 cannot be used on type %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο τελεστής %1 δεν μπορεί να χρησιμοποιηθεί στον τύπο %2.</translation>
     </message>
     <message>
         <source>Operator %1 cannot be used on atomic values of type %2 and %3.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο τελεστής %1 δεν μπορεί να χρησιμοποιηθεί σε ατομικές τιμές τύπου %2 και %3.</translation>
     </message>
     <message>
         <source>The namespace URI in the name for a computed attribute cannot be %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το URI χώρου ονομάτων στο όνομα για μία υπολογισμένη ιδιότητα δεν μπορεί να είναι %1.</translation>
     </message>
     <message>
         <source>The name for a computed attribute cannot have the namespace URI %1 with the local name %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το όνομα για μια υπολογισμένη ιδιότητα δεν μπορεί να έχει το URI χώρου ονομάτων %1 με το τοπικό όνομα %2.</translation>
     </message>
     <message>
         <source>Type error in cast, expected %1, received %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Λάθος τύπου στην τροποποίηση, αναμενόταν %1, ελήφθη %2.</translation>
     </message>
     <message>
         <source>When casting to %1 or types derived from it, the source value must be of the same type, or it must be a string literal. Type %2 is not allowed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Όταν τροποποείται το %1 ή τύποι που προήρθαν από αυτό, η αρχική τιμή πρέπει να είναι από τον ίδιο τύπο, ή πρέπει να είναι κυριολεκτικά χαρακτήρες. Ο τύπος %2 δεν επιτρέπεται.</translation>
     </message>
     <message>
         <source>No casting is possible with %1 as the target type.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν είναι δυνατή τροποποίηση με το %1 σαν τον τελικό τύπο.</translation>
     </message>
     <message>
         <source>It is not possible to cast from %1 to %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν είναι δυνατό να τροποποίηθει το %1 σε %2.</translation>
     </message>
     <message>
         <source>Casting to %1 is not possible because it is an abstract type, and can therefore never be instantiated.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η τροποποίηση του %1 δεν είναι δυνατή επειδή είναι ένας αόριστος τύπος, και άρα δεν μπορεί να αποκτήσει υπόσταση.</translation>
     </message>
     <message>
         <source>It's not possible to cast the value %1 of type %2 to %3</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν είναι δυνατό να τροποποίηθει η τιμή %1 τύπου %2 σε %3</translation>
     </message>
     <message>
         <source>Failure when casting from %1 to %2: %3</source>
-        <translation type="unfinished"></translation>
+        <translation>Αποτυχία κατά την τροποποίηση από %1 σε %2: %3</translation>
     </message>
     <message>
         <source>A comment cannot contain %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένα σχόλιο δεν μπορεί να περιέχει %1</translation>
     </message>
     <message>
         <source>A comment cannot end with a %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένα σχόλιο δεν μπορεί να τελειώνει με %1.</translation>
     </message>
     <message>
         <source>No comparisons can be done involving the type %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Καμία σύγκριση δεν μπορεί να γίνει που να περιλαμβάνει τον τύπο %1.</translation>
     </message>
     <message>
         <source>Operator %1 is not available between atomic values of type %2 and %3.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο τελεστής %1 δεν είναι διαθέσιμος μεταξύ ατομικών τιμών του τύπου %2 και %3.</translation>
     </message>
     <message>
         <source>An attribute node cannot be a child of a document node. Therefore, the attribute %1 is out of place.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένας κόμβος ιδιότητας δεν μπορεί να είναι το τέκνο ενός κόμβου εγγράφου. Οπότε, η ιδιότητα %1 είναι άτοπη.</translation>
     </message>
     <message>
         <source>A library module cannot be evaluated directly. It must be imported from a main module.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένα δομοστοιχείο βιβλιοθήκης δεν μπορεί να εκτιμηθεί άμεσα. Πρέπει να εισαχθεί από το βασικό δομοστοιχείο.</translation>
     </message>
     <message>
         <source>A value of type %1 cannot be a predicate. A predicate must have either a numeric type or an Effective Boolean Value type.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια τιμή του τύπου %1 δεν μπορεί να είναι ένα κατηγόρημα. Ένα κατηγόρημα πρέπει να έχει ένα αριθμητικό τύπο ή ένα Αποτελεσματικό τύπο Τιμής Boolean.</translation>
     </message>
     <message>
         <source>A positional predicate must evaluate to a single numeric value.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένα κατηγόρημα θέσης πρέπει να εκτιμηθεί σε μια μονή αριθμητική τιμή.</translation>
     </message>
     <message>
         <source>The target name in a processing instruction cannot be %1 in any combination of upper and lower case. Therefore, is %2 invalid.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το τελικό όνομα σε μια υπολογιστική οδηγία δεν μπορεί να είναι %1 σε κανένα συνδυασμό κεφαλαίων και πεζών. Οπότε, είναι %2 άκυρο.</translation>
     </message>
     <message>
         <source>%1 is not a valid target name in a processing instruction. It must be a %2 value, e.g. %3.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι έγκυρο τελικό όνομα σε μία υπολογιστική οδηγία. Πρέπει να είναι μία %2 τιμή, π.χ. %3.</translation>
     </message>
     <message>
         <source>The last step in a path must contain either nodes or atomic values. It cannot be a mixture between the two.</source>
-        <translation type="unfinished"></translation>
+        <translation>iΤο τελευταίο βήμα σε μια διαδρομή πρέπει να περιέχει είτε κόμβους είτε ατομικές τιμές. Δε μπορεί να είναι ένα μείγμα μεταξύ των δύο.</translation>
     </message>
     <message>
         <source>The data of a processing instruction cannot contain the string %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Τα δεδομένα μιας υπολογιστικής οδηγίας δεν μπορεί να περιέχει τη γραμμή %1</translation>
     </message>
     <message>
         <source>No namespace binding exists for the prefix %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν υπάρχει σύνδεση χώρου ονομάτων για το πρόθεμα %1</translation>
     </message>
     <message>
         <source>No namespace binding exists for the prefix %1 in %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν υπάρχει σύνδεση χώρου ονομάτων για το πρόθεμα %1 στο %2</translation>
     </message>
     <message>
         <source>%1 is an invalid %2</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 είναι μη έγκυρο %2</translation>
     </message>
     <message numerus="yes">
         <source>%1 takes at most %n argument(s). %2 is therefore invalid.</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 παίρνει το πολύ %n όρισμα. Οπότε %2 είναι άκυρο.</numerusform>
+            <numerusform>%1 παίρνει το πολύ %n ορίσματα. Οπότε %2 είναι άκυρο.</numerusform>
         </translation>
     </message>
     <message numerus="yes">
         <source>%1 requires at least %n argument(s). %2 is therefore invalid.</source>
-        <translation type="unfinished">
-            <numerusform></numerusform>
+        <translation>
+            <numerusform>%1 παίρνει τουλάχιστον %n όρισμα. Οπότε %2 είναι άκυρο.</numerusform>
+            <numerusform>%1 παίρνει τουλάχιστον %n όρισμα. Οπότε %2 είναι άκυρο.</numerusform>
         </translation>
     </message>
     <message>
         <source>The first argument to %1 cannot be of type %2. It must be a numeric type, xs:yearMonthDuration or xs:dayTimeDuration.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το πρώτο όρισμα στο %1 δεν μπορεί να είναι του τύπου %2. Πρέπει να είναι ένας αριθμητικός τύπος, xs:χρόνοςΜήναςΔιάρκεια ή xs:ημέραΏραΔιάρκεια.</translation>
     </message>
     <message>
         <source>The first argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το πρώτο όρισμα στο %1 δεν μπορεί να είναι του τύπου %2. Πρέπει να είναι του τύπου %3, %4, ή %5.</translation>
     </message>
     <message>
         <source>The second argument to %1 cannot be of type %2. It must be of type %3, %4, or %5.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το δεύτερο όρισμα στο %1 δεν μπορεί να είναι του τύπου %2. Πρέπει να είναι του τύπου %3, %4, ή %5.</translation>
     </message>
     <message>
         <source>%1 is not a valid XML 1.0 character.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι ένας έγκυρος χαρακτήρας XML 1.0.</translation>
     </message>
     <message>
         <source>The first argument to %1 cannot be of type %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το πρώτο όρισμα στο %1 δεν μπορεί να είναι του τύπου %2.</translation>
     </message>
     <message>
         <source>If both values have zone offsets, they must have the same zone offset. %1 and %2 are not the same.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αν και οι δύο τιμές έχουν μετατοπίσεις ζώνης, πρέπει να έχουν τη ίδια μετατόπιση ζώνης. %1 και %2 δεν είναι τα ίδια.</translation>
     </message>
     <message>
         <source>%1 was called.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 κλήθηκε.</translation>
     </message>
     <message>
         <source>%1 must be followed by %2 or %3, not at the end of the replacement string.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 πρέπει να ακολουθείται από %2 ή %3, όχι στο τέλος των χαρακτήρων αντικατάστασης.</translation>
     </message>
     <message>
         <source>In the replacement string, %1 must be followed by at least one digit when not escaped.</source>
-        <translation type="unfinished"></translation>
+        <translation>Στους χαρακτήρες αντικατάστασης, %1 πρέπει να ακολουθείται από τουλάχιστο ένα ψηφίο όταν δεν έχει διαφύγει.</translation>
     </message>
     <message>
         <source>In the replacement string, %1 can only be used to escape itself or %2, not %3</source>
-        <translation type="unfinished"></translation>
+        <translation>Στους χαρακτήρες αντικατάστασης, %1 μπορεί να χρησιμοποιηθεί να διαφύγει του εαυτού του ή %2, όχι %3</translation>
     </message>
     <message>
         <source>%1 matches newline characters</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 αντιστοιχεί σε χαρακτήρες νέας γραμμής</translation>
     </message>
     <message>
         <source>%1 and %2 match the start and end of a line.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 και %2 αντιστοιχούν με την αρχή και το τέλος μιας γραμμής.</translation>
     </message>
     <message>
         <source>Matches are case insensitive</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι αντιστοιχίες είναι χωρίς διάκριση πεζών-κεφαλαίων</translation>
     </message>
     <message>
         <source>Whitespace characters are removed, except when they appear in character classes</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι κενοί χαρακτήρες διαγράφονται, εκτός αν εμφανίζονται σε ομάδες χαρακτήρων</translation>
     </message>
     <message>
         <source>%1 is an invalid regular expression pattern: %2</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι έγκυρο σχήμα κανονικής έκφρασης : %2</translation>
     </message>
     <message>
         <source>%1 is an invalid flag for regular expressions. Valid flags are:</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι έγκυρη σημαία για κανονικές εκφράσεις. Έγκυρες σημαίες είναι:</translation>
     </message>
     <message>
         <source>If the first argument is the empty sequence or a zero-length string (no namespace), a prefix cannot be specified. Prefix %1 was specified.</source>
-        <translation type="unfinished"></translation>
+        <translation>Αν το πρώτο όρισμα είναι μια κενή ακολουθία ή μια μηδενικού μεγέθους γραμμή (όχι χώρος ονομάτων), δεν μπορεί να ορισθεί ένα πρόθεμα. Το πρόθεμα %1 έχει ορισθεί.</translation>
     </message>
     <message>
         <source>It will not be possible to retrieve %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δε θα είναι δυνατό να ανακτηθεί το %1.</translation>
     </message>
     <message>
         <source>The root node of the second argument to function %1 must be a document node. %2 is not a document node.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο ριζικός κόμβος του δεύτερου ορίσματος στη συνάρτηση %1 πρέπει να είναι ένας κόμβος εγγράφου. Το %2 δεν είναι ένας κόμβος εγγράφου.</translation>
     </message>
     <message>
         <source>The default collection is undefined</source>
-        <translation type="unfinished"></translation>
+        <translation>Η προκαθορισμένη συλλογή δεν έχει προσδιοριστεί</translation>
     </message>
     <message>
         <source>%1 cannot be retrieved</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν μπορεί να ανακτηθεί</translation>
     </message>
     <message>
         <source>The normalization form %1 is unsupported. The supported forms are %2, %3, %4, and %5, and none, i.e. the empty string (no normalization).</source>
-        <translation type="unfinished"></translation>
+        <translation>Η αίτηση κανονικοποίησης %1 δεν υποστηρίζεται. Οι υποστηριζόμενες αιτήσεις είναι %2, %3, %4, και %5, και καμία, δηλαδή κενή γραμμή (μη κανονικοποίηση).</translation>
     </message>
     <message>
         <source>A zone offset must be in the range %1..%2 inclusive. %3 is out of range.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μία μετατόπιση ζώνης πρέπει να ανήκει στο εύρος %1..%2 συμπεριλαμβανομένου. %3 είναι εκτός εύρους.</translation>
     </message>
     <message>
         <source>%1 is not a whole number of minutes.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι ένας ολόκληρος αριθμός λεπτών.</translation>
     </message>
     <message>
         <source>Required cardinality is %1; got cardinality %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η απαιτούμενη πληθικότητα είναι %1, έχει πληθικότητα %2.</translation>
     </message>
     <message>
         <source>The item %1 did not match the required type %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το αντικείμενο %1 δεν ταιριάζει με τον απαιτούμενο τύπο %2.</translation>
     </message>
     <message>
         <source>%1 is an unknown schema type.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 είναι ένας άγνωστος τύπος σχήματος.</translation>
     </message>
     <message>
         <source>Only one %1 declaration can occur in the query prolog.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μόνο μία %1 δήλωση μπορεί να υπάρχει στον πρόλογο του ερωτήματος.</translation>
     </message>
     <message>
         <source>The initialization of variable %1 depends on itself</source>
-        <translation type="unfinished"></translation>
+        <translation>Η έναρξη της μεταβλητής %1 εξαρτάται από τον εαυτό της</translation>
     </message>
     <message>
         <source>No variable by name %1 exists</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν υπάρχει καμία μεταβλητή με το όνομα %1</translation>
     </message>
     <message>
         <source>The variable %1 is unused</source>
-        <translation type="unfinished"></translation>
+        <translation>Η μεταβλητή %1 δεν χρησιμοποιείται</translation>
     </message>
     <message>
         <source>Version %1 is not supported. The supported XQuery version is 1.0.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η έκδοση %1 δεν υποστηρίζεται. Η υποστηριζόμενη έκδοση XQuery είναι 1.0.</translation>
     </message>
     <message>
         <source>The encoding %1 is invalid. It must contain Latin characters only, must not contain whitespace, and must match the regular expression %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η κωδικοποίηση %1 είναι άκυρη. Πρέπει να περιέχει λατινικούς χαρακτήρες μόνο, δεν πρέπει να περιέχει κενά διαστήματα, και πρέπει να ταιριάζει στη κανονική έκφραση %2.</translation>
     </message>
     <message>
         <source>No function with signature %1 is available</source>
-        <translation type="unfinished"></translation>
+        <translation>Καμία συνάρτηση με υπογραφή %1 δεν είναι διαθέσιμη</translation>
     </message>
     <message>
         <source>A default namespace declaration must occur before function, variable, and option declarations.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια προκαθορισμένη δήλωση χώρου ονομάτων πρέπει να λαμβάνει χώρα πριν τις δηλώσεις συνάρτησεων, μεταβλητών, και ιδιοτήτων.</translation>
     </message>
     <message>
         <source>Namespace declarations must occur before function, variable, and option declarations.</source>
-        <translation type="unfinished"></translation>
+        <translation>Οι δηλώσεις χώρου ονομάτων πρέπει να λαμβάνουν χώρα πριν τις δηλώσεις συνάρτησεων, μεταβλητών, και ιδιοτήτων.</translation>
     </message>
     <message>
         <source>Module imports must occur before function, variable, and option declarations.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η εισαγωγή δομοστοιχείων πρέπει να λαμβάνει χώρα πριν τις δηλώσεις συνάρτησεων, μεταβλητών, και ιδιοτήτων.</translation>
     </message>
     <message>
         <source>It is not possible to redeclare prefix %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν είναι δυνατό να επαναδηλωθεί το πρόθεμα %1.</translation>
     </message>
     <message>
         <source>Only the prefix %1 can be declared to bind the namespace %2. By default, it is already bound to the prefix %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μόνο το πρόθεμα %1 μπορεί να δηλωθεί για να συνδέσει το χώρο ονομάτων %2. Εξ'ορισμού, είναι ήδη συνδεδεμένο με το πρόθεμα %1.</translation>
     </message>
     <message>
         <source>Prefix %1 is already declared in the prolog.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το πρόθεμα %1 είναι ήδη δηλωμένο στο πρόλογο.</translation>
     </message>
     <message>
         <source>The name of an option must have a prefix. There is no default namespace for options.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το όνομα μιας ιδιότητας πρέπει να έχει ένα πρόθεμα. Δεν υπάρχει προκαθορισμένος χώρος ονομάτων για ιδιότητες.</translation>
     </message>
     <message>
         <source>The Schema Import feature is not supported, and therefore %1 declarations cannot occur.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η λειτουργία εισαγωγής σχήματος δεν υποστηρίζεται, και γι'αυτό %1 δηλώσεις δεν μπορούν να λάβουν χώρα.</translation>
     </message>
     <message>
         <source>The target namespace of a %1 cannot be empty.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο τελικός χώρος ονομάτων ενός %1 δεν μπορεί να είναι κενός.</translation>
     </message>
     <message>
         <source>The module import feature is not supported</source>
-        <translation type="unfinished"></translation>
+        <translation>Η λειτουργία εισαγωγής δομοστοιχείων δεν υποστηρίζεται</translation>
     </message>
     <message>
         <source>A variable by name %1 has already been declared in the prolog.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια μεταβλητή με το όνομα %1 έχει ήδη δηλωθεί στο πρόλογο.</translation>
     </message>
     <message>
         <source>No value is available for the external variable by name %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Καμία τιμή δεν είναι διαθέσιμη για την εξωτερική μεταβλητή με το όνομα %1.</translation>
     </message>
     <message>
         <source>The namespace %1 is reserved; therefore user defined functions may not use it. Try the predefined prefix %2, which exists for these cases.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο χώρος ονομάτων %1 είναι εκχωρημένος, οπότε συναρτήσεις καθορισμένες από το χρήστη δεν θα τον χρησιμοποιήσουν. Δοκιμάστε το προκαθορισμένο πρόθεμα %2, το οποίο υπάρχει για αυτές τις περιπτώσεις.</translation>
     </message>
     <message>
         <source>The namespace of a user defined function in a library module must be equivalent to the module namespace. In other words, it should be %1 instead of %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο χώρος ονομάτων μιας συνάρτησης καθορισμένης από το χρήστη σε ένα αντιστάθμισμα βιβλιοθήκης πρέπει να είναι ισοδύναμο με το αντιστάθμισμα χώρου ονομάτων. Με άλλα λόγια, πρέπει να είναι %1 αντί για %2</translation>
     </message>
     <message>
         <source>A function already exists with the signature %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια συνάρτηση με την υπογραφή %1 υπάρχει ήδη.</translation>
     </message>
     <message>
         <source>No external functions are supported. All supported functions can be used directly, without first declaring them as external</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν υποστηρίζονται εξωτερικές συναρτήσεις. Όλες οι υποστηριζόμενες συναρτήσεις μπορούν να χρησιμοποιηθούν άμεσα, χωρίς πρώτα να δηλώνονται σαν εξωτερικές</translation>
     </message>
     <message>
         <source>An argument by name %1 has already been declared. Every argument name must be unique.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένα όρισμα με το όνομα %1 έχει ήδη δηλωθεί. Κάθε όνομα ορίσματος πρέπει να είναι μοναδικό.</translation>
     </message>
     <message>
         <source>The name of a variable bound in a for-expression must be different from the positional variable. Hence, the two variables named %1 collide.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το όνομα μιας μεταβλητής συνδεδεμένης μέσα σε μια παράσταση πρέπει να είναι διαφορετικό από τη μεταβλητή θέσης. Συνεπώς, οι δύο μεταβλητές με το όνομα %1 συγκρούονται.</translation>
     </message>
     <message>
         <source>The Schema Validation Feature is not supported. Hence, %1-expressions may not be used.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η Λειτουργία Ταυτοποίησης Σχήματος δεν υποστηρίζεται. Οπότε, %1 εκφράσεις δεν μπορούν να χρησιμοποιηθούν.</translation>
     </message>
     <message>
         <source>None of the pragma expressions are supported. Therefore, a fallback expression must be present</source>
-        <translation type="unfinished"></translation>
+        <translation>Καμία από τις αναγνωριστικές εκφράσεις δεν υποστηρίζεται. Οπότε, μια εναλλακτική έκφραση πρέπει να είναι παρούσα</translation>
     </message>
     <message>
         <source>The %1-axis is unsupported in XQuery</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο %1-άξονας δεν υποστηρίζεται στο XQuery</translation>
     </message>
     <message>
         <source>%1 is not a valid numeric literal.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι μια έγκυρη αριθμητική σταθερά.</translation>
     </message>
     <message>
         <source>No function by name %1 is available.</source>
-        <translation type="unfinished"></translation>
+        <translation>Καμία συνάρτηση με το όνομα %1 δεν είναι διαθέσιμη.</translation>
     </message>
     <message>
         <source>The namespace URI cannot be the empty string when binding to a prefix, %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το URI χώρου ονομάτων δεν μπορεί να είναι μια κενή γραμμή όταν συνδέεται με το πρόθεμα, %1.</translation>
     </message>
     <message>
         <source>%1 is an invalid namespace URI.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 είναι μη έγκυρο URI χώρου ονομάτων.</translation>
     </message>
     <message>
         <source>It is not possible to bind to the prefix %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν είναι δυνατό να γίνει σύνδεση με το πρόθεμα %1</translation>
     </message>
     <message>
         <source>Namespace %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο χώρος ονομάτων %1 μπορεί μόνο να συνδεθεί με το %2 (και είναι, σε κάθε περίπτωση, προδηλωμένο).</translation>
     </message>
     <message>
         <source>Prefix %1 can only be bound to %2 (and it is, in either case, pre-declared).</source>
-        <translation type="unfinished"></translation>
+        <translation>Το πρόθεμα %1 μπορεί να συνδεθεί μόνο με το %2 (και είναι, σε κάθε περίπτωση, προδηλωμένο).</translation>
     </message>
     <message>
         <source>Two namespace declaration attributes have the same name: %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δύο ιδιότητες δήλωσης χώρου ονομάτων έχουν το ίδιο όνομα: %1.</translation>
     </message>
     <message>
         <source>The namespace URI must be a constant and cannot use enclosed expressions.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το URI χώρου ονομάτων πρέπει να είναι μια σταθερά και δεν μπορεί να χρησιμοποιεί ενσωματωμένες εκφράσεις.</translation>
     </message>
     <message>
         <source>An attribute by name %1 has already appeared on this element.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια ιδιότητα με το όνομα %1 έχει ήδη εμφανιστεί σε αυτό το στοιχείο.</translation>
     </message>
     <message>
         <source>A direct element constructor is not well-formed. %1 is ended with %2.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ένας άμεσος κατασκευαστής στοιχείων δεν έχει σχηματιστεί καλά. %1 τελειώνει με %2.</translation>
     </message>
     <message>
         <source>The name %1 does not refer to any schema type.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το όνομα %1 δεν αναφέρεται σε κανένα τύπο σχήματος.</translation>
     </message>
     <message>
         <source>%1 is an complex type. Casting to complex types is not possible. However, casting to atomic types such as %2 works.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 είναι ένας πολύπλοκος τύπος. Η τροποποίηση σε πολύπλοκους τύπους δεν είναι δυνατή. Ωστόσο, τροποποίηση σε ατομικούς τύπους όπως %2 δουλεύει.</translation>
     </message>
     <message>
         <source>%1 is not an atomic type. Casting is only possible to atomic types.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι ένας ατομικός τύπος. Η τροποποίηση είναι μόνο δυνατή σε ατομικούς τύπους.</translation>
     </message>
     <message>
         <source>%1 is not a valid name for a processing-instruction. Therefore this name test will never match.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι ένα έγκυρο όνομα για μια υπολογιστική οδηγία. Οπότε αυτή η δοκιμή ονόματος δεν θα ταιριάξει ποτέ.</translation>
     </message>
     <message>
         <source>%1 is not in the in-scope attribute declarations. Note that the schema import feature is not supported.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 δεν είναι μια εντός πεδίου δήλωση ιδιότητας. Σημειώστε ότι η λειτουργία εισαγωγής σχήματος δεν υποστηρίζεται.</translation>
     </message>
     <message>
         <source>The name of an extension expression must be in a namespace.</source>
-        <translation type="unfinished"></translation>
+        <translation>Το όνομα μιας επέκτασης έκφρασης πρέπει να είναι σε χώρο ονομάτων.</translation>
     </message>
     <message>
         <source>empty</source>
-        <translation type="unfinished"></translation>
+        <translation>κενό</translation>
     </message>
     <message>
         <source>zero or one</source>
-        <translation type="unfinished"></translation>
+        <translation>μηδέν ή ένα</translation>
     </message>
     <message>
         <source>exactly one</source>
-        <translation type="unfinished"></translation>
+        <translation>ακριβώς ένα</translation>
     </message>
     <message>
         <source>one or more</source>
-        <translation type="unfinished"></translation>
+        <translation>ένα ή παραπάνω</translation>
     </message>
     <message>
         <source>zero or more</source>
-        <translation type="unfinished"></translation>
+        <translation>μηδέν ή παραπάνω</translation>
     </message>
     <message>
         <source>Required type is %1, but %2 was found.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ο απαιτούμενος τύπος είναι %1, αλλά βρέθηκε %2.</translation>
     </message>
     <message>
         <source>Promoting %1 to %2 may cause loss of precision.</source>
-        <translation type="unfinished"></translation>
+        <translation>Προάγωντας %1 σε %2 μπορεί να προκαλέσει απώλεια ακρίβειας.</translation>
     </message>
     <message>
         <source>The focus is undefined.</source>
-        <translation type="unfinished"></translation>
+        <translation>Η εστίαση δεν προσδιορίστηκε.</translation>
     </message>
     <message>
         <source>It's not possible to add attributes after any other kind of node.</source>
-        <translation type="unfinished"></translation>
+        <translation>Δεν είναι δυνατό να προστεθούν ιδιότητες μετά από κανένα είδος κόμβου.</translation>
     </message>
     <message>
         <source>An attribute by name %1 has already been created.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μια ιδιότητα με το όνομα %1 έχει ήδη δημιουργηθεί.</translation>
     </message>
     <message>
         <source>Only the Unicode Codepoint Collation is supported(%1). %2 is unsupported.</source>
-        <translation type="unfinished"></translation>
+        <translation>Μόνο το Unicode Codepoint Collation υποστηρίζεται(%1). %2 δεν υποστηρίζεται.</translation>
     </message>
     <message>
         <source>Attribute %1 can't be serialized because it appears at the top level.</source>
diff --git a/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts b/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts
index 86ca709..82cd3ca 100644
--- a/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts
+++ b/src/VBox/Frontends/VirtualBox/nls/qt_zh_TW.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="zh_TW">
+<TS version="2.0" language="zh_TW">
 <context>
     <name>MAC_APPLICATION_MENU</name>
     <message>
diff --git a/src/VBox/Frontends/VirtualBox/src/VBoxSnapshotDetailsDlg.cpp b/src/VBox/Frontends/VirtualBox/src/VBoxSnapshotDetailsDlg.cpp
index 93dd3a2..727269c 100644
--- a/src/VBox/Frontends/VirtualBox/src/VBoxSnapshotDetailsDlg.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/VBoxSnapshotDetailsDlg.cpp
@@ -25,10 +25,10 @@
 # include <QScrollArea>
 
 /* GUI includes: */
-# include <VBoxGlobal.h>
-# include <UIMessageCenter.h>
-# include <VBoxSnapshotDetailsDlg.h>
-# include <VBoxUtils.h>
+# include "VBoxGlobal.h"
+# include "UIMessageCenter.h"
+# include "VBoxSnapshotDetailsDlg.h"
+# include "VBoxUtils.h"
 
 /* COM includes: */
 # include "CMachine.h"
diff --git a/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp b/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
index 261c7f2..4a346a6 100644
--- a/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
@@ -1586,25 +1586,26 @@ template<> MiniToolbarAlignment fromInternalString<MiniToolbarAlignment>(const Q
 template<> QString toString(const InformationElementType &informationElementType)
 {
     QString strResult;
-    /* Reusing translations from 'DetailsElementType': */
     switch (informationElementType)
     {
-        case InformationElementType_General:           strResult = QApplication::translate("VBoxGlobal", "General", "DetailsElementType"); break;
-        case InformationElementType_Preview:           strResult = QApplication::translate("VBoxGlobal", "Preview", "DetailsElementType"); break;
-        case InformationElementType_System:            strResult = QApplication::translate("VBoxGlobal", "System", "DetailsElementType"); break;
-        case InformationElementType_Display:           strResult = QApplication::translate("VBoxGlobal", "Display", "DetailsElementType"); break;
-        case InformationElementType_Storage:           strResult = QApplication::translate("VBoxGlobal", "Storage", "DetailsElementType"); break;
-        case InformationElementType_Audio:             strResult = QApplication::translate("VBoxGlobal", "Audio", "DetailsElementType"); break;
-        case InformationElementType_Network:           strResult = QApplication::translate("VBoxGlobal", "Network", "DetailsElementType"); break;
-        case InformationElementType_Serial:            strResult = QApplication::translate("VBoxGlobal", "Serial ports", "DetailsElementType"); break;
+        case InformationElementType_General:           strResult = QApplication::translate("VBoxGlobal", "General", "InformationElementType"); break;
+        case InformationElementType_Preview:           strResult = QApplication::translate("VBoxGlobal", "Preview", "InformationElementType"); break;
+        case InformationElementType_System:            strResult = QApplication::translate("VBoxGlobal", "System", "InformationElementType"); break;
+        case InformationElementType_Display:           strResult = QApplication::translate("VBoxGlobal", "Display", "InformationElementType"); break;
+        case InformationElementType_Storage:           strResult = QApplication::translate("VBoxGlobal", "Storage", "InformationElementType"); break;
+        case InformationElementType_Audio:             strResult = QApplication::translate("VBoxGlobal", "Audio", "InformationElementType"); break;
+        case InformationElementType_Network:           strResult = QApplication::translate("VBoxGlobal", "Network", "InformationElementType"); break;
+        case InformationElementType_Serial:            strResult = QApplication::translate("VBoxGlobal", "Serial ports", "InformationElementType"); break;
 #ifdef VBOX_WITH_PARALLEL_PORTS
-        case InformationElementType_Parallel:          strResult = QApplication::translate("VBoxGlobal", "Parallel ports", "DetailsElementType"); break;
+        case InformationElementType_Parallel:          strResult = QApplication::translate("VBoxGlobal", "Parallel ports", "InformationElementType"); break;
 #endif /* VBOX_WITH_PARALLEL_PORTS */
-        case InformationElementType_USB:               strResult = QApplication::translate("VBoxGlobal", "USB", "DetailsElementType"); break;
-        case InformationElementType_SF:                strResult = QApplication::translate("VBoxGlobal", "Shared folders", "DetailsElementType"); break;
-        case InformationElementType_UI:                strResult = QApplication::translate("VBoxGlobal", "User interface", "DetailsElementType"); break;
-        case InformationElementType_Description:       strResult = QApplication::translate("VBoxGlobal", "Description", "DetailsElementType"); break;
-        case InformationElementType_RuntimeAttributes: strResult = QApplication::translate("VBoxGlobal", "RuntimeAttributes", "DetailsElementType"); break;
+        case InformationElementType_USB:               strResult = QApplication::translate("VBoxGlobal", "USB", "InformationElementType"); break;
+        case InformationElementType_SharedFolders:     strResult = QApplication::translate("VBoxGlobal", "Shared folders", "InformationElementType"); break;
+        case InformationElementType_UI:                strResult = QApplication::translate("VBoxGlobal", "User interface", "InformationElementType"); break;
+        case InformationElementType_Description:       strResult = QApplication::translate("VBoxGlobal", "Description", "InformationElementType"); break;
+        case InformationElementType_RuntimeAttributes: strResult = QApplication::translate("VBoxGlobal", "Runtime attributes", "InformationElementType"); break;
+        case InformationElementType_StorageStatistics: strResult = QApplication::translate("VBoxGlobal", "Storage statistics", "InformationElementType"); break;
+        case InformationElementType_NetworkStatistics: strResult = QApplication::translate("VBoxGlobal", "Network statistics", "InformationElementType"); break;
         default:
         {
             AssertMsgFailed(("No text for information element type=%d", informationElementType));
@@ -1619,24 +1620,25 @@ template<> InformationElementType fromString<InformationElementType>(const QStri
 {
     /* Here we have some fancy stuff allowing us
      * to search through the keys using 'case-insensitive' rule: */
-    QStringList keys;                                                                         QList<InformationElementType> values;
-    /* Reusing translations from 'DetailsElementType': */
-    keys << QApplication::translate("VBoxGlobal", "General", "DetailsElementType");           values << InformationElementType_General;
-    keys << QApplication::translate("VBoxGlobal", "Preview", "DetailsElementType");           values << InformationElementType_Preview;
-    keys << QApplication::translate("VBoxGlobal", "System", "DetailsElementType");            values << InformationElementType_System;
-    keys << QApplication::translate("VBoxGlobal", "Display", "DetailsElementType");           values << InformationElementType_Display;
-    keys << QApplication::translate("VBoxGlobal", "Storage", "DetailsElementType");           values << InformationElementType_Storage;
-    keys << QApplication::translate("VBoxGlobal", "Audio", "DetailsElementType");             values << InformationElementType_Audio;
-    keys << QApplication::translate("VBoxGlobal", "Network", "DetailsElementType");           values << InformationElementType_Network;
-    keys << QApplication::translate("VBoxGlobal", "Serial ports", "DetailsElementType");      values << InformationElementType_Serial;
+    QStringList keys;                                                                              QList<InformationElementType> values;
+    keys << QApplication::translate("VBoxGlobal", "General", "InformationElementType");            values << InformationElementType_General;
+    keys << QApplication::translate("VBoxGlobal", "Preview", "InformationElementType");            values << InformationElementType_Preview;
+    keys << QApplication::translate("VBoxGlobal", "System", "InformationElementType");             values << InformationElementType_System;
+    keys << QApplication::translate("VBoxGlobal", "Display", "InformationElementType");            values << InformationElementType_Display;
+    keys << QApplication::translate("VBoxGlobal", "Storage", "InformationElementType");            values << InformationElementType_Storage;
+    keys << QApplication::translate("VBoxGlobal", "Audio", "InformationElementType");              values << InformationElementType_Audio;
+    keys << QApplication::translate("VBoxGlobal", "Network", "InformationElementType");            values << InformationElementType_Network;
+    keys << QApplication::translate("VBoxGlobal", "Serial ports", "InformationElementType");       values << InformationElementType_Serial;
 #ifdef VBOX_WITH_PARALLEL_PORTS
-    keys << QApplication::translate("VBoxGlobal", "Parallel ports", "DetailsElementType");    values << InformationElementType_Parallel;
+    keys << QApplication::translate("VBoxGlobal", "Parallel ports", "InformationElementType");     values << InformationElementType_Parallel;
 #endif /* VBOX_WITH_PARALLEL_PORTS */
-    keys << QApplication::translate("VBoxGlobal", "USB", "DetailsElementType");               values << InformationElementType_USB;
-    keys << QApplication::translate("VBoxGlobal", "Shared folders", "DetailsElementType");    values << InformationElementType_SF;
-    keys << QApplication::translate("VBoxGlobal", "User interface", "DetailsElementType");    values << InformationElementType_UI;
-    keys << QApplication::translate("VBoxGlobal", "Description", "DetailsElementType");       values << InformationElementType_Description;
-    keys << QApplication::translate("VBoxGlobal", "RuntimeAttributes", "DetailsElementType"); values << InformationElementType_RuntimeAttributes;
+    keys << QApplication::translate("VBoxGlobal", "USB", "InformationElementType");                values << InformationElementType_USB;
+    keys << QApplication::translate("VBoxGlobal", "Shared folders", "InformationElementType");     values << InformationElementType_SharedFolders;
+    keys << QApplication::translate("VBoxGlobal", "User interface", "InformationElementType");     values << InformationElementType_UI;
+    keys << QApplication::translate("VBoxGlobal", "Description", "InformationElementType");        values << InformationElementType_Description;
+    keys << QApplication::translate("VBoxGlobal", "Runtime attributes", "InformationElementType"); values << InformationElementType_RuntimeAttributes;
+    keys << QApplication::translate("VBoxGlobal", "Storage statistics", "InformationElementType"); values << InformationElementType_StorageStatistics;
+    keys << QApplication::translate("VBoxGlobal", "Network statistics", "InformationElementType"); values << InformationElementType_NetworkStatistics;
     /* Invalid type for unknown words: */
     if (!keys.contains(strInformationElementType, Qt::CaseInsensitive))
         return InformationElementType_Invalid;
@@ -1662,7 +1664,7 @@ template<> QString toInternalString(const InformationElementType &informationEle
         case InformationElementType_Parallel:          strResult = "parallelPorts"; break;
 #endif /* VBOX_WITH_PARALLEL_PORTS */
         case InformationElementType_USB:               strResult = "usb"; break;
-        case InformationElementType_SF:                strResult = "sharedFolders"; break;
+        case InformationElementType_SharedFolders:     strResult = "sharedFolders"; break;
         case InformationElementType_UI:                strResult = "userInterface"; break;
         case InformationElementType_Description:       strResult = "description"; break;
         case InformationElementType_RuntimeAttributes: strResult = "runtime-attributes"; break;
@@ -1693,7 +1695,7 @@ template<> InformationElementType fromInternalString<InformationElementType>(con
     keys << "parallelPorts";      values << InformationElementType_Parallel;
 #endif /* VBOX_WITH_PARALLEL_PORTS */
     keys << "usb";                values << InformationElementType_USB;
-    keys << "sharedFolders";      values << InformationElementType_SF;
+    keys << "sharedFolders";      values << InformationElementType_SharedFolders;
     keys << "userInterface";      values << InformationElementType_UI;
     keys << "description";        values << InformationElementType_Description;
     keys << "runtime-attributes"; values << InformationElementType_RuntimeAttributes;
@@ -1721,10 +1723,12 @@ template<> QIcon toIcon(const InformationElementType &informationElementType)
         case InformationElementType_Parallel:          return UIIconPool::iconSet(":/parallel_port_16px.png");
 #endif /* VBOX_WITH_PARALLEL_PORTS */
         case InformationElementType_USB:               return UIIconPool::iconSet(":/usb_16px.png");
-        case InformationElementType_SF:                return UIIconPool::iconSet(":/sf_16px.png");
+        case InformationElementType_SharedFolders:     return UIIconPool::iconSet(":/sf_16px.png");
         case InformationElementType_UI:                return UIIconPool::iconSet(":/interface_16px.png");
         case InformationElementType_Description:       return UIIconPool::iconSet(":/description_16px.png");
         case InformationElementType_RuntimeAttributes: return UIIconPool::iconSet(":/state_running_16px.png");
+        case InformationElementType_StorageStatistics: return UIIconPool::iconSet(":/hd_16px.png");
+        case InformationElementType_NetworkStatistics: return UIIconPool::iconSet(":/nw_16px.png");
         default:
         {
             AssertMsgFailed(("No icon for information element type=%d", informationElementType));
diff --git a/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.cpp b/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.cpp
index 6c22f61..c839678 100644
--- a/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2008-2013 Oracle Corporation
+ * Copyright (C) 2008-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;
@@ -30,15 +30,11 @@ QIDialog::QIDialog(QWidget *pParent /* = 0 */, Qt::WindowFlags flags /* = 0 */)
     : QDialog(pParent, flags)
     , m_fPolished(false)
 {
-    /* No need to count that window as important for application,
+    /* Do not count that window as important for application,
      * it will NOT be taken into account when other top-level windows will be closed: */
     setAttribute(Qt::WA_QuitOnClose, false);
 }
 
-QIDialog::~QIDialog()
-{
-}
-
 void QIDialog::setVisible(bool fVisible)
 {
     /* Call to base-class: */
@@ -53,7 +49,7 @@ void QIDialog::setVisible(bool fVisible)
 int QIDialog::execute(bool fShow /* = true */, bool fApplicationModal /* = false */)
 {
     /* Check for the recursive run: */
-    AssertMsgReturn(!m_pEventLoop, ("QIDialog::exec() is called recursively!\n"), QDialog::Rejected);
+    AssertMsgReturn(!m_pEventLoop, ("QIDialog::execute() is called recursively!\n"), QDialog::Rejected);
 
     /* Reset the result-code: */
     setResult(QDialog::Rejected);
@@ -120,7 +116,7 @@ void QIDialog::showEvent(QShowEvent *pEvent)
     m_fPolished = true;
 }
 
-void QIDialog::polishEvent(QShowEvent*)
+void QIDialog::polishEvent(QShowEvent *)
 {
     /* Make sure layout is polished: */
     adjustSize();
diff --git a/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.h b/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.h
index ed5d66b..1717acb 100644
--- a/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.h
+++ b/src/VBox/Frontends/VirtualBox/src/extensions/QIDialog.h
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2008-2013 Oracle Corporation
+ * Copyright (C) 2008-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;
@@ -15,8 +15,8 @@
  * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
  */
 
-#ifndef __QIDialog_h__
-#define __QIDialog_h__
+#ifndef ___QIDialog_h___
+#define ___QIDialog_h___
 
 /* Qt includes: */
 #include <QDialog>
@@ -25,47 +25,52 @@
 /* Forward declarations: */
 class QEventLoop;
 
-/* Qt dialog extension: */
-class QIDialog: public QDialog
+
+/** QDialog extension providing the GUI with
+  * the advanced capabilities like delayed show. */
+class QIDialog : public QDialog
 {
     Q_OBJECT;
 
 public:
 
-    /* Constructor/destructor: */
+    /** Constructs the dialog passing @a pParent and @a flags to the base-class. */
     QIDialog(QWidget *pParent = 0, Qt::WindowFlags flags = 0);
-    ~QIDialog();
 
-    /* API: Visibility stuff: */
+    /** Defines whether the dialog is @a fVisible. */
     void setVisible(bool fVisible);
 
 public slots:
 
-    /** Shows the dialog as a modal dialog, blocking until the user closes it.
+    /** Shows the dialog as a modal one, blocking until the user closes it.
       * @param  fShow              detemines whether the dialog should be shown instantly.
       * @param  fApplicationModal  determine whether the dialog should be application-modal. */
     virtual int execute(bool fShow = true, bool fApplicationModal = false);
 
-    /** Shows the dialog as a modal dialog, blocking until the user closes it.
+    /** Shows the dialog as a modal one, blocking until the user closes it.
       * @note  Provided for compatibility with various Qt versions. */
     virtual int exec() /* overload for Qt4, override for Qt5 */ { return execute(); }
 
 protected:
 
-    /* Handler: Show-event stuff: */
-    void showEvent(QShowEvent *pEvent);
-
-    /* Handler: Polish-event stuff: */
+    /** Handles show @a pEvent. */
+    virtual void showEvent(QShowEvent *pEvent) /* override */;
+    /** Handles show @a pEvent sent for the first time. */
     virtual void polishEvent(QShowEvent *pEvent);
 
 private:
 
-    /* Variables: */
+    /** Holds whether the dialog is polished. */
     bool m_fPolished;
+
+    /** Holds the separate event-loop instance.
+      * @note  This event-loop is only used when the dialog being executed via the execute()
+      *        functionality, allowing for the delayed show and advanced modality flag. */
     QPointer<QEventLoop> m_pEventLoop;
 };
 
+/** Safe pointer to the QIDialog class. */
 typedef QPointer<QIDialog> UISafePointerDialog;
 
-#endif /* __QIDialog_h__ */
+#endif /* !___QIDialog_h___ */
 
diff --git a/src/VBox/Frontends/VirtualBox/src/extensions/QIMessageBox.cpp b/src/VBox/Frontends/VirtualBox/src/extensions/QIMessageBox.cpp
index 0dd7865..c8c21e3 100644
--- a/src/VBox/Frontends/VirtualBox/src/extensions/QIMessageBox.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/extensions/QIMessageBox.cpp
@@ -248,6 +248,8 @@ void QIMessageBox::prepare()
             m_pButton3 = createButton(m_iButton3);
             if (m_pButton3)
                 connect(m_pButton3, SIGNAL(clicked()), SLOT(sltDone3()));
+            /* Make sure Escape button always set: */
+            Assert(m_iButtonEsc);
             /* If this is a critical message add a "Copy to clipboard" button: */
             if (m_iconType == AlertIconType_Critical)
             {
@@ -335,7 +337,10 @@ void QIMessageBox::closeEvent(QCloseEvent *pCloseEvent)
     if (m_fDone)
         pCloseEvent->accept();
     else
+    {
         pCloseEvent->ignore();
+        reject();
+    }
 }
 
 void QIMessageBox::updateDetailsContainer()
diff --git a/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h b/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
index 346a560..a75d3f6 100644
--- a/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
+++ b/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
@@ -690,10 +690,9 @@ enum InformationElementType
     InformationElementType_Parallel,
 #endif /* VBOX_WITH_PARALLEL_PORTS */
     InformationElementType_USB,
-    InformationElementType_SF,
+    InformationElementType_SharedFolders,
     InformationElementType_UI,
     InformationElementType_Description,
-    InformationElementType_SharedFolders,
     InformationElementType_RuntimeAttributes,
     InformationElementType_StorageStatistics,
     InformationElementType_NetworkStatistics
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
index 110f6f2..2b4e37e 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.cpp
@@ -107,6 +107,11 @@ UIAction::UIAction(UIActionPool *pParent, UIActionType type)
     /* By default there is no specific menu role.
      * It will be set explicitly later. */
     setMenuRole(QAction::NoRole);
+
+#ifdef VBOX_WS_MAC
+    /* Make sure each action notifies it's parent about hovering: */
+    connect(this, SIGNAL(hovered()), parent(), SLOT(sltActionHovered()));
+#endif /* VBOX_WS_MAC */
 }
 
 UIMenu* UIAction::menu() const
@@ -1075,6 +1080,19 @@ void UIActionPool::sltHandleMenuPrepare()
     emit sigNotifyAboutMenuPrepare(iIndex, pMenu);
 }
 
+#ifdef VBOX_WS_MAC
+void UIActionPool::sltActionHovered()
+{
+    /* Acquire sender action: */
+    UIAction *pAction = qobject_cast<UIAction*>(sender());
+    AssertPtrReturnVoid(pAction);
+    //printf("Action hovered: {%s}\n", pAction->name().toUtf8().constData());
+
+    /* Notify listener about action hevering: */
+    emit sigActionHovered(pAction);
+}
+#endif /* VBOX_WS_MAC */
+
 void UIActionPool::prepare()
 {
     /* Prepare pool: */
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
index 983becf..78ee757 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UIActionPool.h
@@ -398,6 +398,11 @@ signals:
     /** Notifies about menu prepare. */
     void sigNotifyAboutMenuPrepare(int iIndex, QMenu *pMenu);
 
+#ifdef VBOX_WS_MAC
+    /** Notifies about @a pAction hovered. */
+    void sigActionHovered(UIAction *pAction);
+#endif /* VBOX_WS_MAC */
+
 public:
 
     /** Static factory constructor. */
@@ -461,6 +466,11 @@ protected slots:
     /** Loads keyboard shortcuts of action-pool into shortcuts-pool. */
     void sltApplyShortcuts() { updateShortcuts(); }
 
+#ifdef VBOX_WS_MAC
+    /** Handles action hovered signal. */
+    void sltActionHovered();
+#endif /* VBOX_WS_MAC */
+
 protected:
 
     /** Constructor of the action-pool of passed @a type. */
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp b/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
index d4e4b63..2f8ac3e 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/UIMessageCenter.cpp
@@ -171,7 +171,7 @@ void UIMessageCenter::error(QWidget *pParent, MessageType type,
                            const char *pcszAutoConfirmId /* = 0*/) const
 {
     message(pParent, type, strMessage, strDetails, pcszAutoConfirmId,
-            AlertButton_Ok | AlertButtonOption_Default);
+            AlertButton_Ok | AlertButtonOption_Default | AlertButtonOption_Escape);
 }
 
 bool UIMessageCenter::errorWithQuestion(QWidget *pParent, MessageType type,
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
index 151035e..829607c 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
@@ -3684,15 +3684,6 @@ quint64 VBoxGlobal::required2DOffscreenVideoMemory()
 
 #ifdef VBOX_WITH_CRHGSMI
 /* static */
-quint64 VBoxGlobal::required3DWddmOffscreenVideoMemory(const QString &strGuestOSTypeId, int cMonitors /* = 1 */)
-{
-    cMonitors = RT_MAX(cMonitors, 1);
-    quint64 cbSize = VBoxGlobal::requiredVideoMemory(strGuestOSTypeId, 1); /* why not cMonitors? */
-    cbSize += 64 * _1M;
-    return cbSize;
-}
-
-/* static */
 bool VBoxGlobal::isWddmCompatibleOsType(const QString &strGuestOSTypeId)
 {
     return    strGuestOSTypeId.startsWith("WindowsVista")
diff --git a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
index ddde0bb..8fc25fc 100644
--- a/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
+++ b/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
@@ -457,7 +457,6 @@ public:
 
 #ifdef VBOX_WITH_CRHGSMI
     static bool isWddmCompatibleOsType(const QString &strGuestOSTypeId);
-    static quint64 required3DWddmOffscreenVideoMemory(const QString &strGuestOSTypeId, int cMonitors = 1);
 #endif /* VBOX_WITH_CRHGSMI */
 
     /* Returns full medium-format name for the given base medium-format name: */
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
index ce04251..d449493 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIKeyboardHandler.cpp
@@ -524,19 +524,31 @@ void UIKeyboardHandler::releaseAllPressedKeys(bool aReleaseHostKey /* = true */)
      * (for ex., activating the menu) when we release all pressed keys below.
      * This is just a work-around and is likely to fail in some cases.  We are
      * not aware of any ideal solution.  Historically we sent an 0xFE scan code,
-     * but this is a real key release code on Brazilian keyboards. */
+     * but this is a real key release code on Brazilian keyboards. Now we send
+     * a sequence of all modifier keys contained in the host sequence, hoping
+     * that the user will choose something which the guest does not interpret. */
     for (uint i = 0; i < SIZEOF_ARRAY (m_pressedKeys); i++)
     {
         if ((m_pressedKeys[i] & IsKeyPressed) || (m_pressedKeys[i] & IsExtKeyPressed))
         {
             if (!fSentRESEND)
             {
-                LONG aCodes[] = { 0x1D,  0x2A, 0x38, 0x9D, 0xAA, 0xB8 };
-                QVector <LONG> codes(RT_ELEMENTS(aCodes));
-                for (unsigned i = 0; i < RT_ELEMENTS(aCodes); ++i)
-                    codes[i] = aCodes[i];
+                QList <unsigned> shortCodes = UIHostCombo::modifiersToScanCodes(m_globalSettings.hostCombo());
+                QVector <LONG> codes;
+                foreach (unsigned idxCode, shortCodes)
+                {
+                    if (idxCode & 0x100)
+                        codes << 0xE0;
+                    codes << (idxCode & 0x7F);
+                    m_pressedKeys[idxCode & 0x7F] &= idxCode & 0x100 ? ~IsExtKeyPressed : ~IsKeyPressed;
+                }
+                foreach (unsigned idxCode, shortCodes)
+                {
+                    if (idxCode & 0x100)
+                        codes << 0xE0;
+                    codes << ((idxCode & 0x7F) | 0x80);
+                }
                 keyboard().PutScancodes(codes);
-                m_pressedKeys[0x1D] = m_pressedKeys[0x2A] = m_pressedKeys[0x38] = 0;
                 fSentRESEND = true;
             }
             if (m_pressedKeys[i] & IsKeyPressed)
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
index 00d6101..aa529f1 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
@@ -2720,7 +2720,21 @@ void UIMachineLogic::takeScreenshot(const QString &strFile, const QString &strFo
         uMaxWidth  += width;
         uMaxHeight  = RT_MAX(uMaxHeight, height);
         QImage shot = QImage(width, height, QImage::Format_RGB32);
-        display().TakeScreenShot(i, shot.bits(), shot.width(), shot.height(), KBitmapFormat_BGR0);
+        /* For separate process: */
+        if (vboxGlobal().isSeparateProcess())
+        {
+            /* Take screen-data to array first: */
+            const QVector<BYTE> screenData = display().TakeScreenShotToArray(i, shot.width(), shot.height(), KBitmapFormat_BGR0);
+            /* And copy that data to screen-shot if it is Ok: */
+            if (display().isOk() && !screenData.isEmpty())
+                memcpy(shot.bits(), screenData.data(), shot.width() * shot.height() * 4);
+        }
+        /* For the same process: */
+        else
+        {
+            /* Take the screen-shot directly: */
+            display().TakeScreenShot(i, shot.bits(), shot.width(), shot.height(), KBitmapFormat_BGR0);
+        }
         images << shot;
     }
     /* Create a image which will hold all sub images vertically. */
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.cpp
new file mode 100644
index 0000000..c82c7d5
--- /dev/null
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.cpp
@@ -0,0 +1,182 @@
+/* $Id: UIInformationConfiguration.cpp $ */
+/** @file
+ * VBox Qt GUI - UIInformationConfiguration class implementation.
+ */
+
+/*
+ * Copyright (C) 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;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifdef VBOX_WITH_PRECOMPILED_HEADERS
+# include <precomp.h>
+#else  /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+/* Qt includes: */
+# include <QVBoxLayout>
+# include <QApplication>
+
+/* GUI includes: */
+# include "UIInformationConfiguration.h"
+# include "UIInformationItem.h"
+# include "UIInformationView.h"
+# include "UIExtraDataManager.h"
+# include "UIInformationModel.h"
+
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+UIInformationConfiguration::UIInformationConfiguration(QWidget *pParent, const CMachine &machine, const CConsole &console)
+    : QWidget(pParent)
+    , m_machine(machine)
+    , m_console(console)
+    , m_pMainLayout(0)
+    , m_pModel(0)
+    , m_pView(0)
+{
+    /* Prepare main-layout: */
+    prepareMainLayout();
+
+    /* Prepare model: */
+    prepareModel();
+
+    /* Prepare view: */
+    prepareView();
+}
+
+void UIInformationConfiguration::prepareMainLayout()
+{
+    /* Create main-layout: */
+    m_pMainLayout = new QVBoxLayout;
+    AssertPtrReturnVoid(m_pMainLayout);
+    {
+        /* Configure main-layout: */
+        m_pMainLayout->setContentsMargins(2, 0, 0, 0);
+        m_pMainLayout->setSpacing(0);
+        /* Set main-layout: */
+        setLayout(m_pMainLayout);
+    }
+}
+
+void UIInformationConfiguration::prepareModel()
+{
+    /* Create information-model: */
+    m_pModel = new UIInformationModel(this, m_machine, m_console);
+    AssertPtrReturnVoid(m_pModel);
+    {
+        /* Create general data-item: */
+        UIInformationDataItem *pGeneral = new UIInformationDataGeneral(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pGeneral);
+        {
+            /* Add general data-item to model: */
+            m_pModel->addItem(pGeneral);
+        }
+
+        /* Create system data-item: */
+        UIInformationDataItem *pSystem = new UIInformationDataSystem(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pSystem);
+        {
+            /* Add system data-item to model: */
+            m_pModel->addItem(pSystem);
+        }
+
+        /* Create display data-item: */
+        UIInformationDataItem *pDisplay = new UIInformationDataDisplay(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pDisplay);
+        {
+            /* Add display data-item to model: */
+            m_pModel->addItem(pDisplay);
+        }
+
+        /* Create storage data-item: */
+        UIInformationDataItem *pStorage = new UIInformationDataStorage(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pStorage);
+        {
+            /* Add storage data-item to model: */
+            m_pModel->addItem(pStorage);
+        }
+
+        /* Create audio data-item: */
+        UIInformationDataItem *pAudio = new UIInformationDataAudio(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pAudio);
+        {
+            /* Add audio data-item to model: */
+            m_pModel->addItem(pAudio);
+        }
+
+        /* Create network data-item: */
+        UIInformationDataItem *pNetwork = new UIInformationDataNetwork(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pNetwork);
+        {
+            /* Add network data-item to model: */
+            m_pModel->addItem(pNetwork);
+        }
+
+        /* Create serial-ports data-item: */
+        UIInformationDataItem *pSerialPorts = new UIInformationDataSerialPorts(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pSerialPorts);
+        {
+            /* Add serial-ports data-item to model: */
+            m_pModel->addItem(pSerialPorts);
+        }
+
+#ifdef VBOX_WITH_PARALLEL_PORTS
+        /* Create parallel-ports data-item: */
+        UIInformationDataItem *pParallelPorts = new UIInformationDataParallelPorts(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pParallelPorts);
+        {
+            /* Add parallel-ports data-item to model: */
+            m_pModel->addItem(pParallelPorts);
+        }
+#endif /* VBOX_WITH_PARALLEL_PORTS */
+
+        /* Create usb data-item: */
+        UIInformationDataItem *pUSB = new UIInformationDataUSB(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pUSB);
+        {
+            /* Add usb data-item to model: */
+            m_pModel->addItem(pUSB);
+        }
+
+        /* Create shared-folders data-item: */
+        UIInformationDataItem *pSharedFolders = new UIInformationDataSharedFolders(m_machine, m_console, m_pModel);
+        AssertPtrReturnVoid(pSharedFolders);
+        {
+            /* Add shared-folders data-item to model: */
+            m_pModel->addItem(pSharedFolders);
+        }
+    }
+}
+
+void UIInformationConfiguration::prepareView()
+{
+    /* Create information-view: */
+    m_pView = new UIInformationView;
+    AssertPtrReturnVoid(m_pView);
+    {
+        /* Configure information-view: */
+        m_pView->setResizeMode(QListView::Adjust);
+        /* Create information-delegate item: */
+        UIInformationItem *pItem = new UIInformationItem(m_pView);
+        AssertPtrReturnVoid(pItem);
+        {
+            /* Set item-delegate for information-view: */
+            m_pView->setItemDelegate(pItem);
+        }
+        /* Connect datachanged signal: */
+        connect(m_pModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)),
+                m_pView, SLOT(updateData(const QModelIndex&, const QModelIndex&)));
+
+        /* Set model for view: */
+        m_pView->setModel(m_pModel);
+        /* Add information-view to the main-layout: */
+        m_pMainLayout->addWidget(m_pView);
+    }
+}
+
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.h b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.h
new file mode 100644
index 0000000..1631060
--- /dev/null
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationConfiguration.h
@@ -0,0 +1,72 @@
+/* $Id: UIInformationConfiguration.h $ */
+/** @file
+ * VBox Qt GUI - UIInformationConfiguration class declaration.
+ */
+
+/*
+ * Copyright (C) 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;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef ___UIInformationConfiguration_h___
+#define ___UIInformationConfiguration_h___
+
+/* Qt includes: */
+#include <QWidget>
+#include <QListView>
+
+/* COM includes: */
+#include "COMEnums.h"
+#include "CMachine.h"
+#include "CConsole.h"
+
+/* Forward declarations: */
+class QVBoxLayout;
+class UIInformationView;
+class UIInformationModel;
+
+/** QWidget extension
+  * providing GUI with configuration-information tab in session-information window. */
+class UIInformationConfiguration : public QWidget
+{
+    Q_OBJECT;
+
+public:
+
+    /** Constructs information-tab passing @a pParent to the QWidget base-class constructor.
+      * @param machine is machine reference.
+      * @param console is machine console reference. */
+    UIInformationConfiguration(QWidget *pParent, const CMachine &machine, const CConsole &console);
+
+private:
+
+    /** Prepares main-layout. */
+    void prepareMainLayout();
+
+    /** Prepares model. */
+    void prepareModel();
+
+    /** Prepares view. */
+    void prepareView();
+
+    /** Holds the machine instance. */
+    CMachine m_machine;
+    /** Holds the console instance. */
+    CConsole m_console;
+    /** Holds the instance of main-layout we create. */
+    QVBoxLayout *m_pMainLayout;
+    /** Holds the instance of model we create. */
+    UIInformationModel *m_pModel;
+    /** Holds the instance of view we create. */
+    UIInformationView *m_pView;
+};
+
+#endif /* !___UIInformationConfiguration_h___ */
+
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationDataItem.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationDataItem.cpp
index ab554a4..338415c 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationDataItem.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIInformationDataItem.cpp
@@ -72,8 +72,24 @@ UIInformationDataItem::~UIInformationDataItem()
 
 QVariant UIInformationDataItem::data(const QModelIndex &index, int role) const
 {
-    Q_UNUSED(index);
-    Q_UNUSED(role);
+    switch (role)
+    {
+        case Qt::DisplayRole:
+        {
+            return gpConverter->toString(m_type);
+        }
+        break;
+
+        case Qt::UserRole + 2:
+        {
+            return m_type;
+        }
+        break;
+
+        default:
+        break;
+    }
+
     /* Return null QVariant by default: */
     return QVariant();
 }
@@ -87,12 +103,6 @@ QVariant UIInformationDataGeneral::data(const QModelIndex &index, int role) cons
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("General", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/machine_16px.png");
@@ -108,16 +118,12 @@ QVariant UIInformationDataGeneral::data(const QModelIndex &index, int role) cons
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataSystem::UIInformationDataSystem(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -129,12 +135,6 @@ QVariant UIInformationDataSystem::data(const QModelIndex &index, int role) const
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("System", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/chipset_16px.png");
@@ -207,16 +207,12 @@ QVariant UIInformationDataSystem::data(const QModelIndex &index, int role) const
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataDisplay::UIInformationDataDisplay(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -228,12 +224,6 @@ QVariant UIInformationDataDisplay::data(const QModelIndex &index, int role) cons
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Display", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/vrdp_16px.png");
@@ -276,16 +266,12 @@ QVariant UIInformationDataDisplay::data(const QModelIndex &index, int role) cons
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataStorage::UIInformationDataStorage(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -297,11 +283,6 @@ QVariant UIInformationDataStorage::data(const QModelIndex &index, int role) cons
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Storage");
-        }
-        break;
 
         case Qt::DecorationRole:
         {
@@ -349,16 +330,12 @@ QVariant UIInformationDataStorage::data(const QModelIndex &index, int role) cons
         }
         break;
 
-        case Qt::UserRole+2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataAudio::UIInformationDataAudio(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -370,12 +347,6 @@ QVariant UIInformationDataAudio::data(const QModelIndex &index, int role) const
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Audio");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/sound_16px.png");
@@ -397,16 +368,12 @@ QVariant UIInformationDataAudio::data(const QModelIndex &index, int role) const
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataNetwork::UIInformationDataNetwork(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -418,12 +385,6 @@ QVariant UIInformationDataNetwork::data(const QModelIndex &index, int role) cons
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Network");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/nw_16px.png");
@@ -472,16 +433,12 @@ QVariant UIInformationDataNetwork::data(const QModelIndex &index, int role) cons
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataSerialPorts::UIInformationDataSerialPorts(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -493,12 +450,6 @@ QVariant UIInformationDataSerialPorts::data(const QModelIndex &index, int role)
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Serial Ports");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/serial_port_16px.png");
@@ -535,16 +486,12 @@ QVariant UIInformationDataSerialPorts::data(const QModelIndex &index, int role)
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 #ifdef VBOX_WITH_PARALLEL_PORTS
@@ -557,12 +504,6 @@ QVariant UIInformationDataParallelPorts::data(const QModelIndex &index, int role
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Parallel Ports", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/parallel_port_16px.png");
@@ -588,12 +529,6 @@ QVariant UIInformationDataParallelPorts::data(const QModelIndex &index, int role
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
@@ -610,12 +545,6 @@ QVariant UIInformationDataUSB::data(const QModelIndex &index, int role) const
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("USB", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/usb_16px.png");
@@ -648,16 +577,12 @@ QVariant UIInformationDataUSB::data(const QModelIndex &index, int role) const
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataSharedFolders::UIInformationDataSharedFolders(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -670,12 +595,6 @@ QVariant UIInformationDataSharedFolders::data(const QModelIndex &index, int role
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Shared Folders", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/sf_16px.png");
@@ -694,16 +613,12 @@ QVariant UIInformationDataSharedFolders::data(const QModelIndex &index, int role
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 void UIInformationDataSharedFolders::updateData()
@@ -720,12 +635,6 @@ QVariant UIInformationDataRuntimeAttributes::data(const QModelIndex &index, int
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Runtime Attributes", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/state_running_16px.png");
@@ -851,16 +760,12 @@ QVariant UIInformationDataRuntimeAttributes::data(const QModelIndex &index, int
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 UIInformationDataNetworkStatistics::UIInformationDataNetworkStatistics(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
@@ -916,12 +821,6 @@ QVariant UIInformationDataNetworkStatistics::data(const QModelIndex &index, int
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Network Statistics", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/nw_16px.png");
@@ -950,16 +849,12 @@ QVariant UIInformationDataNetworkStatistics::data(const QModelIndex &index, int
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
-    return QVariant();
+
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 QString UIInformationDataNetworkStatistics::parseStatistics(const QString &strText)
@@ -1021,7 +916,7 @@ void UIInformationDataNetworkStatistics::sltProcessStatistics()
 }
 
 UIInformationDataStorageStatistics::UIInformationDataStorageStatistics(const CMachine &machine, const CConsole &console, UIInformationModel *pModel)
-    : UIInformationDataItem(InformationElementType_NetworkStatistics, machine, console, pModel)
+    : UIInformationDataItem(InformationElementType_StorageStatistics, machine, console, pModel)
 {
     /* Storage statistics: */
     CSystemProperties sp = vboxGlobal().virtualBox().GetSystemProperties();
@@ -1178,7 +1073,7 @@ UIInformationDataStorageStatistics::UIInformationDataStorageStatistics(const CMa
         }
     }
 
-     m_pTimer = new QTimer(this);
+    m_pTimer = new QTimer(this);
     connect(m_pTimer, SIGNAL(timeout()), this, SLOT(sltProcessStatistics()));
     /* Statistics page update: */
     sltProcessStatistics();
@@ -1189,12 +1084,6 @@ QVariant UIInformationDataStorageStatistics::data(const QModelIndex &index, int
 {
     switch (role)
     {
-        case Qt::DisplayRole:
-        {
-            return tr("Storage Statistics", "details report");
-        }
-        break;
-
         case Qt::DecorationRole:
         {
             return QString(":/hd_16px.png");
@@ -1295,17 +1184,12 @@ QVariant UIInformationDataStorageStatistics::data(const QModelIndex &index, int
         }
         break;
 
-        case Qt::UserRole + 2:
-        {
-            return m_type;
-        }
-        break;
-
         default:
         break;
     }
 
-    return QVariant();
+    /* Call to base-class: */
+    return UIInformationDataItem::data(index, role);
 }
 
 QString UIInformationDataStorageStatistics::parseStatistics(const QString &strText)
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp
index 527d97d..272717f 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp
@@ -36,7 +36,7 @@
 # include "QIDialogButtonBox.h"
 # include "VBoxGlobal.h"
 # include "VBoxUtils.h"
-# include "UIInformation.h"
+# include "UIInformationConfiguration.h"
 # include "UIMachine.h"
 # include "UIVMItem.h"
 # include "UIInformationRuntime.h"
@@ -231,17 +231,17 @@ void UIVMInformationDialog::prepareTabWidget()
         /* Prepare tab-widget: */
         m_pTabWidget->setTabIcon(0, UIIconPool::iconSet(":/session_info_details_16px.png"));
         m_pTabWidget->setTabIcon(1, UIIconPool::iconSet(":/session_info_runtime_16px.png"));
-        m_pTabWidget->setCurrentIndex(1);
+
         /* Add tab-widget into main-layout: */
         centralWidget()->layout()->addWidget(m_pTabWidget);
 
         /* Create tabs: */
         /* Create Configuration details tab: */
-        UIInformation *pInformationWidget = new UIInformation(this, gpMachine->uisession()->machine(), gpMachine->uisession()->console());
-        AssertPtrReturnVoid(pInformationWidget);
+        UIInformationConfiguration *pInformationConfigurationWidget = new UIInformationConfiguration(this, gpMachine->uisession()->machine(), gpMachine->uisession()->console());
+        AssertPtrReturnVoid(pInformationConfigurationWidget);
         {
             //pInformationWidget->setItems(items);
-            m_tabs.insert(0, pInformationWidget);
+            m_tabs.insert(0, pInformationConfigurationWidget);
             m_pTabWidget->addTab(m_tabs.value(0), QString());
         }
 
@@ -252,6 +252,8 @@ void UIVMInformationDialog::prepareTabWidget()
             m_tabs.insert(1, pInformationRuntimeWidget);
             m_pTabWidget->addTab(m_tabs.value(1), QString());
         }
+        /* Set runtime information tab as default: */
+        m_pTabWidget->setCurrentIndex(1);
     }
 }
 
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp b/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
index 58cd9e2..2cd1eb2 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
@@ -215,6 +215,14 @@ void UIMachineWindowNormal::sltHandleIndicatorContextMenuRequest(IndicatorType i
         pAction->menu()->exec(position);
 }
 
+#ifdef VBOX_WS_MAC
+void UIMachineWindowNormal::sltActionHovered(UIAction *pAction)
+{
+    /* Show the action message for a ten seconds: */
+    statusBar()->showMessage(pAction->statusTip(), 10000);
+}
+#endif /* VBOX_WS_MAC */
+
 void UIMachineWindowNormal::prepareSessionConnections()
 {
     /* Call to base-class: */
@@ -284,6 +292,11 @@ void UIMachineWindowNormal::prepareStatusBar()
         /* Post-configure status-bar: */
         connect(gEDataManager, SIGNAL(sigStatusBarConfigurationChange(const QString&)),
                 this, SLOT(sltHandleStatusBarConfigurationChange(const QString&)));
+#ifdef VBOX_WS_MAC
+        /* Make sure the status-bar is aware of action hovering: */
+        connect(actionPool(), SIGNAL(sigActionHovered(UIAction *)),
+                this, SLOT(sltActionHovered(UIAction *)));
+#endif /* VBOX_WS_MAC */
     }
 
 #ifdef VBOX_WS_MAC
@@ -499,10 +512,6 @@ void UIMachineWindowNormal::showInNecessaryMode()
     m_pMachineView->setFocus();
 }
 
-/**
- * Adjusts machine-window size to correspond current guest screen size.
- * @param fAdjustPosition determines whether is it necessary to adjust position too.
- */
 void UIMachineWindowNormal::normalizeGeometry(bool fAdjustPosition)
 {
 #ifndef VBOX_GUI_WITH_CUSTOMIZATIONS1
@@ -511,15 +520,15 @@ void UIMachineWindowNormal::normalizeGeometry(bool fAdjustPosition)
         return;
 
     /* Calculate client window offsets: */
-    QRect frameGeo = frameGeometry();
+    QRect frGeo = frameGeometry();
     const QRect geo = geometry();
-    int dl = geo.left() - frameGeo.left();
-    int dt = geo.top() - frameGeo.top();
-    int dr = frameGeo.right() - geo.right();
-    int db = frameGeo.bottom() - geo.bottom();
+    const int dl = geo.left() - frGeo.left();
+    const int dt = geo.top() - frGeo.top();
+    const int dr = frGeo.right() - geo.right();
+    const int db = frGeo.bottom() - geo.bottom();
 
     /* Get the best size w/o scroll-bars: */
-    QSize s = sizeHint();
+    QSize sh = sizeHint();
 
     /* If guest-screen auto-resize is not enabled
      * or the guest-additions doesn't support graphics
@@ -527,23 +536,38 @@ void UIMachineWindowNormal::normalizeGeometry(bool fAdjustPosition)
     if (!machineView()->isGuestAutoresizeEnabled() || !uisession()->isGuestSupportsGraphics())
     {
         if (machineView()->verticalScrollBar()->isVisible())
-            s -= QSize(machineView()->verticalScrollBar()->sizeHint().width(), 0);
+            sh -= QSize(machineView()->verticalScrollBar()->sizeHint().width(), 0);
         if (machineView()->horizontalScrollBar()->isVisible())
-            s -= QSize(0, machineView()->horizontalScrollBar()->sizeHint().height());
+            sh -= QSize(0, machineView()->horizontalScrollBar()->sizeHint().height());
     }
 
     /* Resize the frame to fit the contents: */
-    s -= size();
-    frameGeo.setRight(frameGeo.right() + s.width());
-    frameGeo.setBottom(frameGeo.bottom() + s.height());
+    sh -= size();
+    frGeo.setRight(frGeo.right() + sh.width());
+    frGeo.setBottom(frGeo.bottom() + sh.height());
+
+    /* Calculate common bound region: */
+    QRegion region;
+    for (int iScreenIndex = 0; iScreenIndex < vboxGlobal().screenCount(); ++iScreenIndex)
+    {
+        /* Get enumerated screen's available area: */
+        QRect rect = vboxGlobal().availableGeometry(iScreenIndex);
+#ifdef VBOX_WS_WIN
+        /* On Windows host window can exceed the available
+         * area in maximized/sticky-borders state: */
+        rect.adjust(-10, -10, 10, 10);
+#endif /* VBOX_WS_WIN */
+        /* Append rectangle: */
+        region += rect;
+    }
 
     /* Adjust position if necessary: */
     if (fAdjustPosition)
-        frameGeo = VBoxGlobal::normalizeGeometry(frameGeo, vboxGlobal().availableGeometry(pos()));
+        frGeo = VBoxGlobal::normalizeGeometry(frGeo, region);
 
     /* Finally, set the frame geometry: */
-    setGeometry(frameGeo.left() + dl, frameGeo.top() + dt,
-                frameGeo.width() - dl - dr, frameGeo.height() - dt - db);
+    setGeometry(frGeo.left() + dl, frGeo.top() + dt,
+                frGeo.width() - dl - dr, frGeo.height() - dt - db);
 #else /* VBOX_GUI_WITH_CUSTOMIZATIONS1 */
     /* Customer request: There should no be
      * machine-window resize on machine-view resize: */
diff --git a/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h b/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h
index cd7b923..463a7c2 100644
--- a/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h
+++ b/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h
@@ -24,6 +24,7 @@
 /* Forward declarations: */
 class CMediumAttachment;
 class UIIndicatorsPool;
+class UIAction;
 
 /** UIMachineWindow reimplementation,
   * providing GUI with machine-window for the normal mode. */
@@ -81,6 +82,11 @@ private slots:
     /** Handles status-bar indicator context-menu-request. */
     void sltHandleIndicatorContextMenuRequest(IndicatorType indicatorType, const QPoint &position);
 
+#ifdef VBOX_WS_MAC
+    /** Handles signal about some @a pAction hovered. */
+    void sltActionHovered(UIAction *pAction);
+#endif /* VBOX_WS_MAC */
+
 private:
 
     /** Prepare session connections routine. */
@@ -106,7 +112,8 @@ private:
     /** Updates visibility according to visual-state. */
     void showInNecessaryMode();
 
-    /** Normalizes geometry according to guest-size. */
+    /** Performs window geometry normalization according to guest-size and host's available geometry.
+      * @param  fAdjustPosition  Determines whether is it necessary to adjust position as well. */
     void normalizeGeometry(bool fAdjustPosition);
 
     /** Common update routine. */
diff --git a/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp b/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
index cdc9842..f331940 100644
--- a/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.cpp
@@ -86,8 +86,9 @@ UISelectorWindow* UISelectorWindow::m_spInstance = 0;
 /* static */
 void UISelectorWindow::create()
 {
-    /* Make sure selector-window is not created: */
-    AssertReturnVoid(!m_spInstance);
+    /* Return if selector-window is already created: */
+    if (m_spInstance)
+        return;
 
     /* Create selector-window: */
     new UISelectorWindow;
@@ -364,6 +365,14 @@ void UISelectorWindow::sltHandleGroupSavingProgressChange()
     updateActionsAppearance();
 }
 
+#ifdef VBOX_WS_MAC
+void UISelectorWindow::sltActionHovered(UIAction *pAction)
+{
+    /* Show the action message for a ten seconds: */
+    statusBar()->showMessage(pAction->statusTip(), 10000);
+}
+#endif /* VBOX_WS_MAC */
+
 void UISelectorWindow::sltHandleStateChange(QString)
 {
     /* Get current item: */
@@ -1126,8 +1135,8 @@ void UISelectorWindow::polishEvent(QShowEvent*)
 #ifdef VBOX_WS_MAC
 bool UISelectorWindow::eventFilter(QObject *pObject, QEvent *pEvent)
 {
-    /* Ignore for non-active window: */
-    if (!isActiveWindow())
+    /* Ignore for non-active window except for FileOpen event which should be always processed: */
+    if (!isActiveWindow() && pEvent->type() != QEvent::FileOpen)
         return QIWithRetranslateUI<QMainWindow>::eventFilter(pObject, pEvent);
 
     /* Ignore for other objects: */
@@ -1140,7 +1149,7 @@ bool UISelectorWindow::eventFilter(QObject *pObject, QEvent *pEvent)
     {
         case QEvent::FileOpen:
         {
-            sltOpenUrls(QList<QUrl>() << static_cast<QFileOpenEvent*>(pEvent)->file());
+            sltOpenUrls(QList<QUrl>() << static_cast<QFileOpenEvent*>(pEvent)->url());
             pEvent->accept();
             return true;
             break;
@@ -1608,6 +1617,12 @@ void UISelectorWindow::prepareStatusBar()
     statusBar()->addPermanentWidget(pIndicator);
     pIndicator->updateAppearance();
 #endif /* VBOX_GUI_WITH_NETWORK_MANAGER */
+
+#ifdef VBOX_WS_MAC
+    /* Make sure the status-bar is aware of action hovering: */
+    connect(actionPool(), SIGNAL(sigActionHovered(UIAction *)),
+            this, SLOT(sltActionHovered(UIAction *)));
+#endif /* VBOX_WS_MAC */
 }
 
 void UISelectorWindow::prepareWidgets()
@@ -1632,7 +1647,6 @@ void UISelectorWindow::prepareWidgets()
 
     /* Prepare graphics VM list: */
     m_pPaneChooser = new UIGChooser(this);
-    m_pPaneChooser->setStatusBar(statusBar());
 
     /* Prepare graphics details: */
     m_pPaneDetails = new UIGDetails(this);
diff --git a/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h b/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h
index 7c48698..e8dda8f 100644
--- a/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h
+++ b/src/VBox/Frontends/VirtualBox/src/selector/UISelectorWindow.h
@@ -87,6 +87,11 @@ private slots:
     /** Handles signal about group saving progress change. */
     void sltHandleGroupSavingProgressChange();
 
+#ifdef VBOX_WS_MAC
+    /** Handles signal about some @a pAction hovered. */
+    void sltActionHovered(UIAction *pAction);
+#endif /* VBOX_WS_MAC */
+
     /** @name CVirtualBox event handling stuff.
       * @{ */
         /** Handles CVirtualBox event about state change for machine with @a strID. */
diff --git a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.cpp b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.cpp
index fa009a0..5caa68b 100644
--- a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.cpp
@@ -39,7 +39,6 @@ UIGChooser::UIGChooser(UISelectorWindow *pParent)
     , m_pMainLayout(0)
     , m_pChooserModel(0)
     , m_pChooserView(0)
-    , m_pStatusBar(0)
 {
     /* Prepare palette: */
     preparePalette();
@@ -91,20 +90,6 @@ bool UIGChooser::isAllItemsOfOneGroupSelected() const
     return m_pChooserModel->isAllItemsOfOneGroupSelected();
 }
 
-void UIGChooser::setStatusBar(QStatusBar *pStatusBar)
-{
-    /* Old status-bar set? */
-    if (m_pStatusBar)
-       m_pChooserModel->disconnect(m_pStatusBar);
-
-    /* Connect new status-bar: */
-    m_pStatusBar = pStatusBar;
-    connect(m_pChooserModel, SIGNAL(sigClearStatusMessage()),
-            m_pStatusBar, SLOT(clearMessage()));
-    connect(m_pChooserModel, SIGNAL(sigShowStatusMessage(const QString&)),
-            m_pStatusBar, SLOT(showMessage(const QString&)));
-}
-
 bool UIGChooser::isGroupSavingInProgress() const
 {
     return m_pChooserModel->isGroupSavingInProgress();
diff --git a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.h b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.h
index e45eb8e..49bec9d 100644
--- a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.h
+++ b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooser.h
@@ -70,9 +70,6 @@ public:
     bool isSingleGroupSelected() const;
     bool isAllItemsOfOneGroupSelected() const;
 
-    /* API: Status-bar stuff: */
-    void setStatusBar(QStatusBar *pStatusBar);
-
     /* API: Group-saving stuff: */
     bool isGroupSavingInProgress() const;
 
@@ -96,7 +93,6 @@ private:
     QVBoxLayout *m_pMainLayout;
     UIGChooserModel *m_pChooserModel;
     UIGChooserView *m_pChooserView;
-    QStatusBar *m_pStatusBar;
 };
 
 #endif /* __UIGChooser_h__ */
diff --git a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
index 15a844b..89d8b49 100644
--- a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.cpp
@@ -1143,11 +1143,6 @@ void UIGChooserModel::sltCurrentDragObjectDestroyed()
     root()->resetDragToken();
 }
 
-void UIGChooserModel::sltActionHovered(QAction *pAction)
-{
-    emit sigShowStatusMessage(pAction->statusTip());
-}
-
 void UIGChooserModel::sltEraseLookupTimer()
 {
     m_pLookupTimer->stop();
@@ -1246,9 +1241,6 @@ void UIGChooserModel::prepareContextMenu()
     m_pContextMenuMachine->addSeparator();
     m_pContextMenuMachine->addAction(actionPool()->action(UIActionIndexST_M_Machine_S_SortParent));
 
-    connect(m_pContextMenuGroup, SIGNAL(hovered(QAction*)), this, SLOT(sltActionHovered(QAction*)));
-    connect(m_pContextMenuMachine, SIGNAL(hovered(QAction*)), this, SLOT(sltActionHovered(QAction*)));
-
     connect(actionPool()->action(UIActionIndexST_M_Group_S_New), SIGNAL(triggered()),
             this, SLOT(sltCreateNewMachine()));
     connect(actionPool()->action(UIActionIndexST_M_Machine_S_New), SIGNAL(triggered()),
@@ -1668,8 +1660,6 @@ void UIGChooserModel::popupContextMenu(UIGraphicsSelectorContextMenuType type, Q
             break;
         }
     }
-    /* Clear status-bar: */
-    emit sigClearStatusMessage();
 }
 
 bool UIGChooserModel::processDragMoveEvent(QGraphicsSceneDragDropEvent *pEvent)
diff --git a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
index f9bc6f0..501f49f 100644
--- a/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
+++ b/src/VBox/Frontends/VirtualBox/src/selector/graphics/chooser/UIGChooserModel.h
@@ -61,10 +61,6 @@ class UIGChooserModel : public QObject
 
 signals:
 
-    /* Notifiers: Status-bar stuff: */
-    void sigShowStatusMessage(const QString &strStatusMessage);
-    void sigClearStatusMessage();
-
     /* Notifier: Current-item stuff: */
     void sigSelectionChanged();
 
@@ -195,9 +191,6 @@ private slots:
     void sltStartScrolling();
     void sltCurrentDragObjectDestroyed();
 
-    /* Handler: Context-menu stuff: */
-    void sltActionHovered(QAction *pAction);
-
     /* Handler: Item lookup stuff: */
     void sltEraseLookupTimer();
 
diff --git a/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp b/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
index 845b3ff..aa7b990 100644
--- a/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
@@ -372,11 +372,6 @@ bool UIMachineSettingsDisplay::validate(QList<UIValidationMessage> &messages)
             /* 3D acceleration video RAM amount test: */
             else if (m_pCheckbox3D->isChecked() && m_fWddmModeSupported)
             {
-# if 0
-                int cGuestScreenCount = m_pEditorVideoScreenCount->value();
-                uNeedBytes += VBoxGlobal::required3DWddmOffscreenVideoMemory(m_guestOSType.GetId(), cGuestScreenCount);
-                uNeedBytes = qMin(uNeedBytes, 256 * _1M);
-# endif
                 uNeedBytes = qMax(uNeedBytes, (quint64) 128 * _1M);
                 if ((quint64)m_pEditorVideoMemorySize->value() * _1M < uNeedBytes)
                 {
@@ -959,10 +954,6 @@ void UIMachineSettingsDisplay::checkVRAMRequirements()
 #ifdef VBOX_WITH_CRHGSMI
     if (m_pCheckbox3D->isChecked() && m_fWddmModeSupported)
     {
-# if 0
-        uNeedMBytes += VBoxGlobal::required3DWddmOffscreenVideoMemory(m_guestOSType.GetId(), cGuestScreenCount) / _1M;
-        uNeedMBytes = qMin(uNeedMBytes, 256);
-# endif
         uNeedMBytes = qMax(uNeedMBytes, (quint64) 128);
         /* No less than 256MB (if possible): */
         if (m_iMaxVRAMVisible < 256 && m_iMaxVRAM >= 256)
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp b/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp
index e881ee0..baafe71 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.cpp
@@ -58,6 +58,11 @@
 # include "XKeyboard.h"
 #endif /* VBOX_WS_X11 */
 
+/* Other VBox includes: */
+#if defined(VBOX_WS_X11)
+# include <VBox/VBoxKeyboard.h>
+#endif /* VBOX_WS_X11 */
+
 /* External includes: */
 #if defined(VBOX_WS_MAC)
 # include <Carbon/Carbon.h>
@@ -275,6 +280,64 @@ bool UINativeHotKey::isValidKey(int iKeyCode)
     return false;
 }
 
+unsigned UINativeHotKey::modifierToSet1ScanCode(int iKeyCode)
+{
+    switch(iKeyCode)
+    {
+#if defined(VBOX_WS_MAC)
+
+        case controlKey:                        return 0x1D;
+        case rightControlKey:                   return 0x11D;
+        case shiftKey:                          return 0x2A;
+        case rightShiftKey:                     return 0x36;
+        case optionKey:                         return 0x38;
+        case rightOptionKey:                    return 0x138;
+        case cmdKey:                            return 0x15B;
+        case kEventKeyModifierRightCmdKeyMask:  return 0x15C;
+        default:                                return 0;
+
+#elif defined(VBOX_WS_WIN)
+
+        case VK_CONTROL:
+        case VK_LCONTROL:  return 0x1D;
+        case VK_RCONTROL:  return 0x11D;
+        case VK_SHIFT:
+        case VK_LSHIFT:    return 0x2A;
+        case VK_RSHIFT:    return 0x36;
+        case VK_MENU:
+        case VK_LMENU:     return 0x38;
+        case VK_RMENU:     return 0x138;
+        case VK_LWIN:      return 0x15B;
+        case VK_RWIN:      return 0x15C;
+        case VK_APPS:      return 0x15D;
+        default:           return 0;
+
+#elif defined(VBOX_WS_X11)
+
+        case XK_Control_L:         return 0x1D;
+        case XK_Control_R:         return 0x11D;
+        case XK_Shift_L:           return 0x2A;
+        case XK_Shift_R:           return 0x36;
+        case XK_Alt_L:             return 0x38;
+        case XK_ISO_Level3_Shift:
+        case XK_Alt_R:             return 0x138;
+        case XK_Meta_L:
+        case XK_Super_L:           return 0x15B;
+        case XK_Meta_R:
+        case XK_Super_R:           return 0x15C;
+        case XK_Menu:              return 0x15D;
+        default:                   return 0;
+
+#else
+
+# warning "port me!"
+
+        default:  return 0;
+
+#endif
+    }
+}
+
 #if defined(VBOX_WS_WIN)
 
 int UINativeHotKey::distinguishModifierVKey(int wParam, int lParam)
@@ -381,6 +444,17 @@ QList<int> UIHostCombo::toKeyCodeList(const QString &strKeyCombo)
     return keyCodeList;
 }
 
+QList<unsigned> UIHostCombo::modifiersToScanCodes(const QString &strKeyCombo)
+{
+    QStringList encodedKeyList = strKeyCombo.split(',');
+    QList<unsigned> scanCodeList;
+    for (int i = 0; i < encodedKeyList.size(); ++i)
+        if (unsigned idxScanCode = UINativeHotKey::modifierToSet1ScanCode(encodedKeyList[i].toInt()))
+            if (idxScanCode != 0)
+                scanCodeList << idxScanCode;
+    return scanCodeList;
+}
+
 bool UIHostCombo::isValidKeyCombo(const QString &strKeyCombo)
 {
     QList<int> keyCodeList = toKeyCodeList(strKeyCombo);
@@ -702,9 +776,9 @@ bool UIHostComboEditorPrivate::nativeEvent(const QByteArray &eventType, void *pM
         {
             /* Parse key-event: */
             xcb_key_press_event_t *pKeyEvent = static_cast<xcb_key_press_event_t*>(pMessage);
-            RT_GCC_NO_DEPRECATED_BEGIN
+            RT_GCC_NO_WARN_DEPRECATED_BEGIN
             const KeySym ks = ::XKeycodeToKeysym(QX11Info::display(), pKeyEvent->detail, 0);
-            RT_GCC_NO_DEPRECATED_END
+            RT_GCC_NO_WARN_DEPRECATED_END
             const int iKeySym = static_cast<const int>(ks);
 
             /* Handle key-event: */
@@ -839,9 +913,9 @@ bool UIHostComboEditorPrivate::x11Event(XEvent *pEvent)
         {
             /* Get key-code: */
             XKeyEvent *pKeyEvent = (XKeyEvent*)pEvent;
-            RT_GCC_NO_DEPRECATED_BEGIN
+            RT_GCC_NO_WARN_DEPRECATED_BEGIN
             KeySym ks = ::XKeycodeToKeysym(pKeyEvent->display, pKeyEvent->keycode, 0);
-            RT_GCC_NO_DEPRECATED_END
+            RT_GCC_NO_WARN_DEPRECATED_END
 
             int iKeySym = (int)ks;
 
diff --git a/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.h b/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.h
index ce83327..4dda364 100644
--- a/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.h
+++ b/src/VBox/Frontends/VirtualBox/src/widgets/UIHostComboEditor.h
@@ -46,6 +46,10 @@ namespace UINativeHotKey
 {
     QString toString(int iKeyCode);
     bool isValidKey(int iKeyCode);
+    /** Translates a modifier key in host platform
+      * encoding to the corresponding set 1 PC scan code.
+      * @note  Non-modifier keys will return zero. */
+    unsigned modifierToSet1ScanCode(int iKeyCode);
 #if defined(VBOX_WS_WIN)
     int distinguishModifierVKey(int wParam, int lParam);
 #elif defined(VBOX_WS_X11)
@@ -62,6 +66,9 @@ namespace UIHostCombo
     QString hostComboCacheKey();
     QString toReadableString(const QString &strKeyCombo);
     QList<int> toKeyCodeList(const QString &strKeyCombo);
+    /** Returns a sequence of the set 1 PC scan codes for all
+      * modifiers contained in the (host platform format) sequence passed. */
+    QList<unsigned> modifiersToScanCodes(const QString &strKeyCombo);
     bool isValidKeyCombo(const QString &strKeyCombo);
 }
 
diff --git a/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp b/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp
index 69c397f..6e03ebd 100644
--- a/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp
+++ b/src/VBox/Frontends/VirtualBox/src/wizards/importappliance/UIWizardImportAppPageBasic2.cpp
@@ -20,7 +20,6 @@
 #else  /* !VBOX_WITH_PRECOMPILED_HEADERS */
 
 /* Global includes: */
-# include <QFontDatabase>
 # include <QVBoxLayout>
 # include <QTextBrowser>
 # include <QPushButton>
@@ -233,8 +232,6 @@ void UIApplianceUnverifiedCertificateViewer::prepare()
         {
             /* Configure text-browser: */
             m_pTextBrowser->setMinimumSize(500, 300);
-            const QFont font = QFontDatabase::systemFont(QFontDatabase::FixedFont);
-            m_pTextBrowser->setFont(font);
             /* Add text-browser into layout: */
             pLayout->addWidget(m_pTextBrowser);
         }
@@ -273,19 +270,19 @@ void UIApplianceUnverifiedCertificateViewer::retranslateUi()
                                  ).arg(m_certificate.GetFriendlyName()));
 
     /* Translate text-browser contents: */
-    QStringList info;
-    KCertificateVersion ver = m_certificate.GetVersionNumber();
-    info << tr("Issuer:               %1").arg(QStringList(m_certificate.GetIssuerName().toList()).join(", "));
-    info << tr("Subject:              %1").arg(QStringList(m_certificate.GetSubjectName().toList()).join(", "));
-    info << tr("Not Valid Before:     %1").arg(m_certificate.GetValidityPeriodNotBefore());
-    info << tr("Not Valid After:      %1").arg(m_certificate.GetValidityPeriodNotAfter());
-    info << tr("Serial Number:        %1").arg(m_certificate.GetSerialNumber());
-    info << tr("Self-Signed:          %1").arg(m_certificate.GetSelfSigned() ? tr("True") : tr("False"));
-    info << tr("Authority (CA):       %1").arg(m_certificate.GetCertificateAuthority() ? tr("True") : tr("False"));
-    //info << tr("Trusted:              %1").arg(m_certificate.GetTrusted() ? tr("True") : tr("False")); - no, that's why we're here
-    info << tr("Public Algorithm:     %1 (%2)").arg(m_certificate.GetPublicKeyAlgorithm()).arg(m_certificate.GetPublicKeyAlgorithmOID());
-    info << tr("Signature Algorithm:  %1 (%2)").arg(m_certificate.GetSignatureAlgorithmName()).arg(m_certificate.GetSignatureAlgorithmOID());
-    info << tr("X.509 Version Number: %1").arg(ver);
-    m_pTextBrowser->setPlainText(info.join("\n"));
+    const QString strTemplateRow = tr("<tr><td>%1:</td><td>%2</td></tr>", "key: value");
+    QString strTableContent;
+    strTableContent += strTemplateRow.arg(tr("Issuer"),               QStringList(m_certificate.GetIssuerName().toList()).join(", "));
+    strTableContent += strTemplateRow.arg(tr("Subject"),              QStringList(m_certificate.GetSubjectName().toList()).join(", "));
+    strTableContent += strTemplateRow.arg(tr("Not Valid Before"),     m_certificate.GetValidityPeriodNotBefore());
+    strTableContent += strTemplateRow.arg(tr("Not Valid After"),      m_certificate.GetValidityPeriodNotAfter());
+    strTableContent += strTemplateRow.arg(tr("Serial Number"),        m_certificate.GetSerialNumber());
+    strTableContent += strTemplateRow.arg(tr("Self-Signed"),          m_certificate.GetSelfSigned() ? tr("True") : tr("False"));
+    strTableContent += strTemplateRow.arg(tr("Authority (CA)"),       m_certificate.GetCertificateAuthority() ? tr("True") : tr("False"));
+//    strTableContent += strTemplateRow.arg(tr("Trusted"),              m_certificate.GetTrusted() ? tr("True") : tr("False"));
+    strTableContent += strTemplateRow.arg(tr("Public Algorithm"),     tr("%1 (%2)", "value (clarification)").arg(m_certificate.GetPublicKeyAlgorithm()).arg(m_certificate.GetPublicKeyAlgorithmOID()));
+    strTableContent += strTemplateRow.arg(tr("Signature Algorithm"),  tr("%1 (%2)", "value (clarification)").arg(m_certificate.GetSignatureAlgorithmName()).arg(m_certificate.GetSignatureAlgorithmOID()));
+    strTableContent += strTemplateRow.arg(tr("X.509 Version Number"), QString::number(m_certificate.GetVersionNumber()));
+    m_pTextBrowser->setText(QString("<table>%1</table>").arg(strTableContent));
 }
 
diff --git a/src/VBox/HostDrivers/Support/SUPLib.cpp b/src/VBox/HostDrivers/Support/SUPLib.cpp
index b116e7c..1aa717e 100644
--- a/src/VBox/HostDrivers/Support/SUPLib.cpp
+++ b/src/VBox/HostDrivers/Support/SUPLib.cpp
@@ -101,7 +101,7 @@ SUPLIBDATA                      g_supLibData =
     /*.hDevice              = */    SUP_HDEVICE_NIL,
     /*.fUnrestricted        = */    true
 #if   defined(RT_OS_DARWIN)
-    ,/* .uConnection        = */    NULL
+    ,/* .uConnection        = */    0
 #elif defined(RT_OS_LINUX)
     ,/* .fSysMadviseWorks   = */    false
 #endif
diff --git a/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp b/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp
index 3287403..75977f3 100644
--- a/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp
+++ b/src/VBox/HostDrivers/Support/darwin/SUPLib-darwin.cpp
@@ -168,7 +168,7 @@ static int suplibDarwinOpenService(PSUPLIBDATA pThis)
      * This will cause the user client class in SUPDrv-darwin.cpp to be
      * instantiated and create a session for this process.
      */
-    io_connect_t Connection = NULL;
+    io_connect_t Connection = 0;
     kr = IOServiceOpen(ServiceObject, mach_task_self(), SUP_DARWIN_IOSERVICE_COOKIE, &Connection);
     IOObjectRelease(ServiceObject);
     if (kr != kIOReturnSuccess)
diff --git a/src/VBox/HostDrivers/VBoxUSB/darwin/USBLib-darwin.cpp b/src/VBox/HostDrivers/VBoxUSB/darwin/USBLib-darwin.cpp
index f42d2fe..72e3343 100644
--- a/src/VBox/HostDrivers/VBoxUSB/darwin/USBLib-darwin.cpp
+++ b/src/VBox/HostDrivers/VBoxUSB/darwin/USBLib-darwin.cpp
@@ -46,7 +46,7 @@ static uint32_t volatile    g_cUsers = 0;
 /** The IOMasterPort. */
 static mach_port_t          g_MasterPort = 0;
 /** The current service connection. */
-static io_connect_t         g_Connection = NULL;
+static io_connect_t         g_Connection = 0;
 
 
 
@@ -131,7 +131,7 @@ USBLIB_DECL(int) USBLibTerm(void)
         LogRel(("USBLib: Warning: IOServiceClose(%p) returned %#x\n", g_Connection, kr));
         AssertMsgFailed(("%#x\n", kr));
     }
-    g_Connection = NULL;
+    g_Connection = 0;
 
     return VINF_SUCCESS;
 }
diff --git a/src/VBox/HostServices/SharedClipboard/darwin-pasteboard.h b/src/VBox/HostServices/SharedClipboard/darwin-pasteboard.h
index 704d778..5e51c29 100644
--- a/src/VBox/HostServices/SharedClipboard/darwin-pasteboard.h
+++ b/src/VBox/HostServices/SharedClipboard/darwin-pasteboard.h
@@ -18,7 +18,6 @@
 #ifndef ___DARWIN_PASTEBOARD_H
 #define ___DARWIN_PASTEBOARD_H
 
-typedef struct OpaquePasteboardRef;
 typedef struct OpaquePasteboardRef *PasteboardRef;
 
 int initPasteboard (PasteboardRef *pPasteboardRef);
diff --git a/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec b/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
index fe7e775..6bd3358 100644
--- a/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
+++ b/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec
@@ -174,6 +174,10 @@ if [ -f $RPM_BUILD_ROOT/usr/lib/virtualbox/libQt5CoreVBox.so.5 ]; then
   echo "Plugins = /usr/lib/virtualbox/plugins" >> $RPM_BUILD_ROOT/usr/lib/virtualbox/qt.conf
   rm $RPM_BUILD_ROOT/usr/lib/virtualbox/chrpath
 fi
+if [ -d $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy ]; then
+  mv $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy/* $RPM_BUILD_ROOT/usr/lib/virtualbox
+  rmdir $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy
+fi
 ln -s ../VBoxVMM.so $RPM_BUILD_ROOT/usr/lib/virtualbox/components/VBoxVMM.so
 for i in VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetNAT VBoxNetAdpCtl; do
   chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
diff --git a/src/VBox/Main/Makefile.kmk b/src/VBox/Main/Makefile.kmk
index 580973e..04d6434 100644
--- a/src/VBox/Main/Makefile.kmk
+++ b/src/VBox/Main/Makefile.kmk
@@ -304,7 +304,9 @@ VBoxSVC_DEFS.win += _WIN32_WINNT=0x0510
 # VBoxSVC_DEFS.linux += VBOX_USE_LIBHAL
 VBoxSVC_DEFS.solaris += VBOX_USE_LIBHAL
 
-VBoxSVC_CXXFLAGS = $(filter-out -Wno-unused,$(TEMPLATE_VBOXMAINEXE_CXXFLAGS))
+ifneq ($(KBUILD_TARGET),win)
+ VBoxSVC_CXXFLAGS = -Wunused -Wconversion
+endif
 
 VBoxSVC_INCS = \
 	include \
@@ -669,6 +671,10 @@ VBoxC_DEFS.darwin.x86 = VBOX_WITH_2X_4GB_ADDR_SPACE
 VBoxC_DEFS.win.x86 += _WIN32_WINNT=0x0500
 VBoxC_DEFS.win.amd64 += _WIN32_WINNT=0x0510
 
+ifneq ($(KBUILD_TARGET),win)
+# VBoxC_CXXFLAGS = -Wunused -Wconversion
+endif
+
 VBoxC_SDKS = VBOX_LIBPNG VBOX_ZLIB
 ifdef VBOX_WITH_VPX
   VBoxC_SDKS += VBOX_VPX
diff --git a/src/VBox/Main/idl/VirtualBox.xidl b/src/VBox/Main/idl/VirtualBox.xidl
index 01d5615..b91c244 100644
--- a/src/VBox/Main/idl/VirtualBox.xidl
+++ b/src/VBox/Main/idl/VirtualBox.xidl
@@ -5309,7 +5309,7 @@
           Virtual machine not registered.
         </result>
         <result name="E_ACCESSDENIED">
-          Process not started by OpenRemoteSession.
+          Process not started by <link to="IMachine::launchVMProcess"/>.
         </result>
         <result name="VBOX_E_INVALID_OBJECT_STATE">
           Session already open or being opened.
diff --git a/src/VBox/Main/include/GuestCtrlImplPrivate.h b/src/VBox/Main/include/GuestCtrlImplPrivate.h
index 3c5c435..2be9c94 100644
--- a/src/VBox/Main/include/GuestCtrlImplPrivate.h
+++ b/src/VBox/Main/include/GuestCtrlImplPrivate.h
@@ -941,6 +941,7 @@ public:
         {
             RTMemFree(pvData);
             cbData = 0;
+            pvData = NULL;
         }
         uType = 0;
     }
diff --git a/src/VBox/Main/include/GuestDnDPrivate.h b/src/VBox/Main/include/GuestDnDPrivate.h
index 639cb74..8b00a83 100644
--- a/src/VBox/Main/include/GuestDnDPrivate.h
+++ b/src/VBox/Main/include/GuestDnDPrivate.h
@@ -241,7 +241,7 @@ public:
 
     uint64_t addProcessed(uint32_t cbDataAdd)
     {
-        const uint64_t cbTotal = getTotal();
+        const uint64_t cbTotal = getTotal(); NOREF(cbTotal);
         Assert(cbProcessed + cbDataAdd <= cbTotal);
         cbProcessed += cbDataAdd;
         return cbProcessed;
diff --git a/src/VBox/Main/include/HGCMObjects.h b/src/VBox/Main/include/HGCMObjects.h
index b6ea9a9..5d2c1e2 100644
--- a/src/VBox/Main/include/HGCMObjects.h
+++ b/src/VBox/Main/include/HGCMObjects.h
@@ -89,7 +89,7 @@ class HGCMObject
 
         uint32_t Handle()
         {
-            return m_core.AvlCore.Key;
+            return (uint32_t)m_core.AvlCore.Key;
         };
 
         HGCMOBJ_TYPE Type()
diff --git a/src/VBox/Main/include/VirtualBoxClientImpl.h b/src/VBox/Main/include/VirtualBoxClientImpl.h
index 9568d1b..fc23f95 100644
--- a/src/VBox/Main/include/VirtualBoxClientImpl.h
+++ b/src/VBox/Main/include/VirtualBoxClientImpl.h
@@ -33,7 +33,7 @@ class ATL_NO_VTABLE VirtualBoxClient :
 #endif
 {
 public:
-    DECLARE_CLASSFACTORY()
+    DECLARE_CLASSFACTORY_SINGLETON(VirtualBoxClient)
 
     // Do not use any ATL registry support.
     //DECLARE_REGISTRY_RESOURCEID(IDR_VIRTUALBOX)
diff --git a/src/VBox/Main/src-all/DisplayResampleImage.cpp b/src/VBox/Main/src-all/DisplayResampleImage.cpp
index b656fbb..7216d0c 100644
--- a/src/VBox/Main/src-all/DisplayResampleImage.cpp
+++ b/src/VBox/Main/src-all/DisplayResampleImage.cpp
@@ -49,7 +49,7 @@
 #include <iprt/types.h>
 
 /* 2.0.10: cast instead of floor() yields 35% performance improvement.
-	Thanks to John Buckman. */
+        Thanks to John Buckman. */
 
 #define floor2(exp) ((long) exp)
 /*#define floor2(exp) floor(exp)*/
@@ -77,15 +77,15 @@ DECLINLINE(void) gdImageSetPixel (gdImagePtr im, int x, int y, int color, int w)
 #define gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8)
 #define gdTrueColorGetBlue(c) ((c) & 0x0000FF)
 #define gdTrueColorAlpha(r, g, b, a) (((a) << 24) + \
-	((r) << 16) + \
-	((g) << 8) + \
-	(b))
+        ((r) << 16) + \
+        ((g) << 8) + \
+        (b))
 
 void gdImageCopyResampled (uint8_t *dst,
-		      uint8_t *src,
-		      int dstX, int dstY,
-		      int srcX, int srcY,
-		      int dstW, int dstH, int srcW, int srcH)
+                      uint8_t *src,
+                      int dstX, int dstY,
+                      int srcX, int srcY,
+                      int dstW, int dstH, int srcW, int srcH)
 {
   int x, y;
   double sy1, sy2, sx1, sx2;
@@ -93,105 +93,105 @@ void gdImageCopyResampled (uint8_t *dst,
     {
       sy1 = ((double) y - (double) dstY) * (double) srcH / (double) dstH;
       sy2 = ((double) (y + 1) - (double) dstY) * (double) srcH /
-	(double) dstH;
+        (double) dstH;
       for (x = dstX; (x < dstX + dstW); x++)
-	{
-	  double sx, sy;
-	  double spixels = 0;
-	  double red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
-	  sx1 = ((double) x - (double) dstX) * (double) srcW / dstW;
-	  sx2 = ((double) (x + 1) - (double) dstX) * (double) srcW / dstW;
-	  sy = sy1;
-	  do
-	    {
-	      double yportion;
-	      if (floor2 (sy) == floor2 (sy1))
-		{
-		  yportion = 1.0 - (sy - floor2 (sy));
-		  if (yportion > sy2 - sy1)
-		    {
-		      yportion = sy2 - sy1;
-		    }
-		  sy = floor2 (sy);
-		}
-	      else if (sy == floor2 (sy2))
-		{
-		  yportion = sy2 - floor2 (sy2);
-		}
-	      else
-		{
-		  yportion = 1.0;
-		}
-	      sx = sx1;
-	      do
-		{
-		  double xportion;
-		  double pcontribution;
-		  int p;
-		  if (floor2 (sx) == floor2 (sx1))
-		    {
-		      xportion = 1.0 - (sx - floor2 (sx));
-		      if (xportion > sx2 - sx1)
-			{
-			  xportion = sx2 - sx1;
-			}
-		      sx = floor2 (sx);
-		    }
-		  else if (sx == floor2 (sx2))
-		    {
-		      xportion = sx2 - floor2 (sx2);
-		    }
-		  else
-		    {
-		      xportion = 1.0;
-		    }
-		  pcontribution = xportion * yportion;
-		  /* 2.08: previously srcX and srcY were ignored.
-		     Andrew Pattison */
-		  p = gdImageGetTrueColorPixel (src,
-						(int) sx + srcX,
-						(int) sy + srcY, srcW);
-		  red += gdTrueColorGetRed (p) * pcontribution;
-		  green += gdTrueColorGetGreen (p) * pcontribution;
-		  blue += gdTrueColorGetBlue (p) * pcontribution;
-		  alpha += gdTrueColorGetAlpha (p) * pcontribution;
-		  spixels += xportion * yportion;
-		  sx += 1.0;
-		}
-	      while (sx < sx2);
-	      sy += 1.0;
-	    }
-	  while (sy < sy2);
-	  if (spixels != 0.0)
-	    {
-	      red /= spixels;
-	      green /= spixels;
-	      blue /= spixels;
-	      alpha /= spixels;
-	    }
-	  /* Clamping to allow for rounding errors above */
-	  if (red > 255.0)
-	    {
-	      red = 255.0;
-	    }
-	  if (green > 255.0)
-	    {
-	      green = 255.0;
-	    }
-	  if (blue > 255.0)
-	    {
-	      blue = 255.0;
-	    }
-	  if (alpha > gdAlphaMax)
-	    {
-	      alpha = gdAlphaMax;
-	    }
-	  gdImageSetPixel (dst,
-			   x, y,
-			   gdTrueColorAlpha ((int) red,
-					     (int) green,
-					     (int) blue, (int) alpha), dstW);
-	}
+        {
+          double sx, sy;
+          double spixels = 0;
+          double red = 0.0, green = 0.0, blue = 0.0, alpha = 0.0;
+          sx1 = ((double) x - (double) dstX) * (double) srcW / dstW;
+          sx2 = ((double) (x + 1) - (double) dstX) * (double) srcW / dstW;
+          sy = sy1;
+          do
+            {
+              double yportion;
+              if (floor2 (sy) == floor2 (sy1))
+                {
+                  yportion = 1.0 - (sy - (double)floor2 (sy));
+                  if (yportion > sy2 - sy1)
+                    {
+                      yportion = sy2 - sy1;
+                    }
+                  sy = (double)floor2 (sy);
+                }
+              else if (sy == floor2 (sy2))
+                {
+                  yportion = sy2 - (double)floor2 (sy2);
+                }
+              else
+                {
+                  yportion = 1.0;
+                }
+              sx = sx1;
+              do
+                {
+                  double xportion;
+                  double pcontribution;
+                  int p;
+                  if (floor2 (sx) == floor2 (sx1))
+                    {
+                      xportion = 1.0 - (sx - (double)floor2 (sx));
+                      if (xportion > sx2 - sx1)
+                        {
+                          xportion = sx2 - sx1;
+                        }
+                      sx = (double)floor2 (sx);
+                    }
+                  else if (sx == floor2 (sx2))
+                    {
+                      xportion = sx2 - (double)floor2 (sx2);
+                    }
+                  else
+                    {
+                      xportion = 1.0;
+                    }
+                  pcontribution = xportion * yportion;
+                  /* 2.08: previously srcX and srcY were ignored.
+                     Andrew Pattison */
+                  p = gdImageGetTrueColorPixel (src,
+                                                (int) sx + srcX,
+                                                (int) sy + srcY, srcW);
+                  red += gdTrueColorGetRed (p) * pcontribution;
+                  green += gdTrueColorGetGreen (p) * pcontribution;
+                  blue += gdTrueColorGetBlue (p) * pcontribution;
+                  alpha += gdTrueColorGetAlpha (p) * pcontribution;
+                  spixels += xportion * yportion;
+                  sx += 1.0;
+                }
+              while (sx < sx2);
+              sy += 1.0;
+            }
+          while (sy < sy2);
+          if (spixels != 0.0)
+            {
+              red /= spixels;
+              green /= spixels;
+              blue /= spixels;
+              alpha /= spixels;
+            }
+          /* Clamping to allow for rounding errors above */
+          if (red > 255.0)
+            {
+              red = 255.0;
+            }
+          if (green > 255.0)
+            {
+              green = 255.0;
+            }
+          if (blue > 255.0)
+            {
+              blue = 255.0;
+            }
+          if (alpha > gdAlphaMax)
+            {
+              alpha = gdAlphaMax;
+            }
+          gdImageSetPixel (dst,
+                           x, y,
+                           gdTrueColorAlpha ((int) red,
+                                             (int) green,
+                                             (int) blue, (int) alpha), dstW);
+        }
     }
 }
 
diff --git a/src/VBox/Main/src-all/DisplayUtils.cpp b/src/VBox/Main/src-all/DisplayUtils.cpp
index 76e972b..25e6f9a 100644
--- a/src/VBox/Main/src-all/DisplayUtils.cpp
+++ b/src/VBox/Main/src-all/DisplayUtils.cpp
@@ -69,7 +69,7 @@ int readSavedDisplayScreenshot(const Utf8Str &strStateFilePath, uint32_t u32Type
                     {
                         if (cbBlock > 2 * sizeof(uint32_t))
                         {
-                            cbData = cbBlock - 2 * sizeof(uint32_t);
+                            cbData = (uint32_t)(cbBlock - 2 * sizeof(uint32_t));
                             pu8Data = (uint8_t *)RTMemAlloc(cbData);
                             if (pu8Data == NULL)
                             {
diff --git a/src/VBox/Main/src-all/ProgressImpl.cpp b/src/VBox/Main/src-all/ProgressImpl.cpp
index bbdc9aa..25ce8a1 100644
--- a/src/VBox/Main/src-all/ProgressImpl.cpp
+++ b/src/VBox/Main/src-all/ProgressImpl.cpp
@@ -624,7 +624,7 @@ HRESULT Progress::getTimeRemaining(LONG *aTimeRemaining)
         {
             uint64_t ullTimeNow = RTTimeMilliTS();
             uint64_t ullTimeElapsed = ullTimeNow - m_ullTimestamp;
-            uint64_t ullTimeTotal = (uint64_t)(ullTimeElapsed * 100 / dPercentDone);
+            uint64_t ullTimeTotal = (uint64_t)((double)ullTimeElapsed * 100 / dPercentDone);
             uint64_t ullTimeRemaining = ullTimeTotal - ullTimeElapsed;
 
 //          LogFunc(("dPercentDone = %RI32, ullTimeNow = %RI64, ullTimeElapsed = %RI64, ullTimeTotal = %RI64, ullTimeRemaining = %RI64\n",
diff --git a/src/VBox/Main/src-client/ConsoleImpl.cpp b/src/VBox/Main/src-client/ConsoleImpl.cpp
index 371648a..fd43062 100644
--- a/src/VBox/Main/src-client/ConsoleImpl.cpp
+++ b/src/VBox/Main/src-client/ConsoleImpl.cpp
@@ -305,7 +305,6 @@ public:
                 pNREv->COMGETTER(Proto)(&proto);
                 BOOL fRemove;
                 pNREv->COMGETTER(Remove)(&fRemove);
-                bool fUdp = (proto == NATProtocol_UDP);
                 Bstr hostIp, guestIp;
                 LONG hostPort, guestPort;
                 pNREv->COMGETTER(HostIP)(hostIp.asOutParam());
@@ -3908,7 +3907,6 @@ DECLCALLBACK(int) Console::i_detachStorageDevice(Console *pThis,
     LONG lPort;
     DeviceType_T lType;
     PCFGMNODE pLunL0 = NULL;
-    PCFGMNODE pCfg = NULL;
 
     hrc = pMediumAtt->COMGETTER(Device)(&lDev);                             H();
     hrc = pMediumAtt->COMGETTER(Port)(&lPort);                              H();
@@ -4817,6 +4815,7 @@ void Console::i_removeSecretKeysOnSuspend()
 {
     /* Remove keys which are supposed to be removed on a suspend. */
     int rc = m_pKeyStore->deleteAllSecretKeys(true /* fSuspend */, true /* fForce */);
+    AssertRC(rc); NOREF(rc);
 }
 
 /**
@@ -7553,7 +7552,7 @@ HRESULT Console::i_powerDown(IProgress *aProgress /*= NULL*/)
     Assert(mVMDestroying == false);
 
     PUVM     pUVM  = mpUVM;                 Assert(pUVM != NULL);
-    uint32_t cRefs = VMR3RetainUVM(pUVM);   Assert(cRefs != UINT32_MAX);
+    uint32_t cRefs = VMR3RetainUVM(pUVM);   Assert(cRefs != UINT32_MAX);  NOREF(cRefs);
 
     AssertMsg(   mMachineState == MachineState_Running
               || mMachineState == MachineState_Paused
@@ -8130,7 +8129,7 @@ HRESULT Console::i_createSharedFolder(const Utf8Str &strName, const SharedFolder
     memcpy(pFolderName->String.ucs2, bstrHostPath.raw(), cbString);
 
     pFolderName->u16Size   = (uint16_t)cbString;
-    pFolderName->u16Length = (uint16_t)cbString - sizeof(RTUTF16);
+    pFolderName->u16Length = (uint16_t)(cbString - sizeof(RTUTF16));
 
     parms[0].type = VBOX_HGCM_SVC_PARM_PTR;
     parms[0].u.pointer.addr = pFolderName;
@@ -8147,7 +8146,7 @@ HRESULT Console::i_createSharedFolder(const Utf8Str &strName, const SharedFolder
     memcpy(pMapName->String.ucs2, bstrName.raw(), cbString);
 
     pMapName->u16Size   = (uint16_t)cbString;
-    pMapName->u16Length = (uint16_t)cbString - sizeof(RTUTF16);
+    pMapName->u16Length = (uint16_t)(cbString - sizeof(RTUTF16));
 
     parms[1].type = VBOX_HGCM_SVC_PARM_PTR;
     parms[1].u.pointer.addr = pMapName;
@@ -8210,7 +8209,7 @@ HRESULT Console::i_removeSharedFolder(const Utf8Str &strName)
     memcpy(pMapName->String.ucs2, bstrName.raw(), cbString);
 
     pMapName->u16Size   = (uint16_t)cbString;
-    pMapName->u16Length = (uint16_t)cbString - sizeof(RTUTF16);
+    pMapName->u16Length = (uint16_t)(cbString - sizeof(RTUTF16));
 
     parms.type = VBOX_HGCM_SVC_PARM_PTR;
     parms.u.pointer.addr = pMapName;
@@ -9532,7 +9531,7 @@ DECLCALLBACK(int) Console::i_powerUpThread(RTTHREAD Thread, void *pvUser)
 
     /* Set up a build identifier so that it can be seen from core dumps what
      * exact build was used to produce the core. */
-    static char saBuildID[40];
+    static char saBuildID[48];
     RTStrPrintf(saBuildID, sizeof(saBuildID), "%s%s%s%s VirtualBox %s r%u %s%s%s%s",
                 "BU", "IL", "DI", "D", RTBldCfgVersion(), RTBldCfgRevision(), "BU", "IL", "DI", "D");
 
@@ -10281,7 +10280,6 @@ DECLCALLBACK(void) Console::i_drvStatus_UnitChanged(PPDMILEDCONNECTORS pInterfac
 DECLCALLBACK(int) Console::i_drvStatus_MediumEjected(PPDMIMEDIANOTIFY pInterface, unsigned uLUN)
 {
     PDRVMAINSTATUS pThis = RT_FROM_MEMBER(pInterface, DRVMAINSTATUS, IMediaNotify);
-    PPDMDRVINS pDrvIns = pThis->pDrvIns;
     LogFunc(("uLUN=%d\n", uLUN));
     if (pThis->pmapMediumAttachments)
     {
diff --git a/src/VBox/Main/src-client/ConsoleImpl2.cpp b/src/VBox/Main/src-client/ConsoleImpl2.cpp
index 19747c4..e625310 100644
--- a/src/VBox/Main/src-client/ConsoleImpl2.cpp
+++ b/src/VBox/Main/src-client/ConsoleImpl2.cpp
@@ -1701,7 +1701,7 @@ int Console::i_configConstructorInner(PUVM pUVM, PVM pVM, AutoWriteLock *pAlock)
                 hrc = pMachine->GetBootOrder(pos, &bootDevice);                             H();
 
                 char szParamName[] = "BootDeviceX";
-                szParamName[sizeof(szParamName) - 2] = ((char (pos - 1)) + '0');
+                szParamName[sizeof(szParamName) - 2] = (char)(pos - 1 + '0');
 
                 const char *pszBootDevice;
                 switch (bootDevice)
@@ -2534,13 +2534,13 @@ int Console::i_configConstructorInner(PUVM pUVM, PVM pVM, AutoWriteLock *pAlock)
             char *pMac = (char*)&Mac;
             for (uint32_t i = 0; i < 6; ++i)
             {
-                char c1 = *macStr++ - '0';
+                int c1 = *macStr++ - '0';
                 if (c1 > 9)
                     c1 -= 7;
-                char c2 = *macStr++ - '0';
+                int c2 = *macStr++ - '0';
                 if (c2 > 9)
                     c2 -= 7;
-                *pMac++ = ((c1 & 0x0f) << 4) | (c2 & 0x0f);
+                *pMac++ = (char)(((c1 & 0x0f) << 4) | (c2 & 0x0f));
             }
             InsertConfigBytes(pCfg, "MAC", &Mac, sizeof(Mac));
 
@@ -2597,7 +2597,7 @@ int Console::i_configConstructorInner(PUVM pUVM, PVM pVM, AutoWriteLock *pAlock)
                     break;
 
                 PCFGMNODE pNetBtDevCfg;
-                achBootIdx[0] = '0' + uBootIdx++;   /* Boot device order. */
+                achBootIdx[0] = (char)('0' + uBootIdx++);   /* Boot device order. */
                 InsertConfigNode(pNetBootCfg, achBootIdx, &pNetBtDevCfg);
                 InsertConfigInteger(pNetBtDevCfg, "NIC", it->mInstance);
                 InsertConfigInteger(pNetBtDevCfg, "PCIBusNo",      it->mPCIAddress.miBus);
@@ -4243,10 +4243,8 @@ int Console::i_configMedium(PCFGMNODE pLunL0,
     // InsertConfig* throws
     try
     {
-        int rc = VINF_SUCCESS;
         HRESULT hrc;
         Bstr bstr;
-        PCFGMNODE pLunL1 = NULL;
         PCFGMNODE pCfg = NULL;
 
 #define H() \
diff --git a/src/VBox/Main/src-client/ConsoleVRDPServer.cpp b/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
index 5e61f86..5f0766e 100644
--- a/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
+++ b/src/VBox/Main/src-client/ConsoleVRDPServer.cpp
@@ -2145,7 +2145,7 @@ void ConsoleVRDPServer::remote3DRedirect(bool fEnable)
     H3DORLOG(("H3DOR: VRDEImageCbNotify: pvContext %p, pvUser %p, hVideo %p, u32Id %u, pvData %p, cbData %d\n",
               pvContext, pvUser, hVideo, u32Id, pvData, cbData));
 
-    ConsoleVRDPServer *pServer = static_cast<ConsoleVRDPServer*>(pvContext);
+    ConsoleVRDPServer *pServer = static_cast<ConsoleVRDPServer*>(pvContext); NOREF(pServer);
     H3DORInstance *p = (H3DORInstance *)pvUser;
     Assert(p);
     Assert(p->pThis);
@@ -3692,10 +3692,10 @@ void ConsoleVRDPServer::SendResize(void)
 void ConsoleVRDPServer::SendUpdateBitmap(unsigned uScreenId, uint32_t x, uint32_t y, uint32_t w, uint32_t h) const
 {
     VRDEORDERHDR update;
-    update.x = x;
-    update.y = y;
-    update.w = w;
-    update.h = h;
+    update.x = (uint16_t)x;
+    update.y = (uint16_t)y;
+    update.w = (uint16_t)w;
+    update.h = (uint16_t)h;
     if (mpEntryPoints && mhServer)
     {
         mpEntryPoints->VRDEUpdate(mhServer, uScreenId, &update, sizeof(update));
diff --git a/src/VBox/Main/src-client/DisplayImpl.cpp b/src/VBox/Main/src-client/DisplayImpl.cpp
index 6aba114..dfa3ccc 100644
--- a/src/VBox/Main/src-client/DisplayImpl.cpp
+++ b/src/VBox/Main/src-client/DisplayImpl.cpp
@@ -440,7 +440,7 @@ DECLCALLBACK(void) Display::i_displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pv
     SSMR3PutU32(pSSM, 2); /* Write thumbnail and PNG screenshot. */
 
     /* First block. */
-    SSMR3PutU32(pSSM, cbThumbnail + 2 * sizeof(uint32_t));
+    SSMR3PutU32(pSSM, (uint32_t)(cbThumbnail + 2 * sizeof(uint32_t)));
     SSMR3PutU32(pSSM, 0); /* Block type: thumbnail. */
 
     if (cbThumbnail)
@@ -451,7 +451,7 @@ DECLCALLBACK(void) Display::i_displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pv
     }
 
     /* Second block. */
-    SSMR3PutU32(pSSM, cbPNG + 2 * sizeof(uint32_t));
+    SSMR3PutU32(pSSM, (uint32_t)(cbPNG + 2 * sizeof(uint32_t)));
     SSMR3PutU32(pSSM, 1); /* Block type: png. */
 
     if (cbPNG)
@@ -468,8 +468,6 @@ DECLCALLBACK(void) Display::i_displaySSMSaveScreenshot(PSSMHANDLE pSSM, void *pv
 DECLCALLBACK(int)
 Display::i_displaySSMLoadScreenshot(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint32_t uPass)
 {
-    Display *that = static_cast<Display*>(pvUser);
-
     if (uVersion != sSSMDisplayScreenshotVer)
         return VERR_SSM_UNSUPPORTED_DATA_UNIT_VERSION;
     Assert(uPass == SSM_PASS_FINAL); NOREF(uPass);
@@ -548,6 +546,7 @@ Display::i_displaySSMLoad(PSSMHANDLE pSSM, void *pvUser, uint32_t uVersion, uint
 
     uint32_t cMonitors;
     int rc = SSMR3GetU32(pSSM, &cMonitors);
+    AssertRCReturn(rc, rc);
     if (cMonitors != that->mcMonitors)
         return SSMR3SetCfgError(pSSM, RT_SRC_POS, N_("Number of monitors changed (%d->%d)!"), cMonitors, that->mcMonitors);
 
@@ -920,13 +919,16 @@ int Display::i_handleDisplayResize(unsigned uScreenId, uint32_t bpp, void *pvVRA
     /* Guest screen image will be invalid during resize, make sure that it is not updated. */
     if (uScreenId == VBOX_VIDEO_PRIMARY_SCREEN)
     {
-        mpDrv->pUpPort->pfnSetRenderVRAM(mpDrv->pUpPort, false);
+        if (mpDrv)
+        {
+            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;
+            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;
+        }
     }
 
     maFramebuffers[uScreenId].pSourceBitmap.setNull();
@@ -1369,7 +1371,7 @@ int Display::i_handleSetVisibleRegion(uint32_t cRect, PRTRECT pRect)
 
                 pCtl->aParms[0].type = VBOX_HGCM_SVC_PARM_PTR;
                 pCtl->aParms[0].u.pointer.addr = pRectsCopy;
-                pCtl->aParms[0].u.pointer.size = cRect * sizeof(RTRECT);
+                pCtl->aParms[0].u.pointer.size = (uint32_t)(cRect * sizeof(RTRECT));
 
                 rc = i_crCtlSubmit(&pCtl->Hdr, sizeof(*pCtl), i_displayCrCmdFree, pCtl);
                 if (!RT_SUCCESS(rc))
@@ -1914,8 +1916,21 @@ int Display::i_displayTakeScreenshotEMT(Display *pDisplay, ULONG aScreenId, uint
     if (   aScreenId == VBOX_VIDEO_PRIMARY_SCREEN
         && pDisplay->maFramebuffers[aScreenId].fVBVAEnabled == false) /* A non-VBVA mode. */
     {
-        rc = pDisplay->mpDrv->pUpPort->pfnTakeScreenshot(pDisplay->mpDrv->pUpPort, ppbData, pcbData, pcx, pcy);
-        *pfMemFree = false;
+        if (pDisplay->mpDrv)
+        {
+            rc = pDisplay->mpDrv->pUpPort->pfnTakeScreenshot(pDisplay->mpDrv->pUpPort, ppbData, pcbData, pcx, pcy);
+            *pfMemFree = false;
+        }
+        else
+        {
+            /* No image. */
+            *ppbData = NULL;
+            *pcbData = 0;
+            *pcx = 0;
+            *pcy = 0;
+            *pfMemFree = true;
+            rc = VINF_SUCCESS;
+        }
     }
     else if (aScreenId < pDisplay->mcMonitors)
     {
@@ -3086,7 +3101,6 @@ DECLCALLBACK(void) Display::i_displayUpdateCallback(PPDMIDISPLAYCONNECTOR pInter
         if (rc == VWRN_INVALID_STATE)
         {
             /* No VBVA do a display update. */
-            DISPLAYFBINFO *pFBInfo = &pDisplay->maFramebuffers[VBOX_VIDEO_PRIMARY_SCREEN];
             pDrv->pUpPort->pfnUpdateDisplay(pDrv->pUpPort);
         }
 
@@ -3098,8 +3112,6 @@ DECLCALLBACK(void) Display::i_displayUpdateCallback(PPDMIDISPLAYCONNECTOR pInter
          */
         for (uScreenId = 0; uScreenId < pDisplay->mcMonitors; uScreenId++)
         {
-            DISPLAYFBINFO *pFBInfo = &pDisplay->maFramebuffers[uScreenId];
-
             Assert(pDisplay->mParent && pDisplay->mParent->i_consoleVRDPServer());
             pDisplay->mParent->i_consoleVRDPServer()->SendUpdate(uScreenId, NULL, 0);
         }
@@ -3273,7 +3285,6 @@ DECLCALLBACK(void) Display::i_displayProcessDisplayDataCallback(PPDMIDISPLAYCONN
 int Display::i_handleVHWACommandProcess(PVBOXVHWACMD pCommand)
 {
     unsigned id = (unsigned)pCommand->iDisplay;
-    int rc = VINF_SUCCESS;
     if (id >= mcMonitors)
         return VERR_INVALID_PARAMETER;
 
@@ -3569,6 +3580,7 @@ void  Display::i_handleCrVRecScreenshotPerform(uint32_t uScreen,
                                   uBitsPerPixel, uBytesPerLine,
                                   uGuestWidth, uGuestHeight,
                                   pu8BufferAddress, u64TimeStamp);
+    NOREF(rc);
     Assert(rc == VINF_SUCCESS /* || rc == VERR_TRY_AGAIN || rc == VINF_TRY_AGAIN*/);
 # endif
 }
@@ -3831,7 +3843,6 @@ DECLCALLBACK(void) Display::i_displayVBVAUpdateBegin(PPDMIDISPLAYCONNECTOR pInte
 
     PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface);
     Display *pThis = pDrv->pDisplay;
-    DISPLAYFBINFO *pFBInfo = &pThis->maFramebuffers[uScreenId];
 
     if (ASMAtomicReadU32(&pThis->mu32UpdateVBVAFlags) > 0)
     {
@@ -4141,7 +4152,6 @@ DECLCALLBACK(int) Display::i_displayVBVAMousePointerShape(PPDMIDISPLAYCONNECTOR
     LogFlowFunc(("\n"));
 
     PDRVMAINDISPLAY pDrv = PDMIDISPLAYCONNECTOR_2_MAINDISPLAY(pInterface);
-    Display *pThis = pDrv->pDisplay;
 
     uint32_t cbShape = 0;
     if (pvShape)
diff --git a/src/VBox/Main/src-client/DisplayImplLegacy.cpp b/src/VBox/Main/src-client/DisplayImplLegacy.cpp
index 2d68d9e..b1314c3 100644
--- a/src/VBox/Main/src-client/DisplayImplLegacy.cpp
+++ b/src/VBox/Main/src-client/DisplayImplLegacy.cpp
@@ -717,8 +717,6 @@ int Display::i_videoAccelFlush(PPDMIDISPLAYPORT pUpPort)
             phdr->w = (uint16_t)w;
             phdr->h = (uint16_t)h;
 
-            DISPLAYFBINFO *pFBInfo = &maFramebuffers[uScreenId];
-
             /* Handle the command.
              *
              * Guest is responsible for updating the guest video memory.
diff --git a/src/VBox/Main/src-client/DrvAudioVRDE.cpp b/src/VBox/Main/src-client/DrvAudioVRDE.cpp
index f746130..098bc1d 100644
--- a/src/VBox/Main/src-client/DrvAudioVRDE.cpp
+++ b/src/VBox/Main/src-client/DrvAudioVRDE.cpp
@@ -497,10 +497,10 @@ int AudioVRDE::onVRDEInputBegin(void *pvContext, PVRDEAUDIOINBEGIN pVRDEAudioBeg
 
     VRDEAUDIOFORMAT audioFmt = pVRDEAudioBegin->fmt;
 
-    int iSampleHz  = VRDE_AUDIO_FMT_SAMPLE_FREQ(audioFmt);
-    int cChannels  = VRDE_AUDIO_FMT_CHANNELS(audioFmt);
-    int cBits      = VRDE_AUDIO_FMT_BITS_PER_SAMPLE(audioFmt);
-    bool fUnsigned = VRDE_AUDIO_FMT_SIGNED(audioFmt);
+    int iSampleHz  = VRDE_AUDIO_FMT_SAMPLE_FREQ(audioFmt);     NOREF(iSampleHz);
+    int cChannels  = VRDE_AUDIO_FMT_CHANNELS(audioFmt);        NOREF(cChannels);
+    int cBits      = VRDE_AUDIO_FMT_BITS_PER_SAMPLE(audioFmt); NOREF(cBits);
+    bool fUnsigned = VRDE_AUDIO_FMT_SIGNED(audioFmt);          NOREF(fUnsigned);
 
     LogFlowFunc(("cbSample=%RU32, iSampleHz=%d, cChannels=%d, cBits=%d, fUnsigned=%RTbool\n",
                  VRDE_AUDIO_FMT_BYTES_PER_SAMPLE(audioFmt), iSampleHz, cChannels, cBits, fUnsigned));
diff --git a/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp b/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp
index 29147f0..b9bab3a 100644
--- a/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp
+++ b/src/VBox/Main/src-client/GuestDnDTargetImpl.cpp
@@ -90,6 +90,7 @@ public:
     void handler()
     {
         int vrc = GuestDnDTarget::i_sendDataThread(*m_pThread, this);
+        NOREF(vrc);
     }
 
     virtual ~SendDataTask(void)
diff --git a/src/VBox/Main/src-client/GuestSessionImpl.cpp b/src/VBox/Main/src-client/GuestSessionImpl.cpp
index 5aca433..ed74121 100644
--- a/src/VBox/Main/src-client/GuestSessionImpl.cpp
+++ b/src/VBox/Main/src-client/GuestSessionImpl.cpp
@@ -291,8 +291,6 @@ void GuestSession::uninit(void)
 
     LogFlowThisFuncEnter();
 
-    int rc = VINF_SUCCESS;
-
     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
 
     LogFlowThisFunc(("Closing directories (%zu total)\n",
@@ -344,7 +342,7 @@ void GuestSession::uninit(void)
 
     baseUninit();
 
-    LogFlowFuncLeaveRC(rc);
+    LogFlowFuncLeave();
 }
 
 // implementation of public getters/setters for attributes
@@ -1743,7 +1741,6 @@ int GuestSession::i_startSessionAsync(void)
 {
     LogFlowThisFuncEnter();
 
-    HRESULT hr = S_OK;
     int vrc = VINF_SUCCESS;
 
     GuestSessionTaskInternalOpen* pTask = NULL;
@@ -1760,8 +1757,7 @@ int GuestSession::i_startSessionAsync(void)
         /* Asynchronously open the session on the guest by kicking off a
          * worker thread. */
         //this function delete pTask in case of exceptions, so there is no need in the call of delete operator
-        hr = pTask->createThread();
-
+        HRESULT hrc = pTask->createThread();
     }
     catch(std::bad_alloc &)
     {
@@ -2168,9 +2164,9 @@ int GuestSession::i_startTaskAsync(const Utf8Str &strTaskDesc,
         return VERR_COM_UNEXPECTED;
 
     /* Initialize our worker task. */
-    RT_GCC_NO_DEPRECATED_BEGIN
+    RT_GCC_NO_WARN_DEPRECATED_BEGIN
     std::auto_ptr<GuestSessionTask> task(pTask);
-    RT_GCC_NO_DEPRECATED_END
+    RT_GCC_NO_WARN_DEPRECATED_END
     int rc = task->RunAsync(strTaskDesc, pProgress);
     if (RT_FAILURE(rc))
         return rc;
diff --git a/src/VBox/Main/src-client/MachineDebuggerImpl.cpp b/src/VBox/Main/src-client/MachineDebuggerImpl.cpp
index e1bd213..ef0cdd4 100644
--- a/src/VBox/Main/src-client/MachineDebuggerImpl.cpp
+++ b/src/VBox/Main/src-client/MachineDebuggerImpl.cpp
@@ -1312,7 +1312,7 @@ HRESULT MachineDebugger::getRegisters(ULONG aCpuId, std::vector<com::Utf8Str> &a
                             szHex[159] = szHex[0] = '\0';
                             ssize_t cch = DBGFR3RegFormatValue(szHex, sizeof(szHex), &paRegs[iReg].Val,
                                                                paRegs[iReg].enmType, true /*fSpecial*/);
-                            Assert(cch > 0);
+                            Assert(cch > 0); NOREF(cch);
                             aNames[iReg] = Utf8Str(paRegs[iReg].pszName);
                             aValues[iReg] = Utf8Str(szHex);
                         }
diff --git a/src/VBox/Main/src-client/MouseImpl.cpp b/src/VBox/Main/src-client/MouseImpl.cpp
index 299d607..c8ab779 100644
--- a/src/VBox/Main/src-client/MouseImpl.cpp
+++ b/src/VBox/Main/src-client/MouseImpl.cpp
@@ -1008,8 +1008,8 @@ HRESULT Mouse::i_putEventMultiTouch(LONG aCount,
 
                 if (fValid)
                 {
-                    uint8_t fu8 =   (fInContact? 0x01: 0x00)
-                                  | (fInRange?   0x02: 0x00);
+                    uint8_t fu8 = (uint8_t)(  (fInContact? 0x01: 0x00)
+                                            | (fInRange?   0x02: 0x00));
                     pau64Contacts[cContacts] = RT_MAKE_U64_FROM_U16((uint16_t)xAdj,
                                                                     (uint16_t)yAdj,
                                                                     RT_MAKE_U16(contactId, fu8),
diff --git a/src/VBox/Main/src-client/PCIRawDevImpl.cpp b/src/VBox/Main/src-client/PCIRawDevImpl.cpp
index 110e21c..ae2b0c6 100644
--- a/src/VBox/Main/src-client/PCIRawDevImpl.cpp
+++ b/src/VBox/Main/src-client/PCIRawDevImpl.cpp
@@ -78,7 +78,7 @@ DECLCALLBACK(int) PCIRawDev::drvDeviceConstructComplete(PPDMIPCIRAWCONNECTOR pIn
     ComPtr<IVirtualBox> vbox;
 
     HRESULT hrc = machine->COMGETTER(Parent)(vbox.asOutParam());
-    Assert(SUCCEEDED(hrc));
+    Assert(SUCCEEDED(hrc)); NOREF(hrc);
 
     ComPtr<IEventSource> es;
     hrc = vbox->COMGETTER(EventSource)(es.asOutParam());
@@ -97,7 +97,7 @@ DECLCALLBACK(int) PCIRawDev::drvDeviceConstructComplete(PPDMIPCIRAWCONNECTOR pIn
     if (RT_FAILURE(rc))
         msg = BstrFmt("runtime error %Rrc", rc);
 
-    fireHostPCIDevicePlugEvent(es, bstrId.raw(), true /* plugged */, RT_SUCCESS(rc) /* success */, pda, msg.raw());
+    fireHostPCIDevicePlugEvent(es, bstrId.raw(), true /* plugged */, RT_SUCCESS_NP(rc) /* success */, pda, msg.raw());
 
     return VINF_SUCCESS;
 }
diff --git a/src/VBox/Main/src-client/RemoteUSBDeviceImpl.cpp b/src/VBox/Main/src-client/RemoteUSBDeviceImpl.cpp
index 66e945c..c717577 100644
--- a/src/VBox/Main/src-client/RemoteUSBDeviceImpl.cpp
+++ b/src/VBox/Main/src-client/RemoteUSBDeviceImpl.cpp
@@ -78,7 +78,7 @@ HRESULT RemoteUSBDevice::init(uint32_t u32ClientId, VRDEUSBDEVICEDESC *pDevDesc,
     unconst(mData.backend)      = "vrdp";
 
     unconst(mData.port)         = pDevDesc->idPort;
-    unconst(mData.version)      = pDevDesc->bcdUSB >> 8;
+    unconst(mData.version)      = (uint16_t)(pDevDesc->bcdUSB >> 8);
     if (fDescExt)
     {
         VRDEUSBDEVICEDESCEXT *pDevDescExt = (VRDEUSBDEVICEDESCEXT *)pDevDesc;
@@ -116,7 +116,7 @@ HRESULT RemoteUSBDevice::init(uint32_t u32ClientId, VRDEUSBDEVICEDESC *pDevDesc,
     mData.state                  = USBDeviceState_Available;
 
     mData.dirty                  = false;
-    unconst(mData.devId)        = pDevDesc->id;
+    unconst(mData.devId)        = (uint16_t)pDevDesc->id;
 
     unconst(mData.clientId)     = u32ClientId;
 
diff --git a/src/VBox/Main/src-client/UsbCardReader.cpp b/src/VBox/Main/src-client/UsbCardReader.cpp
index a9ff2f6..2bc7b25 100644
--- a/src/VBox/Main/src-client/UsbCardReader.cpp
+++ b/src/VBox/Main/src-client/UsbCardReader.cpp
@@ -431,7 +431,7 @@ static DECLCALLBACK(int) drvCardReaderDownBeginTransaction(PPDMICARDREADERDOWN p
     AssertPtrReturn(pInterface, VERR_INVALID_PARAMETER);
     LogFlowFunc(("ENTER: pvUser:%p\n",
                  pvUser));
-    PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown);
+    PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); NOREF(pThis);
     int rc = VERR_NOT_SUPPORTED;
     AssertRC(rc);
     LogFlowFunc(("LEAVE: %Rrc\n", rc));
@@ -445,7 +445,7 @@ static DECLCALLBACK(int) drvCardReaderDownEndTransaction(PPDMICARDREADERDOWN pIn
     AssertPtrReturn(pInterface, VERR_INVALID_PARAMETER);
     LogFlowFunc(("ENTER: pvUser:%p, u32Disposition:%RX32\n",
                  pvUser, u32Disposition));
-    PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown);
+    PUSBCARDREADER pThis = RT_FROM_MEMBER(pInterface, USBCARDREADER, ICardReaderDown); NOREF(pThis);
     int rc = VERR_NOT_SUPPORTED;
     AssertRC(rc);
     LogFlowFunc(("LEAVE: %Rrc\n", rc));
@@ -744,7 +744,7 @@ int UsbCardReader::VRDENotify(uint32_t u32Id, void *pvData, uint32_t cbData)
 
         case VRDE_SCARD_NOTIFY_DETACH:
         {
-            VRDESCARDNOTIFYDETACH *p = (VRDESCARDNOTIFYDETACH *)pvData;
+            VRDESCARDNOTIFYDETACH *p = (VRDESCARDNOTIFYDETACH *)pvData; NOREF(p);
             Assert(cbData == sizeof(VRDESCARDNOTIFYDETACH));
 
             /* @todo Just free. There should be no pending requests, because VRDP cancels them. */
@@ -830,8 +830,8 @@ int UsbCardReader::VRDEResponse(int rcRequest, void *pvUser, uint32_t u32Functio
         case VRDE_SCARD_FN_RELEASECONTEXT:
         {
             Assert(cbData == sizeof(VRDESCARDRELEASECONTEXTRSP) || RT_FAILURE(rcRequest));
-            VRDESCARDRELEASECONTEXTRSP *pRsp = (VRDESCARDRELEASECONTEXTRSP *)pvData;
-            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
+            VRDESCARDRELEASECONTEXTRSP *pRsp = (VRDESCARDRELEASECONTEXTRSP *)pvData; NOREF(pRsp);
+            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser; NOREF(pCtx);
 
             Assert(pCtx->u32Function == u32Function);
 
@@ -902,8 +902,8 @@ int UsbCardReader::VRDEResponse(int rcRequest, void *pvUser, uint32_t u32Functio
         case VRDE_SCARD_FN_CANCEL:
         {
             Assert(cbData == sizeof(VRDESCARDCANCELRSP) || RT_FAILURE(rcRequest));
-            VRDESCARDCANCELRSP *pRsp = (VRDESCARDCANCELRSP *)pvData;
-            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
+            VRDESCARDCANCELRSP *pRsp = (VRDESCARDCANCELRSP *)pvData; NOREF(pRsp);
+            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser; NOREF(pCtx);
 
             Assert(pCtx->u32Function == u32Function);
 
@@ -952,8 +952,8 @@ int UsbCardReader::VRDEResponse(int rcRequest, void *pvUser, uint32_t u32Functio
         case VRDE_SCARD_FN_RECONNECT:
         {
             Assert(cbData == sizeof(VRDESCARDRECONNECTRSP) || RT_FAILURE(rcRequest));
-            VRDESCARDRECONNECTRSP *pRsp = (VRDESCARDRECONNECTRSP *)pvData;
-            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
+            VRDESCARDRECONNECTRSP *pRsp = (VRDESCARDRECONNECTRSP *)pvData; NOREF(pRsp);
+            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser; NOREF(pCtx);
 
             Assert(pCtx->u32Function == u32Function);
 
@@ -993,8 +993,8 @@ int UsbCardReader::VRDEResponse(int rcRequest, void *pvUser, uint32_t u32Functio
         case VRDE_SCARD_FN_BEGINTRANSACTION:
         {
             Assert(cbData == sizeof(VRDESCARDBEGINTRANSACTIONRSP) || RT_FAILURE(rcRequest));
-            VRDESCARDBEGINTRANSACTIONRSP *pRsp = (VRDESCARDBEGINTRANSACTIONRSP *)pvData;
-            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
+            VRDESCARDBEGINTRANSACTIONRSP *pRsp = (VRDESCARDBEGINTRANSACTIONRSP *)pvData; NOREF(pRsp);
+            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser; NOREF(pCtx);
 
             Assert(pCtx->u32Function == u32Function);
 
@@ -1004,8 +1004,8 @@ int UsbCardReader::VRDEResponse(int rcRequest, void *pvUser, uint32_t u32Functio
         case VRDE_SCARD_FN_ENDTRANSACTION:
         {
             Assert(cbData == sizeof(VRDESCARDENDTRANSACTIONRSP) || RT_FAILURE(rcRequest));
-            VRDESCARDENDTRANSACTIONRSP *pRsp = (VRDESCARDENDTRANSACTIONRSP *)pvData;
-            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
+            VRDESCARDENDTRANSACTIONRSP *pRsp = (VRDESCARDENDTRANSACTIONRSP *)pvData; NOREF(pRsp);
+            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser; NOREF(pCtx);
 
             Assert(pCtx->u32Function == u32Function);
 
@@ -1015,8 +1015,8 @@ int UsbCardReader::VRDEResponse(int rcRequest, void *pvUser, uint32_t u32Functio
         case VRDE_SCARD_FN_STATE:
         {
             Assert(cbData == sizeof(VRDESCARDSTATERSP) || RT_FAILURE(rcRequest));
-            VRDESCARDSTATERSP *pRsp = (VRDESCARDSTATERSP *)pvData;
-            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser;
+            VRDESCARDSTATERSP *pRsp = (VRDESCARDSTATERSP *)pvData; NOREF(pRsp);
+            UCRREQCTX *pCtx = (UCRREQCTX *)pvUser; NOREF(pCtx);
 
             Assert(pCtx->u32Function == u32Function);
 
@@ -1577,7 +1577,7 @@ int UsbCardReader::Transmit(struct USBCARDREADER *pDrv,
 
         req.ioSendPci.u32Protocol = pioSendRequest->u32Protocol;
         req.ioSendPci.u32PciLength = pioSendRequest->cbPciLength < 2 * sizeof(uint32_t)?
-                                         2 * sizeof(uint32_t):
+                                         (uint32_t)(2 * sizeof(uint32_t)):
                                          pioSendRequest->cbPciLength;
         Assert(pioSendRequest->cbPciLength <= VRDE_SCARD_MAX_PCI_DATA + 2 * sizeof(uint32_t));
         memcpy(req.ioSendPci.au8PciData,
diff --git a/src/VBox/Main/src-client/UsbWebcamInterface.cpp b/src/VBox/Main/src-client/UsbWebcamInterface.cpp
index f01fdba..8928260 100644
--- a/src/VBox/Main/src-client/UsbWebcamInterface.cpp
+++ b/src/VBox/Main/src-client/UsbWebcamInterface.cpp
@@ -214,7 +214,7 @@ void EmWebcam::EmWebcamCbNotify(uint32_t u32Id, const void *pvData, uint32_t cbD
 
         case VRDE_VIDEOIN_NOTIFY_ID_DETACH:
         {
-            VRDEVIDEOINNOTIFYDETACH *p = (VRDEVIDEOINNOTIFYDETACH *)pvData;
+            VRDEVIDEOINNOTIFYDETACH *p = (VRDEVIDEOINNOTIFYDETACH *)pvData; NOREF(p);
             Assert(cbData == sizeof(VRDEVIDEOINNOTIFYDETACH));
 
             LogFlowFunc(("DETACH[%d,%d]\n", p->deviceHandle.u32ClientId, p->deviceHandle.u32DeviceId));
@@ -271,7 +271,7 @@ void EmWebcam::EmWebcamCbDeviceDesc(int rcRequest, void *pDeviceCtx, void *pvUse
 void EmWebcam::EmWebcamCbControl(int rcRequest, void *pDeviceCtx, void *pvUser,
                                  const VRDEVIDEOINCTRLHDR *pControl, uint32_t cbControl)
 {
-    EMWEBCAMREMOTE *pRemote = (EMWEBCAMREMOTE *)pDeviceCtx;
+    EMWEBCAMREMOTE *pRemote = (EMWEBCAMREMOTE *)pDeviceCtx; NOREF(pRemote);
     Assert(pRemote == mpRemote);
 
     LogFlowFunc(("rcRequest %Rrc %p %p %p %d\n",
diff --git a/src/VBox/Main/src-client/VMMDevInterface.cpp b/src/VBox/Main/src-client/VMMDevInterface.cpp
index 6c50c4b..f0981c8 100644
--- a/src/VBox/Main/src-client/VMMDevInterface.cpp
+++ b/src/VBox/Main/src-client/VMMDevInterface.cpp
@@ -534,7 +534,6 @@ DECLCALLBACK(int) vmmdevIsPageFusionEnabled(PPDMIVMMDEVCONNECTOR pInterface, boo
 {
     PDRVMAINVMMDEV pDrv = RT_FROM_MEMBER(pInterface, DRVMAINVMMDEV, Connector);
     Console *pConsole = pDrv->pVMMDev->getParent();
-    BOOL           val = 0;
 
     if (!pfPageFusionEnabled)
         return VERR_INVALID_POINTER;
diff --git a/src/VBox/Main/src-client/xpcom/module.cpp b/src/VBox/Main/src-client/xpcom/module.cpp
index d32ac42..1e778a5 100644
--- a/src/VBox/Main/src-client/xpcom/module.cpp
+++ b/src/VBox/Main/src-client/xpcom/module.cpp
@@ -5,7 +5,7 @@
  */
 
 /*
- * Copyright (C) 2006-2015 Oracle Corporation
+ * Copyright (C) 2006-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;
@@ -61,17 +61,20 @@ extern nsIClassInfo *NS_CLASSINFO_NAME(VirtualBoxClientWrap);
  *
  *  Suitable for IN-PROC components.
  */
-class SessionClassFactory : public Session
+class VirtualBoxClientClassFactory : public VirtualBoxClient
 {
 public:
-    virtual ~SessionClassFactory() {
+    virtual ~VirtualBoxClientClassFactory()
+    {
         FinalRelease();
         instance = 0;
     }
-    static nsresult getInstance (Session **inst) {
+    static nsresult GetInstance(VirtualBoxClient **inst)
+    {
         int rv = NS_OK;
-        if (instance == 0) {
-            instance = new SessionClassFactory();
+        if (instance == 0)
+        {
+            instance = new VirtualBoxClientClassFactory();
             if (instance) {
                 instance->AddRef(); // protect FinalConstruct()
                 rv = instance->FinalConstruct();
@@ -88,27 +91,23 @@ public:
         *inst = instance;
         return rv;
     }
-    static nsresult releaseInstance () {
+    static nsresult FactoryDestructor()
+    {
         if (instance)
             instance->Release();
         return NS_OK;
     }
 
 private:
-    static Session *instance;
+    static VirtualBoxClient *instance;
 };
 
-/** @note this is for singleton; disabled for now */
-//
-//Session *SessionClassFactory::instance = 0;
-//
-//NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR_WITH_RC (
-//    Session, SessionClassFactory::getInstance
-//)
+VirtualBoxClient *VirtualBoxClientClassFactory::instance = nsnull;
+
 
 NS_GENERIC_FACTORY_CONSTRUCTOR_WITH_RC(Session)
 
-NS_GENERIC_FACTORY_CONSTRUCTOR_WITH_RC(VirtualBoxClient)
+NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR_WITH_RC(VirtualBoxClient, VirtualBoxClientClassFactory::GetInstance)
 
 /**
  *  Component definition table.
@@ -122,8 +121,6 @@ static const nsModuleComponentInfo components[] =
         SessionConstructor, // constructor function
         NULL, // registration function
         NULL, // deregistration function
-/** @note this is for singleton; disabled for now */
-//        SessionClassFactory::releaseInstance,
         NULL, // destructor function
         NS_CI_INTERFACE_GETTER_NAME(SessionWrap), // interfaces function
         NULL, // language helper
@@ -135,7 +132,7 @@ static const nsModuleComponentInfo components[] =
         VirtualBoxClientConstructor, // constructor function
         NULL, // registration function
         NULL, // deregistration function
-        NULL, // destructor function
+        VirtualBoxClientClassFactory::FactoryDestructor, // destructor function
         NS_CI_INTERFACE_GETTER_NAME(VirtualBoxClientWrap), // interfaces function
         NULL, // language helper
         &NS_CLASSINFO_NAME(VirtualBoxClientWrap) // global class info & flags
diff --git a/src/VBox/Main/src-server/ApplianceImplImport.cpp b/src/VBox/Main/src-server/ApplianceImplImport.cpp
index a17e05e..92e8fb5 100644
--- a/src/VBox/Main/src-server/ApplianceImplImport.cpp
+++ b/src/VBox/Main/src-server/ApplianceImplImport.cpp
@@ -1298,7 +1298,7 @@ HRESULT Appliance::i_readFSOVA(TaskOVF *pTask)
      * the OVA. The manifest is optional.)
      */
     char    *pszOvfNameBase = NULL;
-    size_t   cchOvfNameBase = 0;
+    size_t   cchOvfNameBase = 0; NOREF(cchOvfNameBase);
     unsigned cLeftToFind = 3;
     HRESULT  hrc = S_OK;
     do
@@ -1446,6 +1446,7 @@ HRESULT Appliance::i_readOVFFile(TaskOVF *pTask, RTVFSIOSTREAM hVfsIosOvf, const
     size_t cbBufferedOvf;
     int vrc = RTVfsIoStrmReadAll(hVfsIosOvf, &pvBufferedOvf, &cbBufferedOvf);
     uint32_t cRefs = RTVfsIoStrmRelease(hVfsIosOvf);     /* consumes stream handle.  */
+    NOREF(cRefs);
     Assert(cRefs == 0);
     if (RT_FAILURE(vrc))
         return setErrorVrc(vrc, tr("Could not read the OVF file for '%s' (%Rrc)"), pTask->locInfo.strPath.c_str(), vrc);
@@ -1586,7 +1587,8 @@ HRESULT Appliance::i_readSignatureFile(TaskOVF *pTask, RTVFSIOSTREAM hVfsIosCert
      * this API ignores parse of the file that aren't relevant.
      */
     RTERRINFOSTATIC StaticErrInfo;
-    vrc = RTCrX509Certificate_ReadFromBuffer(&m->SignerCert, pvSignature, cbSignature, 0 /*fFlags*/,
+    vrc = RTCrX509Certificate_ReadFromBuffer(&m->SignerCert, pvSignature, cbSignature,
+                                             RTCRX509CERT_READ_F_PEM_ONLY,
                                              &g_RTAsn1DefaultAllocator, RTErrInfoInitStatic(&StaticErrInfo), pszSubFileNm);
     HRESULT hrc;
     if (RT_SUCCESS(vrc))
@@ -1689,6 +1691,9 @@ HRESULT Appliance::i_readSignatureFile(TaskOVF *pTask, RTVFSIOSTREAM hVfsIosCert
         else
             hrc = E_OUTOFMEMORY;
     }
+    else if (vrc == VERR_NOT_FOUND || vrc == VERR_EOF)
+        hrc = setErrorBoth(E_FAIL, vrc, tr("Malformed .cert-file for '%s': Signer's certificate not found (%Rrc)"),
+                           pTask->locInfo.strPath.c_str(), vrc);
     else
         hrc = setErrorVrc(vrc, tr("Error reading the signer's certificate from '%s' for '%s' (%Rrc): %s"),
                           pszSubFileNm, pTask->locInfo.strPath.c_str(), vrc, StaticErrInfo.Core.pszMsg);
@@ -3533,7 +3538,8 @@ void Appliance::i_importVBoxMachine(ComObjPtr<VirtualSystemDescription> &vsdescT
         if (!(   fKeepAllMACs
               || (fKeepNATMACs && it1->mode == NetworkAttachmentType_NAT)
               || (fKeepNATMACs && it1->mode == NetworkAttachmentType_NATNetwork)))
-            Host::i_generateMACAddress(it1->strMACAddress);
+            /* Force generation of new MAC address below. */
+            it1->strMACAddress.setNull();
     }
     /* Now iterate over all network entries. */
     std::list<VirtualSystemDescriptionEntry*> avsdeNWs = vsdescThis->i_findByType(VirtualSystemDescriptionType_NetworkAdapter);
@@ -3561,6 +3567,8 @@ void Appliance::i_importVBoxMachine(ComObjPtr<VirtualSystemDescription> &vsdescT
                     if (it1->ulSlot == iSlot)
                     {
                         it1->fEnabled = true;
+                        if (it1->strMACAddress.isEmpty())
+                            Host::i_generateMACAddress(it1->strMACAddress);
                         it1->type = (NetworkAdapterType_T)vsdeNW->strVBoxCurrent.toUInt32();
                         break;
                     }
diff --git a/src/VBox/Main/src-server/ClientWatcher.cpp b/src/VBox/Main/src-server/ClientWatcher.cpp
index 58cc6df..644f64b 100644
--- a/src/VBox/Main/src-server/ClientWatcher.cpp
+++ b/src/VBox/Main/src-server/ClientWatcher.cpp
@@ -965,7 +965,7 @@ DECLCALLBACK(int) VirtualBox::ClientWatcher::worker(RTTHREAD hThreadSelf, void *
                 do
                 {
                     uOld = ASMAtomicUoReadU8(&that->mUpdateAdaptCtr);
-                    uNew = uOld ? uOld - 1 : uOld;
+                    uNew = uOld ? (uint8_t)(uOld - 1) : uOld;
                 } while (!ASMAtomicCmpXchgU8(&that->mUpdateAdaptCtr, uNew, uOld));
                 Assert(uOld <= RT_ELEMENTS(s_aUpdateTimeoutSteps) - 1);
                 cMillies = s_aUpdateTimeoutSteps[uOld];
diff --git a/src/VBox/Main/src-server/HostUSBDeviceImpl.cpp b/src/VBox/Main/src-server/HostUSBDeviceImpl.cpp
index e306dc1..573db3c 100644
--- a/src/VBox/Main/src-server/HostUSBDeviceImpl.cpp
+++ b/src/VBox/Main/src-server/HostUSBDeviceImpl.cpp
@@ -215,7 +215,7 @@ HRESULT HostUSBDevice::getVersion(USHORT *aVersion)
 {
     AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
 
-    *aVersion = mUsb->bcdUSB >> 8;
+    *aVersion = (USHORT)(mUsb->bcdUSB >> 8);
 
     return S_OK;
 }
@@ -256,7 +256,7 @@ HRESULT HostUSBDevice::getPortVersion(USHORT *aPortVersion)
      * if speed is unknown, fall back to the old and inaccurate method.
      */
     if (mUsb->enmSpeed == USBDEVICESPEED_UNKNOWN)
-        *aPortVersion = mUsb->bcdUSB >> 8;
+        *aPortVersion = (USHORT)(mUsb->bcdUSB >> 8);
     else
     {
         switch (mUsb->enmSpeed)
@@ -458,7 +458,7 @@ HRESULT HostUSBDevice::i_requestCaptureForVM(SessionMachine *aMachine, bool aSet
     {
         alock.release();
         HRESULT hrc = i_attachToVM(aMachine, aCaptureFilename, aMaskedIfs);
-        return SUCCEEDED(hrc);
+        return hrc;
     }
 
     /*
diff --git a/src/VBox/Main/src-server/MachineImpl.cpp b/src/VBox/Main/src-server/MachineImpl.cpp
index b6dd94f..19ec798 100644
--- a/src/VBox/Main/src-server/MachineImpl.cpp
+++ b/src/VBox/Main/src-server/MachineImpl.cpp
@@ -12588,8 +12588,8 @@ void SessionMachine::uninit(Uninit::Reason aReason)
 
     // we need to lock this object in uninit() because the lock is shared
     // with mPeer (as well as data we modify below). mParent lock is needed
-    // by several calls to it, and USB needs host lock.
-    AutoMultiWriteLock3 multilock(mParent, mParent->i_host(), this COMMA_LOCKVAL_SRC_POS);
+    // by several calls to it.
+    AutoMultiWriteLock2 multilock(mParent, this COMMA_LOCKVAL_SRC_POS);
 
 #ifdef VBOX_WITH_RESOURCE_USAGE_API
     /*
@@ -12644,12 +12644,16 @@ void SessionMachine::uninit(Uninit::Reason aReason)
             mData->mSession.mRemoteControls.begin();
         while (it != mData->mSession.mRemoteControls.end())
         {
+            ComPtr<IInternalSessionControl> pControl = *it;
+            mData->mSession.mRemoteControls.erase(it);
+            multilock.release();
             LogFlowThisFunc(("  Calling remoteControl->Uninitialize()...\n"));
-            HRESULT rc = (*it)->Uninitialize();
+            HRESULT rc = pControl->Uninitialize();
             LogFlowThisFunc(("  remoteControl->Uninitialize() returned %08X\n", rc));
             if (FAILED(rc))
                 Log1WarningThisFunc(("Forgot to close the remote session?\n"));
-            ++it;
+            multilock.acquire();
+            it = mData->mSession.mRemoteControls.begin();
         }
         mData->mSession.mRemoteControls.clear();
     }
diff --git a/src/VBox/Main/src-server/MediumImpl.cpp b/src/VBox/Main/src-server/MediumImpl.cpp
index 7702dc7..5044d47 100644
--- a/src/VBox/Main/src-server/MediumImpl.cpp
+++ b/src/VBox/Main/src-server/MediumImpl.cpp
@@ -8853,8 +8853,9 @@ HRESULT Medium::i_taskMoveHandler(Medium::MoveTask &task)
     /* pTarget is equal "this" in our case */
     const ComObjPtr<Medium> &pTarget = task.mMedium;
 
-    uint64_t size = 0, logicalSize = 0;
-    MediumVariant_T variant = MediumVariant_Standard;
+    uint64_t size = 0; NOREF(size);
+    uint64_t logicalSize = 0; NOREF(logicalSize);
+    MediumVariant_T variant = MediumVariant_Standard; NOREF(variant);
 
     /*
      * it's exactly moving, not cloning
diff --git a/src/VBox/Main/src-server/NetworkAdapterImpl.cpp b/src/VBox/Main/src-server/NetworkAdapterImpl.cpp
index ea7df20..1e86b09 100644
--- a/src/VBox/Main/src-server/NetworkAdapterImpl.cpp
+++ b/src/VBox/Main/src-server/NetworkAdapterImpl.cpp
@@ -25,6 +25,7 @@
 #include "SystemPropertiesImpl.h"
 #include "VirtualBoxImpl.h"
 
+#include <iprt/ctype.h>
 #include <iprt/string.h>
 #include <iprt/cpp/utils.h>
 
@@ -352,16 +353,16 @@ HRESULT NetworkAdapter::i_updateMacAddress(Utf8Str aMACAddress)
                     /* canonicalize hex digits to capital letters */
                     if (c >= 'a' && c <= 'f')
                     {
-                        /** @todo the runtime lacks an ascii lower/upper conv */
-                        c &= 0xdf;
+                        c = (char)RTLocCToUpper(c);
                         *macAddressStr = c;
                     }
                     /* we only accept capital letters */
-                    if (((c < '0') || (c > '9')) &&
-                        ((c < 'A') || (c > 'F')))
+                    if (   (c < '0' || c > '9')
+                        && (c < 'A' || c > 'F'))
                         rc = setError(E_INVALIDARG, tr("Invalid MAC address format"));
                     /* the second digit must have even value for unicast addresses */
-                    if ((i == 1) && (!!(c & 1) == (c >= '0' && c <= '9')))
+                    if (   (i == 1)
+                        && (!!(c & 1) == (c >= '0' && c <= '9')))
                         rc = setError(E_INVALIDARG, tr("Invalid MAC address format"));
 
                     macAddressStr++;
diff --git a/src/VBox/Main/src-server/NetworkServiceRunner.cpp b/src/VBox/Main/src-server/NetworkServiceRunner.cpp
index 8499ede..bea3b50 100644
--- a/src/VBox/Main/src-server/NetworkServiceRunner.cpp
+++ b/src/VBox/Main/src-server/NetworkServiceRunner.cpp
@@ -152,6 +152,7 @@ int NetworkServiceRunner::stop()
     {
         RTProcTerminate(m->mProcess);
         int rc = RTProcWait(m->mProcess, RTPROCWAIT_FLAGS_BLOCK, NULL);
+        NOREF(rc);
     }
 
     m->mProcess = NIL_RTPROCESS;
diff --git a/src/VBox/Main/src-server/VFSExplorerImpl.cpp b/src/VBox/Main/src-server/VFSExplorerImpl.cpp
index cb7a054..2c021b2 100644
--- a/src/VBox/Main/src-server/VFSExplorerImpl.cpp
+++ b/src/VBox/Main/src-server/VFSExplorerImpl.cpp
@@ -172,6 +172,7 @@ private:
     void handler()
     {
         int vrc = taskThread(NULL, this);
+        NOREF(vrc);
     }
 
     static DECLCALLBACK(int) taskThread(RTTHREAD aThread, void *pvUser);
@@ -351,7 +352,7 @@ HRESULT VFSExplorer::i_deleteFS(TaskVFSExplorer *aTask)
 
     HRESULT rc = S_OK;
 
-    float fPercentStep = 100.0f / aTask->filenames.size();
+    float fPercentStep = 100.0f / (float)aTask->filenames.size();
     try
     {
         char szPath[RTPATH_MAX];
@@ -368,7 +369,7 @@ HRESULT VFSExplorer::i_deleteFS(TaskVFSExplorer *aTask)
             if (RT_FAILURE(vrc))
                 throw setError(VBOX_E_FILE_ERROR, tr("Can't delete file '%s' (%Rrc)"), szPath, vrc);
             if (aTask->progress)
-                aTask->progress->SetCurrentOperationProgress((ULONG)(fPercentStep * i));
+                aTask->progress->SetCurrentOperationProgress((ULONG)(fPercentStep * (float)i));
         }
     }
     catch(HRESULT aRC)
diff --git a/src/VBox/Main/src-server/generic/NetIf-generic.cpp b/src/VBox/Main/src-server/generic/NetIf-generic.cpp
index 7a38d39..c007cae 100644
--- a/src/VBox/Main/src-server/generic/NetIf-generic.cpp
+++ b/src/VBox/Main/src-server/generic/NetIf-generic.cpp
@@ -112,7 +112,7 @@ int NetIfAdpCtlOut(const char * pcszName, const char * pcszCmd, char *pszBuffer,
     FILE *fp = popen(szAdpCtl, "r");
     if (fp)
     {
-        if (fgets(pszBuffer, cBufSize, fp))
+        if (fgets(pszBuffer, (int)cBufSize, fp))
         {
             if (!strncmp(VBOXNETADPCTL_NAME ":", pszBuffer, sizeof(VBOXNETADPCTL_NAME)))
             {
diff --git a/src/VBox/Main/src-server/generic/USBProxyBackendUsbIp.cpp b/src/VBox/Main/src-server/generic/USBProxyBackendUsbIp.cpp
index f4e16fb..1e0a36c 100644
--- a/src/VBox/Main/src-server/generic/USBProxyBackendUsbIp.cpp
+++ b/src/VBox/Main/src-server/generic/USBProxyBackendUsbIp.cpp
@@ -531,7 +531,7 @@ int USBProxyBackendUsbIp::wait(RTMSINTERVAL aMillies)
                 AssertMsgFailed(("Invalid poll ID returned\n"));
                 rc = VERR_INVALID_STATE;
             }
-            aMillies -= (RTTimeMilliTS() - msPollStart);
+            aMillies -= (RTMSINTERVAL)(RTTimeMilliTS() - msPollStart);
         }
         else if (rc == VERR_TIMEOUT)
         {
@@ -666,6 +666,7 @@ void USBProxyBackendUsbIp::disconnect()
     if (m->hSocket != NIL_RTSOCKET)
     {
         int rc = RTPollSetRemove(m->hPollSet, USBIP_POLL_ID_SOCKET);
+        NOREF(rc);
         Assert(RT_SUCCESS(rc) || rc == VERR_POLL_HANDLE_ID_NOT_FOUND);
 
         RTTcpClientCloseEx(m->hSocket, false /*fGracefulShutdown*/);
diff --git a/src/VBox/Main/src-server/linux/NetIf-linux.cpp b/src/VBox/Main/src-server/linux/NetIf-linux.cpp
index e77a129..6816c33 100644
--- a/src/VBox/Main/src-server/linux/NetIf-linux.cpp
+++ b/src/VBox/Main/src-server/linux/NetIf-linux.cpp
@@ -144,8 +144,8 @@ static int getInterfaceInfo(int iSocket, const char *pszName, PNETIFINFO pInfo)
         RTUUID uuid;
         RTUuidClear(&uuid);
         memcpy(&uuid, Req.ifr_name, RT_MIN(sizeof(Req.ifr_name), sizeof(uuid)));
-        uuid.Gen.u8ClockSeqHiAndReserved = (uuid.Gen.u8ClockSeqHiAndReserved & 0x3f) | 0x80;
-        uuid.Gen.u16TimeHiAndVersion = (uuid.Gen.u16TimeHiAndVersion & 0x0fff) | 0x4000;
+        uuid.Gen.u8ClockSeqHiAndReserved = (uint8_t)((uuid.Gen.u8ClockSeqHiAndReserved & 0x3f) | 0x80);
+        uuid.Gen.u16TimeHiAndVersion = (uint16_t)((uuid.Gen.u16TimeHiAndVersion & 0x0fff) | 0x4000);
         memcpy(uuid.Gen.au8Node, &Req.ifr_hwaddr.sa_data, sizeof(uuid.Gen.au8Node));
         pInfo->Uuid = uuid;
 
@@ -232,8 +232,8 @@ int NetIfList(std::list <ComObjPtr<HostNetworkInterface> > &list)
                 if (!pszEndOfName)
                     continue;
                 *pszEndOfName = 0;
-                int iFirstNonWS = strspn(buf, " ");
-                char *pszName = buf+iFirstNonWS;
+                size_t iFirstNonWS = strspn(buf, " ");
+                char *pszName = buf + iFirstNonWS;
                 NETIFINFO Info;
                 RT_ZERO(Info);
                 rc = getInterfaceInfo(sock, pszName, &Info);
diff --git a/src/VBox/Main/src-server/linux/PerformanceLinux.cpp b/src/VBox/Main/src-server/linux/PerformanceLinux.cpp
index 84ce888..89de3a8 100644
--- a/src/VBox/Main/src-server/linux/PerformanceLinux.cpp
+++ b/src/VBox/Main/src-server/linux/PerformanceLinux.cpp
@@ -81,7 +81,7 @@ private:
     uint64_t     mUser, mKernel, mIdle;
     uint64_t     mSingleUser, mSingleKernel, mSingleIdle;
     uint32_t     mHZ;
-    ULONG        totalRAM;
+    ULONG        mTotalRAM;
 };
 
 CollectorHAL *createHAL()
@@ -100,15 +100,15 @@ CollectorLinux::CollectorLinux()
         mHZ = 100;
     }
     else
-        mHZ = hz;
+        mHZ = (uint32_t)hz;
     LogFlowThisFunc(("mHZ=%u\n", mHZ));
 
     uint64_t cb;
     int rc = RTSystemQueryTotalRam(&cb);
     if (RT_FAILURE(rc))
-        totalRAM = 0;
+        mTotalRAM = 0;
     else
-        totalRAM = (ULONG)(cb / 1024);
+        mTotalRAM = (ULONG)(cb / 1024);
 }
 
 int CollectorLinux::preCollect(const CollectorHints& hints, uint64_t /* iTick */)
@@ -211,13 +211,13 @@ int CollectorLinux::getRawProcessCpuLoad(RTPROCESS process, uint64_t *user, uint
 
 int CollectorLinux::getHostMemoryUsage(ULONG *total, ULONG *used, ULONG *available)
 {
-    AssertReturn(totalRAM, VERR_INTERNAL_ERROR);
+    AssertReturn(mTotalRAM, VERR_INTERNAL_ERROR);
     uint64_t cb;
     int rc = RTSystemQueryAvailableRam(&cb);
     if (RT_SUCCESS(rc))
     {
-        *total = totalRAM;
-        *available = cb / 1024;
+        *total = mTotalRAM;
+        *available = (ULONG)(cb / 1024);
         *used = *total - *available;
     }
     return rc;
@@ -412,7 +412,7 @@ int CollectorLinux::getRawHostDiskLoad(const char *name, uint64_t *disk_ms, uint
 
 char *CollectorLinux::trimNewline(char *pszName)
 {
-    unsigned cbName = strlen(pszName);
+    size_t cbName = strlen(pszName);
     if (cbName == 0)
         return pszName;
 
@@ -426,7 +426,7 @@ char *CollectorLinux::trimNewline(char *pszName)
 
 char *CollectorLinux::trimTrailingDigits(char *pszName)
 {
-    unsigned cbName = strlen(pszName);
+    size_t cbName = strlen(pszName);
     if (cbName == 0)
         return pszName;
 
@@ -451,7 +451,7 @@ char *CollectorLinux::trimTrailingDigits(char *pszName)
 void CollectorLinux::getDiskName(char *pszDiskName, size_t cbDiskName, const char *pszDevName, bool fTrimDigits)
 {
     unsigned cbName = 0;
-    unsigned cbDevName = strlen(pszDevName);
+    size_t cbDevName = strlen(pszDevName);
     const char *pszEnd = pszDevName + cbDevName - 1;
     if (fTrimDigits)
         while (pszEnd > pszDevName && RT_C_IS_DIGIT(*pszEnd))
diff --git a/src/VBox/Main/src-server/linux/USBGetDevices.cpp b/src/VBox/Main/src-server/linux/USBGetDevices.cpp
index f8e8f4d..9d4eba1 100644
--- a/src/VBox/Main/src-server/linux/USBGetDevices.cpp
+++ b/src/VBox/Main/src-server/linux/USBGetDevices.cpp
@@ -375,7 +375,7 @@ static int usbfsReadBCD(const char *pszValue, unsigned uBase, uint16_t *pu16, ch
         /*
          * Set the value.
          */
-        *pu16 = (uint16_t)u32Int << 8 | (uint16_t)u32Dec;
+        *pu16 = (uint16_t)((u32Int << 8) | (uint16_t)u32Dec);
     }
     return VINF_SUCCESS;
 }
@@ -1178,7 +1178,7 @@ static int usbsysfsGetPortFromStr(const char *pszPath, uint8_t *pu8Port)
     }
 
     /* usbfs compatibility, 0-based port number. */
-    *pu8Port -= 1;
+    *pu8Port = (uint8_t)(*pu8Port - 1);
     return VINF_SUCCESS;
 }
 
@@ -1261,7 +1261,7 @@ static uint8_t usbsysfsReadDevicePropertyU8Def(unsigned uBase, uint8_t bDef, con
  * @param   pszFormat   The format string for the property.
  * @param   ...         Arguments for the format string.
  */
-static uint8_t usbsysfsReadDevicePropertyU16Def(unsigned uBase, uint16_t u16Def, const char *pszFormat, ...)
+static uint16_t usbsysfsReadDevicePropertyU16Def(unsigned uBase, uint16_t u16Def, const char *pszFormat, ...)
 {
     int64_t i64Tmp = 0;
 
@@ -1283,7 +1283,7 @@ static void usbsysfsFillInDevice(USBDEVICE *pDev, USBDeviceInfo *pInfo)
 
     /* Fill in the simple fields */
     pDev->enmState           = USBDEVICESTATE_UNUSED;
-    pDev->bBus               = usbsysfsGetBusFromPath(pszSysfsPath);
+    pDev->bBus               = (uint8_t)usbsysfsGetBusFromPath(pszSysfsPath);
     pDev->bDeviceClass       = usbsysfsReadDevicePropertyU8Def(16, 0, "%s/bDeviceClass", pszSysfsPath);
     pDev->bDeviceSubClass    = usbsysfsReadDevicePropertyU8Def(16, 0, "%s/bDeviceSubClass", pszSysfsPath);
     pDev->bDeviceProtocol    = usbsysfsReadDevicePropertyU8Def(16, 0, "%s/bDeviceProtocol", pszSysfsPath);
diff --git a/src/VBox/Main/src-server/linux/USBProxyBackendLinux.cpp b/src/VBox/Main/src-server/linux/USBProxyBackendLinux.cpp
index 2a03c66..4e22cc7 100644
--- a/src/VBox/Main/src-server/linux/USBProxyBackendLinux.cpp
+++ b/src/VBox/Main/src-server/linux/USBProxyBackendLinux.cpp
@@ -320,9 +320,9 @@ int USBProxyBackendLinux::waitUsbfs(RTMSINTERVAL aMillies)
     }
 
     RT_ZERO(PollFds);
-    PollFds[0].fd        = RTFileToNative(mhFile);
+    PollFds[0].fd        = (int)RTFileToNative(mhFile);
     PollFds[0].events    = POLLIN;
-    PollFds[1].fd        = RTPipeToNative(mhWakeupPipeR);
+    PollFds[1].fd        = (int)RTPipeToNative(mhWakeupPipeR);
     PollFds[1].events    = POLLIN | POLLERR | POLLHUP;
 
     int rc = poll(&PollFds[0], 2, aMillies);
diff --git a/src/VBox/Main/src-server/win/svcmain.cpp b/src/VBox/Main/src-server/win/svcmain.cpp
index a325d5c..421623f 100644
--- a/src/VBox/Main/src-server/win/svcmain.cpp
+++ b/src/VBox/Main/src-server/win/svcmain.cpp
@@ -333,6 +333,12 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPSTR /*lpC
             return RTMsgErrorExit(RTEXITCODE_FAILURE, "failed to open release log (%s, %Rrc)", szError, vrc);
     }
 
+    /* Set up a build identifier so that it can be seen from core dumps what
+     * exact build was used to produce the core. Same as in Console::i_powerUpThread(). */
+    static char saBuildID[48];
+    RTStrPrintf(saBuildID, sizeof(saBuildID), "%s%s%s%s VirtualBox %s r%u %s%s%s%s",
+                "BU", "IL", "DI", "D", RTBldCfgVersion(), RTBldCfgRevision(), "BU", "IL", "DI", "D");
+
     int nRet = 0;
     HRESULT hRes = com::Initialize(false /*fGui*/, fRun /*fAutoRegUpdate*/);
 
diff --git a/src/VBox/Main/src-server/xpcom/server.cpp b/src/VBox/Main/src-server/xpcom/server.cpp
index b5ea5ec..4a492c1 100644
--- a/src/VBox/Main/src-server/xpcom/server.cpp
+++ b/src/VBox/Main/src-server/xpcom/server.cpp
@@ -742,6 +742,12 @@ int main(int argc, char **argv)
     if (RT_FAILURE(vrc))
         return RTMsgErrorExit(RTEXITCODE_FAILURE, "failed to open release log (%s, %Rrc)", szError, vrc);
 
+    /* Set up a build identifier so that it can be seen from core dumps what
+     * exact build was used to produce the core. Same as in Console::i_powerUpThread(). */
+    static char saBuildID[48];
+    RTStrPrintf(saBuildID, sizeof(saBuildID), "%s%s%s%s VirtualBox %s r%u %s%s%s%s",
+                "BU", "IL", "DI", "D", RTBldCfgVersion(), RTBldCfgRevision(), "BU", "IL", "DI", "D");
+
     daemon_pipe_wr = PR_GetInheritedFD(VBOXSVC_STARTUP_PIPE_NAME);
     RTEnvUnset("NSPR_INHERIT_FDS");
 
@@ -831,12 +837,12 @@ int main(int argc, char **argv)
 
         {
             char szBuf[80];
-            int  iSize;
+            size_t cSize;
 
-            iSize = RTStrPrintf(szBuf, sizeof(szBuf),
+            cSize = RTStrPrintf(szBuf, sizeof(szBuf),
                                 VBOX_PRODUCT" XPCOM Server Version "
                                 VBOX_VERSION_STRING);
-            for (int i = iSize; i > 0; i--)
+            for (size_t i = cSize; i > 0; i--)
                 putchar('*');
             RTPrintf("\n%s\n", szBuf);
             RTPrintf("(C) 2004-" VBOX_C_YEAR " " VBOX_VENDOR "\n"
diff --git a/src/VBox/Main/xml/Settings.cpp b/src/VBox/Main/xml/Settings.cpp
index a841c48..f0bc75b 100644
--- a/src/VBox/Main/xml/Settings.cpp
+++ b/src/VBox/Main/xml/Settings.cpp
@@ -906,10 +906,10 @@ void ConfigFileBase::readNATForwardRulesMap(const xml::ElementNode &elmParent, N
         (*pf)->getAttributeValue("proto", (uint32_t&)rule.proto);
         (*pf)->getAttributeValue("hostip", rule.strHostIP);
         (*pf)->getAttributeValue("hostport", port);
-        rule.u16HostPort = port;
+        rule.u16HostPort = (uint16_t)port;
         (*pf)->getAttributeValue("guestip", rule.strGuestIP);
         (*pf)->getAttributeValue("guestport", port);
-        rule.u16GuestPort = port;
+        rule.u16GuestPort = (uint16_t)port;
         mapRules.insert(std::make_pair(rule.strName, rule));
     }
 }
@@ -2105,7 +2105,7 @@ void MainConfigFile::write(const com::Utf8Str strFilename)
  * Constructor. Needs to set sane defaults which stand the test of time.
  */
 VRDESettings::VRDESettings() :
-    fEnabled(false),
+    fEnabled(true), // default for old VMs, for new ones it's false
     authType(AuthType_Null),
     ulAuthTimeout(5000),
     fAllowMultiConnection(false),
@@ -2116,9 +2116,9 @@ VRDESettings::VRDESettings() :
 /**
  * Check if all settings have default values.
  */
-bool VRDESettings::areDefaultSettings() const
+bool VRDESettings::areDefaultSettings(SettingsVersion_T sv) const
 {
-    return !fEnabled
+    return (sv < SettingsVersion_v1_16 ? fEnabled : !fEnabled)
         && authType == AuthType_Null
         && (ulAuthTimeout == 5000 || ulAuthTimeout == 0)
         && strAuthLibrary.isEmpty()
@@ -2476,7 +2476,7 @@ bool ParallelPort::operator==(const ParallelPort &s) const
  * Constructor. Needs to set sane defaults which stand the test of time.
  */
 AudioAdapter::AudioAdapter() :
-    fEnabled(false),
+    fEnabled(true), // default for old VMs, for new ones it's false
     controllerType(AudioControllerType_AC97),
     codecType(AudioCodecType_STAC9700),
     driverType(AudioDriverType_Null)
@@ -2488,10 +2488,9 @@ AudioAdapter::AudioAdapter() :
  */
 bool AudioAdapter::areDefaultSettings(SettingsVersion_T sv) const
 {
-    return (sv <= SettingsVersion_v1_14 ? fEnabled : !fEnabled)
+    return (sv < SettingsVersion_v1_16 ? false : !fEnabled)
         && controllerType == AudioControllerType_AC97
         && codecType == AudioCodecType_STAC9700
-        && driverType == MachineConfigFile::getHostDefaultAudioDriver()
         && properties.size() == 0;
 }
 
@@ -3086,7 +3085,7 @@ MachineUserData::MachineUserData() :
     uFaultTolerancePort(0),
     uFaultToleranceInterval(0),
     fRTCUseUTC(false),
-    strVMPriority("")
+    strVMPriority()
 {
     llGroups.push_back("/");
 }
@@ -3587,11 +3586,6 @@ void MachineConfigFile::readAudioAdapter(const xml::ElementNode &elmAudioAdapter
         }
     }
 
-    if (m->sv <= SettingsVersion_v1_14)
-    {
-        // Special default handling: tag presence hints it should be enabled
-        aa.fEnabled = true;
-    }
     elmAudioAdapter.getAttributeValue("enabled", aa.fEnabled);
 
     Utf8Str strTemp;
@@ -3726,6 +3720,10 @@ void MachineConfigFile::readHardware(const xml::ElementNode &elmHardware,
         /* Starting with VirtualBox 5.1 the default is Default, before it was
          * Legacy. This needs to matched by areParavirtDefaultSettings(). */
         hw.paravirtProvider = ParavirtProvider_Default;
+        /* The new default is disabled, before it was enabled by default. */
+        hw.vrdeSettings.fEnabled = false;
+        /* The new default is disabled, before it was enabled by default. */
+        hw.audioAdapter.fEnabled = false;
     }
 
     if (!elmHardware.getAttributeValue("version", hw.strVersion))
@@ -5406,10 +5404,10 @@ void MachineConfigFile::buildHardwareXML(xml::ElementNode &elmParent,
             pelmVideoCapture->setAttribute("maxSize",   hw.ulVideoCaptureMaxSize);
     }
 
-    if (!hw.vrdeSettings.areDefaultSettings())
+    if (!hw.vrdeSettings.areDefaultSettings(m->sv))
     {
         xml::ElementNode *pelmVRDE = pelmHardware->createChild("RemoteDisplay");
-        if (hw.vrdeSettings.fEnabled)
+        if (m->sv < SettingsVersion_v1_16 ? !hw.vrdeSettings.fEnabled : hw.vrdeSettings.fEnabled)
             pelmVRDE->setAttribute("enabled", hw.vrdeSettings.fEnabled);
         if (m->sv < SettingsVersion_v1_11)
         {
@@ -5864,31 +5862,33 @@ void MachineConfigFile::buildHardwareXML(xml::ElementNode &elmParent,
         }
     }
 
-    if (!hw.audioAdapter.areDefaultSettings(m->sv))
+    /* Always write the AudioAdapter config, intentionally not checking if
+     * the settings are at the default, because that would be problematic
+     * for the configured host driver type, which would automatically change
+     * if the default host driver is detected differently. */
     {
         xml::ElementNode *pelmAudio = pelmHardware->createChild("AudioAdapter");
-        if (hw.audioAdapter.controllerType != AudioControllerType_AC97)
+
+        const char *pcszController;
+        switch (hw.audioAdapter.controllerType)
         {
-            const char *pcszController;
-            switch (hw.audioAdapter.controllerType)
-            {
-                case AudioControllerType_SB16:
-                    pcszController = "SB16";
-                    break;
-                case AudioControllerType_HDA:
-                    if (m->sv >= SettingsVersion_v1_11)
-                    {
-                        pcszController = "HDA";
-                        break;
-                    }
-                    /* fall through */
-                case AudioControllerType_AC97:
-                default:
-                    pcszController = "AC97";
+            case AudioControllerType_SB16:
+                pcszController = "SB16";
+                break;
+            case AudioControllerType_HDA:
+                if (m->sv >= SettingsVersion_v1_11)
+                {
+                    pcszController = "HDA";
                     break;
-            }
-            pelmAudio->setAttribute("controller", pcszController);
+                }
+                /* fall through */
+            case AudioControllerType_AC97:
+            default:
+                pcszController = NULL;
+                break;
         }
+        if (pcszController)
+            pelmAudio->setAttribute("controller", pcszController);
 
         const char *pcszCodec;
         switch (hw.audioAdapter.codecType)
@@ -5930,9 +5930,11 @@ void MachineConfigFile::buildHardwareXML(xml::ElementNode &elmParent,
             case AudioDriverType_MMPM: pcszDriver = "MMPM"; break;
             default: /*case AudioDriverType_Null:*/ pcszDriver = "Null"; break;
         }
+        /* Deliberately have the audio driver explicitly in the config file,
+         * otherwise an unwritten default driver triggers auto-detection. */
         pelmAudio->setAttribute("driver", pcszDriver);
 
-        if (hw.audioAdapter.fEnabled || m->sv <= SettingsVersion_v1_14)
+        if (hw.audioAdapter.fEnabled || m->sv < SettingsVersion_v1_16)
             pelmAudio->setAttribute("enabled", hw.audioAdapter.fEnabled);
 
         if (m->sv >= SettingsVersion_v1_15 && hw.audioAdapter.properties.size() > 0)
diff --git a/src/VBox/Runtime/common/crypto/pemfile.cpp b/src/VBox/Runtime/common/crypto/pemfile.cpp
index efb3f44..d1e63e0 100644
--- a/src/VBox/Runtime/common/crypto/pemfile.cpp
+++ b/src/VBox/Runtime/common/crypto/pemfile.cpp
@@ -262,9 +262,13 @@ static int rtCrPemDecodeBase64(uint8_t const *pbContent, size_t cbContent, void
  * @returns true if likely to be binary, false if not binary.
  * @param   pbFile              The file bytes to scan.
  * @param   cbFile              The number of bytes.
+ * @param   fFlags              RTCRPEMREADFILE_F_XXX
  */
-static bool rtCrPemIsBinaryBlob(uint8_t const *pbFile, size_t cbFile)
+static bool rtCrPemIsBinaryBlob(uint8_t const *pbFile, size_t cbFile, uint32_t fFlags)
 {
+    if (fFlags & RTCRPEMREADFILE_F_ONLY_PEM)
+        return false;
+
     /*
      * Well formed PEM files should probably only contain 7-bit ASCII and
      * restrict thenselfs to the following control characters:
@@ -337,6 +341,7 @@ RTDECL(int) RTCrPemParseContent(void const *pvContent, size_t cbContent, uint32_
     AssertReturn(cbContent, VINF_EOF);
     AssertPtr(pvContent);
     AssertPtr(paMarkers);
+    AssertReturn(!(fFlags & ~RTCRPEMREADFILE_F_VALID_MASK), VERR_INVALID_FLAGS);
 
     /*
      * Pre-allocate a section.
@@ -351,7 +356,7 @@ RTDECL(int) RTCrPemParseContent(void const *pvContent, size_t cbContent, uint32_
         uint8_t const  *pbContent = (uint8_t const *)pvContent;
         size_t          offBegin, offEnd, offResume;
         PCRTCRPEMMARKER pMatch;
-        if (   !rtCrPemIsBinaryBlob(pbContent, cbContent)
+        if (   !rtCrPemIsBinaryBlob(pbContent, cbContent, fFlags)
             && rtCrPemFindMarkerSection(pbContent, cbContent, 0 /*offStart*/, paMarkers, cMarkers,
                                         &pMatch, &offBegin, &offEnd, &offResume) )
         {
@@ -406,7 +411,7 @@ RTDECL(int) RTCrPemParseContent(void const *pvContent, size_t cbContent, uint32_
 
             RTCrPemFreeSections(*ppSectionHead);
         }
-        else
+        else if (!(fFlags & RTCRPEMREADFILE_F_ONLY_PEM))
         {
             /*
              * No PEM section found.  Return the whole file as one binary section.
@@ -426,6 +431,8 @@ RTDECL(int) RTCrPemParseContent(void const *pvContent, size_t cbContent, uint32_
             rc = VERR_NO_MEMORY;
             RTMemFree(pSection);
         }
+        else
+            rc = VWRN_NOT_FOUND;
     }
     else
         rc = VERR_NO_MEMORY;
@@ -438,7 +445,7 @@ RTDECL(int) RTCrPemReadFile(const char *pszFilename, uint32_t fFlags, PCRTCRPEMM
                             PCRTCRPEMSECTION *ppSectionHead, PRTERRINFO pErrInfo)
 {
     *ppSectionHead = NULL;
-    AssertReturn(!(fFlags & ~RTCRPEMREADFILE_F_CONTINUE_ON_ENCODING_ERROR), VERR_INVALID_FLAGS);
+    AssertReturn(!(fFlags & ~RTCRPEMREADFILE_F_VALID_MASK), VERR_INVALID_FLAGS);
 
     size_t      cbContent;
     void        *pvContent;
diff --git a/src/VBox/Runtime/common/crypto/x509-file.cpp b/src/VBox/Runtime/common/crypto/x509-file.cpp
index 729279a..190d7cb 100644
--- a/src/VBox/Runtime/common/crypto/x509-file.cpp
+++ b/src/VBox/Runtime/common/crypto/x509-file.cpp
@@ -53,32 +53,40 @@ RT_DECL_DATA_CONST(uint32_t const) g_cRTCrX509CertificateMarkers = RT_ELEMENTS(g
 RTDECL(int) RTCrX509Certificate_ReadFromFile(PRTCRX509CERTIFICATE pCertificate, const char *pszFilename, uint32_t fFlags,
                                              PCRTASN1ALLOCATORVTABLE pAllocator, PRTERRINFO pErrInfo)
 {
-    AssertReturn(!fFlags, VERR_INVALID_FLAGS);
+    AssertReturn(!(fFlags & ~RTCRX509CERT_READ_F_PEM_ONLY), VERR_INVALID_FLAGS);
     PCRTCRPEMSECTION pSectionHead;
-    int rc = RTCrPemReadFile(pszFilename, 0, g_aRTCrX509CertificateMarkers, g_cRTCrX509CertificateMarkers,
+    int rc = RTCrPemReadFile(pszFilename,
+                             fFlags & RTCRX509CERT_READ_F_PEM_ONLY ? RTCRPEMREADFILE_F_ONLY_PEM : 0,
+                             g_aRTCrX509CertificateMarkers, g_cRTCrX509CertificateMarkers,
                              &pSectionHead, pErrInfo);
     if (RT_SUCCESS(rc))
     {
-        RTCRX509CERTIFICATE TmpCert;
-        RTASN1CURSORPRIMARY PrimaryCursor;
-        RTAsn1CursorInitPrimary(&PrimaryCursor, pSectionHead->pbData, (uint32_t)RT_MIN(pSectionHead->cbData, UINT32_MAX),
-                                pErrInfo, pAllocator, RTASN1CURSOR_FLAGS_DER, RTPathFilename(pszFilename));
-        rc = RTCrX509Certificate_DecodeAsn1(&PrimaryCursor.Cursor, 0, &TmpCert, "Cert");
-        if (RT_SUCCESS(rc))
+        if (pSectionHead)
         {
-            rc = RTCrX509Certificate_CheckSanity(&TmpCert, 0, pErrInfo, "Cert");
+            RTCRX509CERTIFICATE TmpCert;
+            RTASN1CURSORPRIMARY PrimaryCursor;
+            RTAsn1CursorInitPrimary(&PrimaryCursor, pSectionHead->pbData, (uint32_t)RT_MIN(pSectionHead->cbData, UINT32_MAX),
+                                    pErrInfo, pAllocator, RTASN1CURSOR_FLAGS_DER, RTPathFilename(pszFilename));
+            rc = RTCrX509Certificate_DecodeAsn1(&PrimaryCursor.Cursor, 0, &TmpCert, "Cert");
             if (RT_SUCCESS(rc))
             {
-                rc = RTCrX509Certificate_Clone(pCertificate, &TmpCert, pAllocator);
+                rc = RTCrX509Certificate_CheckSanity(&TmpCert, 0, pErrInfo, "Cert");
                 if (RT_SUCCESS(rc))
                 {
-                    if (pSectionHead->pNext || PrimaryCursor.Cursor.cbLeft)
-                        rc = VINF_ASN1_MORE_DATA;
+                    rc = RTCrX509Certificate_Clone(pCertificate, &TmpCert, pAllocator);
+                    if (RT_SUCCESS(rc))
+                    {
+                        if (pSectionHead->pNext || PrimaryCursor.Cursor.cbLeft)
+                            rc = VINF_ASN1_MORE_DATA;
+                    }
                 }
+                RTCrX509Certificate_Delete(&TmpCert);
             }
-            RTCrX509Certificate_Delete(&TmpCert);
+            RTCrPemFreeSections(pSectionHead);
         }
-        RTCrPemFreeSections(pSectionHead);
+        else
+            rc = rc != VINF_SUCCESS ? -rc : VERR_INTERNAL_ERROR_2;
+
     }
     return rc;
 }
@@ -88,32 +96,39 @@ RTDECL(int) RTCrX509Certificate_ReadFromBuffer(PRTCRX509CERTIFICATE pCertificate
                                                uint32_t fFlags, PCRTASN1ALLOCATORVTABLE pAllocator,
                                                PRTERRINFO pErrInfo, const char *pszErrorTag)
 {
-    AssertReturn(!fFlags, VERR_INVALID_FLAGS);
+    AssertReturn(!(fFlags & ~RTCRX509CERT_READ_F_PEM_ONLY), VERR_INVALID_FLAGS);
     PCRTCRPEMSECTION pSectionHead;
-    int rc = RTCrPemParseContent(pvBuf, cbBuf, 0, g_aRTCrX509CertificateMarkers, g_cRTCrX509CertificateMarkers,
+    int rc = RTCrPemParseContent(pvBuf, cbBuf,
+                                 fFlags & RTCRX509CERT_READ_F_PEM_ONLY ? RTCRPEMREADFILE_F_ONLY_PEM : 0,
+                                 g_aRTCrX509CertificateMarkers, g_cRTCrX509CertificateMarkers,
                                  &pSectionHead, pErrInfo);
     if (RT_SUCCESS(rc))
     {
-        RTCRX509CERTIFICATE TmpCert;
-        RTASN1CURSORPRIMARY PrimaryCursor;
-        RTAsn1CursorInitPrimary(&PrimaryCursor, pSectionHead->pbData, (uint32_t)RT_MIN(pSectionHead->cbData, UINT32_MAX),
-                                pErrInfo, pAllocator, RTASN1CURSOR_FLAGS_DER, pszErrorTag);
-        rc = RTCrX509Certificate_DecodeAsn1(&PrimaryCursor.Cursor, 0, &TmpCert, "Cert");
-        if (RT_SUCCESS(rc))
+        if (pSectionHead)
         {
-            rc = RTCrX509Certificate_CheckSanity(&TmpCert, 0, pErrInfo, "Cert");
+            RTCRX509CERTIFICATE TmpCert;
+            RTASN1CURSORPRIMARY PrimaryCursor;
+            RTAsn1CursorInitPrimary(&PrimaryCursor, pSectionHead->pbData, (uint32_t)RT_MIN(pSectionHead->cbData, UINT32_MAX),
+                                    pErrInfo, pAllocator, RTASN1CURSOR_FLAGS_DER, pszErrorTag);
+            rc = RTCrX509Certificate_DecodeAsn1(&PrimaryCursor.Cursor, 0, &TmpCert, "Cert");
             if (RT_SUCCESS(rc))
             {
-                rc = RTCrX509Certificate_Clone(pCertificate, &TmpCert, pAllocator);
+                rc = RTCrX509Certificate_CheckSanity(&TmpCert, 0, pErrInfo, "Cert");
                 if (RT_SUCCESS(rc))
                 {
-                    if (pSectionHead->pNext || PrimaryCursor.Cursor.cbLeft)
-                        rc = VINF_ASN1_MORE_DATA;
+                    rc = RTCrX509Certificate_Clone(pCertificate, &TmpCert, pAllocator);
+                    if (RT_SUCCESS(rc))
+                    {
+                        if (pSectionHead->pNext || PrimaryCursor.Cursor.cbLeft)
+                            rc = VINF_ASN1_MORE_DATA;
+                    }
                 }
+                RTCrX509Certificate_Delete(&TmpCert);
             }
-            RTCrX509Certificate_Delete(&TmpCert);
+            RTCrPemFreeSections(pSectionHead);
         }
-        RTCrPemFreeSections(pSectionHead);
+        else
+            rc = rc != VINF_SUCCESS ? -rc : VERR_INTERNAL_ERROR_2;
     }
     return rc;
 }
@@ -124,9 +139,11 @@ RTDECL(int) RTCrX509Certificate_ReadFromBuffer(PRTCRX509CERTIFICATE pCertificate
 RTDECL(int) RTCrX509Certificates_ReadFromFile(const char *pszFilename, uint32_t fFlags,
                                               PRTCRX509CERTIFICATES pCertificates, PRTERRINFO pErrInfo)
 {
-    AssertReturn(!fFlags, VERR_INVALID_FLAGS);
+    AssertReturn(!(fFlags & ~RTCRX509CERT_READ_F_PEM_ONLY), VERR_INVALID_FLAGS);
     PCRTCRPEMSECTION pSectionHead;
-    int rc = RTCrPemReadFile(pszFilename, 0, g_aRTCrX509CertificateMarkers, g_cRTCrX509CertificateMarkers,
+    int rc = RTCrPemReadFile(pszFilename,
+                             fFlags & RTCRX509CERT_READ_F_PEM_ONLY ? RTCRPEMREADFILE_F_ONLY_PEM : 0,
+                             g_aRTCrX509CertificateMarkers, g_cRTCrX509CertificateMarkers,
                              &pSectionHead, pErrInfo);
     if (RT_SUCCESS(rc))
     {
diff --git a/src/VBox/Runtime/common/dbg/dbgmod.cpp b/src/VBox/Runtime/common/dbg/dbgmod.cpp
index 2705ee5..63c18a6 100644
--- a/src/VBox/Runtime/common/dbg/dbgmod.cpp
+++ b/src/VBox/Runtime/common/dbg/dbgmod.cpp
@@ -1756,7 +1756,7 @@ RTDECL(int) RTDbgModSymbolAdd(RTDBGMOD hDbgMod, const char *pszSymbol, RTDBGSEGI
      */
     PRTDBGMODINT pDbgMod = hDbgMod;
     RTDBGMOD_VALID_RETURN_RC(pDbgMod, VERR_INVALID_HANDLE);
-    AssertPtr(pszSymbol);
+    AssertPtrReturn(pszSymbol, VERR_INVALID_POINTER);
     size_t cchSymbol = strlen(pszSymbol);
     AssertReturn(cchSymbol, VERR_DBG_SYMBOL_NAME_OUT_OF_RANGE);
     AssertReturn(cchSymbol < RTDBG_SYMBOL_NAME_LENGTH, VERR_DBG_SYMBOL_NAME_OUT_OF_RANGE);
diff --git a/src/VBox/Runtime/common/dbg/dbgmodexports.cpp b/src/VBox/Runtime/common/dbg/dbgmodexports.cpp
index b86c0c1..cacd0bf 100644
--- a/src/VBox/Runtime/common/dbg/dbgmodexports.cpp
+++ b/src/VBox/Runtime/common/dbg/dbgmodexports.cpp
@@ -65,6 +65,13 @@ static DECLCALLBACK(int) rtDbgModExportsAddSymbolCallback(RTLDRMOD hLdrMod, cons
 
     if (Value >= pArgs->uImageBase)
     {
+        char szOrdinalNm[48];
+        if (!pszSymbol)
+        {
+            RTStrPrintf(szOrdinalNm, sizeof(szOrdinalNm), "Ordinal%u", uSymbol);
+            pszSymbol = szOrdinalNm;
+        }
+
         int rc = RTDbgModSymbolAdd(pArgs->pDbgMod, pszSymbol, RTDBGSEGIDX_RVA, Value - pArgs->uImageBase,
                                    0 /*cb*/, 0 /* fFlags */, NULL /*piOrdinal*/);
         Log(("Symbol #%05u %#018RTptr %s [%Rrc]\n", uSymbol, Value, pszSymbol, rc)); NOREF(rc);
diff --git a/src/VBox/Storage/VD.cpp b/src/VBox/Storage/VD.cpp
index 0c45ce4..f00e4a0 100644
--- a/src/VBox/Storage/VD.cpp
+++ b/src/VBox/Storage/VD.cpp
@@ -4665,7 +4665,7 @@ static DECLCALLBACK(int) vdIOIntSetAllocationSize(void *pvUser, PVDIOSTORAGE pIo
                     while (   uOff < cbFill
                            && RT_SUCCESS(rc))
                     {
-                        size_t cbChunk = (size_t)RT_MIN(cbFill, cbBuf);
+                        size_t cbChunk = (size_t)RT_MIN(cbFill - uOff, cbBuf);
 
                         rc = pVDIo->pInterfaceIo->pfnWriteSync(pVDIo->pInterfaceIo->Core.pvUser,
                                                                pIoStorage->pStorage, cbSizeCur + uOff, 
diff --git a/src/VBox/VMM/Makefile.kmk b/src/VBox/VMM/Makefile.kmk
index 2bab077..312abc2 100644
--- a/src/VBox/VMM/Makefile.kmk
+++ b/src/VBox/VMM/Makefile.kmk
@@ -340,6 +340,27 @@ endif
 
 $(call VBOX_SET_VER_INFO_DLL,VBoxVMM,VirtualBox VMM) # Version info / description.
 
+if "$(KBUILD_TARGET)" == "win" && !defined(VBOX_ONLY_EXTPACKS_USE_IMPLIBS)
+ #
+ # Debug type info hack for VMCPU, VM and similar.
+ #
+ # The microsoft linker seems to be using the last occurence of the structures
+ # when writing the module PDB file.  So, we put the fully complete structures
+ # in a library which is at the end of the library list.
+ #
+ VBoxVMM_LIBS    += $(VBoxVMMPdbTypeHack_1_TARGET)
+ VBoxVMM_LDFLAGS += /Export:PdbTypeHack
+
+ LIBRARIES += VBoxVMMPdbTypeHack
+ VBoxVMMPdbTypeHack_TEMPLATE       = $(VBoxVMM_TEMPLATE)
+ VBoxVMMPdbTypeHack_SOURCES        = VMMAll/AllPdbTypeHack.cpp
+ VBoxVMMPdbTypeHack_DEFS           = $(VBoxVMM_DEFS)
+ VBoxVMMPdbTypeHack_DEFS.win       = $(VBoxVMM_DEFS.win)
+ VBoxVMMPdbTypeHack_DEFS.win.x86   = $(VBoxVMM_DEFS.win.x86)
+ VBoxVMMPdbTypeHack_DEFS.win.amd64 = $(VBoxVMM_DEFS.win.amd64)
+ VBoxVMMPdbTypeHack_INCS           = $(VBoxVMM_INCS)
+endif
+
 
 if defined(VBOX_WITH_RAW_MODE) && $(intersects $(VBOX_LDR_FMT32), pe lx)
 
@@ -547,8 +568,9 @@ if defined(VBOX_WITH_RAW_MODE) && !defined(VBOX_ONLY_EXTPACKS)
   	VMMAll/REMAll.cpp
  endif
 
- # the very last one.
- VMMRC_SOURCES += VMMRC/VMMRC99.asm
+ # The very last one.
+ VMMRC_SOURCES += \
+ 	VMMRC/VMMRC99.asm
 
  VMMRC/VMMRCDeps.cpp_CXXFLAGS.win = -Oi- -TC ## @todo rename VMMRCDeps.cpp to .c
 
@@ -557,6 +579,22 @@ if defined(VBOX_WITH_RAW_MODE) && !defined(VBOX_ONLY_EXTPACKS)
  if "$(USERNAME)" == "bird" && "$(KBUILD_TARGET)" == "win"
   VMMRC_VMMAll/IEMAll.cpp_CXXFLAGS = /FAcs /Fa$(subst /,\\,$(outbase).cod)
  endif
+
+ if "$(KBUILD_TARGET)" == "win"
+  # Debug type info hack for VMCPU, VM and similar.  See VBoxVMM for details.
+  VMMRC_LIBS    += $(VMMRCPdbTypeHack_1_TARGET)
+  VMMRC_LDFLAGS += /Export:PdbTypeHack
+
+  LIBRARIES += VMMRCPdbTypeHack
+  VMMRCPdbTypeHack_TEMPLATE       = $(VMMRC_TEMPLATE)
+  VMMRCPdbTypeHack_SOURCES        = VMMAll/AllPdbTypeHack.cpp
+  VMMRCPdbTypeHack_DEFS           = $(VMMRC_DEFS)
+  VMMRCPdbTypeHack_DEFS.win       = $(VMMRC_DEFS.win)
+  VMMRCPdbTypeHack_DEFS.win.x86   = $(VMMRC_DEFS.win.x86)
+  VMMRCPdbTypeHack_DEFS.win.amd64 = $(VMMRC_DEFS.win.amd64)
+  VMMRCPdbTypeHack_INCS           = $(VMMRC_INCS)
+ endif
+
 endif # VBOX_WITH_RAW_MODE && !VBOX_ONLY_EXTPACKS
 
 
@@ -590,7 +628,7 @@ ifndef VBOX_ONLY_EXTPACKS
  VMMR0_DEFS.win.amd64  = VBOX_WITH_KERNEL_USING_XMM
 
  ifeq ($(VBOX_LDR_FMT),elf)
-  VMMR0_CXXFLAGS += $(filter-out -Wno-unused,$(TEMPLATE_VBoxR0_CXXFLAGS)) -Wunused-variable -Wno-unused-parameter
+  VMMR0_CXXFLAGS += -Wunused -Wunused-variable -Wno-unused-parameter
  endif
 
  VMMR0_INCS      = \
@@ -698,6 +736,22 @@ ifndef VBOX_ONLY_EXTPACKS
  if "$(USERNAME)" == "bird" && "$(KBUILD_TARGET)" == "win"
   VMMR0_VMMAll/IEMAll.cpp_CXXFLAGS = /FAcs /Fa$(subst /,\\,$(outbase).cod)
  endif
+
+ if "$(KBUILD_TARGET)" == "win"
+  # Debug type info hack for VMCPU, VM and similar.  See VBoxVMM for details.
+  VMMR0_LIBS    += $(VMMR0PdbTypeHack_1_TARGET)
+  VMMR0_LDFLAGS += /Export:PdbTypeHack
+
+  LIBRARIES += VMMR0PdbTypeHack
+  VMMR0PdbTypeHack_TEMPLATE       = $(VMMR0_TEMPLATE)
+  VMMR0PdbTypeHack_SOURCES        = VMMAll/AllPdbTypeHack.cpp
+  VMMR0PdbTypeHack_DEFS           = $(VMMR0_DEFS)
+  VMMR0PdbTypeHack_DEFS.win       = $(VMMR0_DEFS.win)
+  VMMR0PdbTypeHack_DEFS.win.x86   = $(VMMR0_DEFS.win.x86)
+  VMMR0PdbTypeHack_DEFS.win.amd64 = $(VMMR0_DEFS.win.amd64)
+  VMMR0PdbTypeHack_INCS           = $(VMMR0_INCS)
+ endif
+
 endif # !VBOX_ONLY_EXTPACKS
 
 
diff --git a/src/VBox/VMM/VMMAll/APICAll.cpp b/src/VBox/VMM/VMMAll/APICAll.cpp
index d22f85f..91f6f12 100644
--- a/src/VBox/VMM/VMMAll/APICAll.cpp
+++ b/src/VBox/VMM/VMMAll/APICAll.cpp
@@ -629,7 +629,7 @@ static VBOXSTRICTRC apicSendIntr(PVM pVM, PVMCPU pVCpu, uint8_t uVector, XAPICTR
                 && apicIsEnabled(&pVM->aCpus[idCpu]))
                 fAccepted = apicPostInterrupt(&pVM->aCpus[idCpu], uVector, enmTriggerMode);
             else
-                AssertMsgFailed(("APIC: apicSendIntr: No CPU found for lowest-priority delivery mode!\n"));
+                AssertMsgFailed(("APIC: apicSendIntr: No CPU found for lowest-priority delivery mode! idCpu=%u\n", idCpu));
             break;
         }
 
diff --git a/src/VBox/VMM/VMMAll/AllPdbTypeHack.cpp b/src/VBox/VMM/VMMAll/AllPdbTypeHack.cpp
new file mode 100644
index 0000000..3ffabce
--- /dev/null
+++ b/src/VBox/VMM/VMMAll/AllPdbTypeHack.cpp
@@ -0,0 +1,110 @@
+/* $Id: AllPdbTypeHack.cpp $ */
+/** @file
+ * Debug info hack for the VM and VMCPU structures.
+ */
+
+/*
+ * Copyright (C) 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;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+
+/*********************************************************************************************************************************
+*   Header Files                                                                                                                 *
+*********************************************************************************************************************************/
+#include <VBox/vmm/cfgm.h>
+#include <VBox/vmm/cpum.h>
+#include <VBox/vmm/mm.h>
+#include <VBox/vmm/pgm.h>
+#include <VBox/vmm/selm.h>
+#include <VBox/vmm/trpm.h>
+#include <VBox/vmm/vmm.h>
+#include <VBox/vmm/stam.h>
+#include "../include/PDMInternal.h"
+#include <VBox/vmm/pdm.h>
+#include "../include/CFGMInternal.h"
+#include "../include/CPUMInternal.h"
+#include "../include/MMInternal.h"
+#include "../include/PGMInternal.h"
+#include "../include/SELMInternal.h"
+#include "../include/TRPMInternal.h"
+#include "../include/TMInternal.h"
+#include "../include/IOMInternal.h"
+#include "../include/REMInternal.h"
+#ifdef IN_RING3
+# include "../include/SSMInternal.h"
+#endif
+#include "../include/HMInternal.h"
+#include "../include/VMMInternal.h"
+#include "../include/DBGFInternal.h"
+#include "../include/GIMInternal.h"
+#ifdef VBOX_WITH_NEW_APIC
+# include "../include/APICInternal.h"
+#endif
+#include "../include/STAMInternal.h"
+#include "../include/VMInternal.h"
+#include "../include/EMInternal.h"
+#include "../include/IEMInternal.h"
+#include "../include/REMInternal.h"
+#include "../VMMR0/GMMR0Internal.h"
+#ifndef IN_RC
+# include "../VMMR0/GVMMR0Internal.h"
+#endif
+#ifdef VBOX_WITH_RAW_MODE
+# include "../include/CSAMInternal.h"
+# include "../include/PATMInternal.h"
+#endif
+#include <VBox/vmm/vm.h>
+#ifdef IN_RING3
+# include <VBox/vmm/uvm.h>
+#endif
+#include <VBox/vmm/gvm.h>
+
+
+extern "C" {
+
+/* Global pointer variables as an alternative to the parameter list.  Just to ensure the precense of the types. */
+PVM                 g_PdbTypeHack1 = NULL;
+PVMCPU              g_PdbTypeHack2 = NULL;
+PPDMCRITSECT        g_PdbTypeHack3 = NULL;
+PPDMCRITSECTRW      g_PdbTypeHack4 = NULL;
+PPDMDEVINS          g_PdbTypeHack5 = NULL;
+PPDMDRVINS          g_PdbTypeHack6 = NULL;
+PPDMUSBINS          g_PdbTypeHack7 = NULL;
+PCVMCPU             g_PdbTypeHack8 = NULL;
+CTX_SUFF(PVM)       g_PdbTypeHack9 = NULL;
+CTX_SUFF(PVMCPU)    g_PdbTypeHack10 = NULL;
+
+DECLEXPORT(uint32_t) PdbTypeHack(PVM pVM, PVMCPU pVCpu, PPDMCRITSECT pCs1, PPDMCRITSECTRW pCs2);
+}
+
+DECLEXPORT(uint32_t) PdbTypeHack(PVM pVM, PVMCPU pVCpu, PPDMCRITSECT pCs1, PPDMCRITSECTRW pCs2)
+{
+    /* Just some dummy operations accessing each type. Probably not necessary, but
+       helps making sure we've included all we need to get at the internal stuff.. */
+    return pVM->fGlobalForcedActions
+         | (pVM == g_PdbTypeHack1)
+         | (pVM == g_PdbTypeHack9)
+         | pVCpu->fLocalForcedActions
+         | (pVCpu == g_PdbTypeHack2)
+         | (pVCpu == g_PdbTypeHack8)
+         | (pVCpu == g_PdbTypeHack10)
+         | pCs1->s.Core.fFlags
+         | (pCs1 == g_PdbTypeHack3)
+         | pCs2->s.Core.fFlags
+         | (pCs2 == g_PdbTypeHack4)
+         | g_PdbTypeHack5->Internal.s.fIntFlags
+         | (g_PdbTypeHack5 != NULL)
+         | (uint32_t)g_PdbTypeHack6->Internal.s.fDetaching
+         | (g_PdbTypeHack6 != NULL)
+         | (uint32_t)g_PdbTypeHack7->Internal.s.fVMSuspended
+         | (g_PdbTypeHack7 != NULL);
+}
+
diff --git a/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp b/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
index a6e36d6..7297587 100644
--- a/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
+++ b/src/VBox/VMM/VMMAll/CPUMAllRegs.cpp
@@ -1373,8 +1373,12 @@ VMMDECL(void) CPUMGetGuestCpuId(PVMCPU pVCpu, uint32_t uLeaf, uint32_t uSubLeaf,
  * @param   pVCpu       The cross context virtual CPU structure to make the
  *                      change on.  Usually the calling EMT.
  * @param   fVisible    Whether to make it visible (true) or hide it (false).
+ *
+ * @remarks This is "VMMDECL" so that it still links with
+ *          the old APIC code which is in VBoxDD2 and not in
+ *          the VMM module.
  */
-VMM_INT_DECL(bool) CPUMSetGuestCpuIdPerCpuApicFeature(PVMCPU pVCpu, bool fVisible)
+VMMDECL(bool) CPUMSetGuestCpuIdPerCpuApicFeature(PVMCPU pVCpu, bool fVisible)
 {
     bool fOld = pVCpu->cpum.s.fCpuIdApicFeatureVisible;
     pVCpu->cpum.s.fCpuIdApicFeatureVisible = fVisible;
@@ -2033,7 +2037,7 @@ VMM_INT_DECL(int) CPUMRawEnter(PVMCPU pVCpu)
     AssertMsg((pCtx->eflags.u32 & X86_EFL_IF), ("X86_EFL_IF is clear\n"));
     AssertReleaseMsg(pCtx->eflags.Bits.u2IOPL == 0,
                      ("X86_EFL_IOPL=%d CPL=%d\n", pCtx->eflags.Bits.u2IOPL, pCtx->ss.Sel & X86_SEL_RPL));
-    Assert((pVCpu->cpum.s.Guest.cr0 & (X86_CR0_PG | X86_CR0_WP | X86_CR0_PE)) == (X86_CR0_PG | X86_CR0_PE | X86_CR0_WP));
+    Assert((pVCpu->cpum.s.Guest.cr0 & (X86_CR0_PG | X86_CR0_PE)) == (X86_CR0_PG | X86_CR0_PE));
 
     pCtx->eflags.u32        |= X86_EFL_IF; /* paranoia */
 
diff --git a/src/VBox/VMM/VMMAll/EMAll.cpp b/src/VBox/VMM/VMMAll/EMAll.cpp
index f00b86f..4a0681e 100644
--- a/src/VBox/VMM/VMMAll/EMAll.cpp
+++ b/src/VBox/VMM/VMMAll/EMAll.cpp
@@ -43,7 +43,6 @@
 #include <VBox/dis.h>
 #include <VBox/disopcode.h>
 #include <VBox/log.h>
-#include "internal/pgm.h"
 #include <iprt/assert.h>
 #include <iprt/asm.h>
 #include <iprt/string.h>
diff --git a/src/VBox/VMM/VMMAll/GIMAllHv.cpp b/src/VBox/VMM/VMMAll/GIMAllHv.cpp
index ce7478c..73a7f8b 100644
--- a/src/VBox/VMM/VMMAll/GIMAllHv.cpp
+++ b/src/VBox/VMM/VMMAll/GIMAllHv.cpp
@@ -677,10 +677,10 @@ VMM_INT_DECL(VBOXSTRICTRC) gimHvWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSR
 #ifndef IN_RING3
             return VINF_CPUM_R3_MSR_WRITE;
 #else  /* IN_RING3 */
-            /* First, update all but the TSC-page enable bit. */
+            /* First, update all but the TSC page enable bit. */
             pHv->u64TscPageMsr = (uRawValue & ~MSR_GIM_HV_REF_TSC_ENABLE_BIT);
 
-            /* Is the guest disabling the TSC-page? */
+            /* Is the guest disabling the TSC page? */
             bool fEnable = RT_BOOL(uRawValue & MSR_GIM_HV_REF_TSC_ENABLE_BIT);
             if (!fEnable)
             {
@@ -689,7 +689,7 @@ VMM_INT_DECL(VBOXSTRICTRC) gimHvWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSR
                 return VINF_SUCCESS;
             }
 
-            /* Enable the TSC-page. */
+            /* Enable the TSC page. */
             RTGCPHYS GCPhysTscPage = MSR_GIM_HV_REF_TSC_GUEST_PFN(uRawValue) << PAGE_SHIFT;
             int rc = gimR3HvEnableTscPage(pVM, GCPhysTscPage, false /* fUseThisTscSequence */, 0 /* uTscSequence */);
             if (RT_SUCCESS(rc))
@@ -702,6 +702,37 @@ VMM_INT_DECL(VBOXSTRICTRC) gimHvWriteMsr(PVMCPU pVCpu, uint32_t idMsr, PCCPUMMSR
 #endif /* IN_RING3 */
         }
 
+        case MSR_GIM_HV_APIC_ASSIST_PAGE:
+        {
+#ifndef IN_RING3
+            return VINF_CPUM_R3_MSR_WRITE;
+#else  /* IN_RING3 */
+            PGIMHVCPU pHvCpu = &pVCpu->gim.s.u.HvCpu;
+            /* First, update all but the APIC-assist page enable bit. */
+            pHvCpu->uApicAssistPageMsr = (uRawValue & ~MSR_GIM_HV_APICASSIST_PAGE_ENABLE_BIT);
+
+            /* Is the guest disabling the APIC-assist page? */
+            bool fEnable = RT_BOOL(uRawValue & MSR_GIM_HV_APICASSIST_PAGE_ENABLE_BIT);
+            if (!fEnable)
+            {
+                gimR3HvDisableApicAssistPage(pVM);
+                pHvCpu->uApicAssistPageMsr = uRawValue;
+                return VINF_SUCCESS;
+            }
+
+            /* Enable the APIC-assist page. */
+            RTGCPHYS GCPhysApicAssist = MSR_GIM_HV_APICASSIST_GUEST_PFN(uRawValue) << PAGE_SHIFT;
+            int rc = gimR3HvEnableApicAssistPage(pVM, GCPhysApicAssist);
+            if (RT_SUCCESS(rc))
+            {
+                pHvCpu->uApicAssistPageMsr = uRawValue;
+                return VINF_SUCCESS;
+            }
+
+            return VERR_CPUM_RAISE_GP_0;
+#endif /* IN_RING3 */
+        }
+
         case MSR_GIM_HV_RESET:
         {
 #ifndef IN_RING3
diff --git a/src/VBox/VMM/VMMAll/IEMAll.cpp b/src/VBox/VMM/VMMAll/IEMAll.cpp
index 0a8b83d..a7f7def 100644
--- a/src/VBox/VMM/VMMAll/IEMAll.cpp
+++ b/src/VBox/VMM/VMMAll/IEMAll.cpp
@@ -81,7 +81,6 @@
 #endif
 //#define IEM_LOG_MEMORY_WRITES
 #define IEM_IMPLEMENTS_TASKSWITCH
-//#define IEM_WITH_CODE_TLB - work in progress
 
 
 /*********************************************************************************************************************************
@@ -93,7 +92,6 @@
 #include <VBox/vmm/cpum.h>
 #include <VBox/vmm/pdm.h>
 #include <VBox/vmm/pgm.h>
-#include <internal/pgm.h>
 #include <VBox/vmm/iom.h>
 #include <VBox/vmm/em.h>
 #include <VBox/vmm/hm.h>
@@ -734,6 +732,7 @@ IEM_STATIC VBOXSTRICTRC     iemRaiseSelectorInvalidAccess(PVMCPU pVCpu, uint32_t
 IEM_STATIC VBOXSTRICTRC     iemRaisePageFault(PVMCPU pVCpu, RTGCPTR GCPtrWhere, uint32_t fAccess, int rc);
 IEM_STATIC VBOXSTRICTRC     iemRaiseAlignmentCheckException(PVMCPU pVCpu);
 #ifdef IEM_WITH_SETJMP
+DECL_NO_INLINE(IEM_STATIC, DECL_NO_RETURN(void)) iemRaisePageFaultJmp(PVMCPU pVCpu, RTGCPTR GCPtrWhere, uint32_t fAccess, int rc);
 DECL_NO_INLINE(IEM_STATIC, DECL_NO_RETURN(void)) iemRaiseGeneralProtectionFault0Jmp(PVMCPU pVCpu);
 DECL_NO_INLINE(IEM_STATIC, DECL_NO_RETURN(void)) iemRaiseSelectorBoundsJmp(PVMCPU pVCpu, uint32_t iSegReg, uint32_t fAccess);
 DECL_NO_INLINE(IEM_STATIC, DECL_NO_RETURN(void)) iemRaiseSelectorBoundsBySelectorJmp(PVMCPU pVCpu, RTSEL Sel);
@@ -872,7 +871,7 @@ DECLINLINE(void) iemInitExec(PVMCPU pVCpu, bool fBypassHandlers)
     pVCpu->iem.s.pbInstrBuf         = NULL;
     pVCpu->iem.s.cbInstrBuf         = UINT16_MAX;
     pVCpu->iem.s.cbInstrBufTotal    = UINT16_MAX;
-    pVCpu->iem.s.offCurInstrStart   = UINT16_MAX;
+    pVCpu->iem.s.offCurInstrStart   = INT16_MAX;
     pVCpu->iem.s.uInstrBufPc        = UINT64_C(0xc0ffc0ffcff0c0ff);
 # else
     pVCpu->iem.s.offOpcode          = 127;
@@ -1086,12 +1085,16 @@ DECLINLINE(void) iemReInitDecoder(PVMCPU pVCpu)
             pVCpu->iem.s.pbInstrBuf       = NULL;
             pVCpu->iem.s.offInstrNextByte = 0;
             pVCpu->iem.s.offCurInstrStart = 0;
+            pVCpu->iem.s.cbInstrBuf       = 0;
+            pVCpu->iem.s.cbInstrBufTotal  = 0;
         }
     }
     else
     {
         pVCpu->iem.s.offInstrNextByte = 0;
         pVCpu->iem.s.offCurInstrStart = 0;
+        pVCpu->iem.s.cbInstrBuf       = 0;
+        pVCpu->iem.s.cbInstrBufTotal  = 0;
     }
 #else
     pVCpu->iem.s.cbOpcode           = 0;
@@ -1311,9 +1314,10 @@ IEM_STATIC VBOXSTRICTRC iemInitDecoderAndPrefetchOpcodes(PVMCPU pVCpu, bool fByp
  *                      thread.
  * @param   fVmm        Set when PGM calls us with a remapping.
  */
-void IEMInvalidTLBs(PVMCPU pVCpu, bool fVmm)
+VMM_INT_DECL(void) IEMTlbInvalidateAll(PVMCPU pVCpu, bool fVmm)
 {
 #ifdef IEM_WITH_CODE_TLB
+    pVCpu->iem.s.cbInstrBufTotal = 0;
     pVCpu->iem.s.CodeTlb.uTlbRevision += IEMTLB_REVISION_INCR;
     if (pVCpu->iem.s.CodeTlb.uTlbRevision != 0)
     { /* very likely */ }
@@ -1343,49 +1347,104 @@ void IEMInvalidTLBs(PVMCPU pVCpu, bool fVmm)
 
 
 /**
+ * Invalidates a page in the TLBs.
+ *
+ * @param   pVCpu       The cross context virtual CPU structure of the calling
+ *                      thread.
+ * @param   GCPtr       The address of the page to invalidate
+ */
+VMM_INT_DECL(void) IEMTlbInvalidatePage(PVMCPU pVCpu, RTGCPTR GCPtr)
+{
+#if defined(IEM_WITH_CODE_TLB) || defined(IEM_WITH_DATA_TLB)
+    GCPtr = GCPtr >> X86_PAGE_SHIFT;
+    AssertCompile(RT_ELEMENTS(pVCpu->iem.s.CodeTlb.aEntries) == 256);
+    AssertCompile(RT_ELEMENTS(pVCpu->iem.s.DataTlb.aEntries) == 256);
+    uintptr_t idx = (uint8_t)GCPtr;
+
+# ifdef IEM_WITH_CODE_TLB
+    if (pVCpu->iem.s.CodeTlb.aEntries[idx].uTag == (GCPtr | pVCpu->iem.s.CodeTlb.uTlbRevision))
+    {
+        pVCpu->iem.s.CodeTlb.aEntries[idx].uTag = 0;
+        if (GCPtr == (pVCpu->iem.s.uInstrBufPc >> X86_PAGE_SHIFT))
+            pVCpu->iem.s.cbInstrBufTotal = 0;
+    }
+# endif
+
+# ifdef IEM_WITH_DATA_TLB
+    if (pVCpu->iem.s.DataTlb.aEntries[idx].uTag == (GCPtr | pVCpu->iem.s.DataTlb.uTlbRevision))
+        pVCpu->iem.s.DataTlb.aEntries[idx].uTag = 0;
+# endif
+#else
+    NOREF(pVCpu); NOREF(GCPtr);
+#endif
+}
+
+
+/**
  * Invalidates the host physical aspects of the IEM TLBs.
  *
  * This is called internally as well as by PGM when moving GC mappings.
  *
- * @returns
  * @param   pVCpu       The cross context virtual CPU structure of the calling
  *                      thread.
  */
-void IEMInvalidTLBsHostPhys(PVMCPU pVCpu, uint64_t uTlbPhysRev, bool fFullFlush)
+VMM_INT_DECL(void) IEMTlbInvalidateAllPhysical(PVMCPU pVCpu)
 {
 #if defined(IEM_WITH_CODE_TLB) || defined(IEM_WITH_DATA_TLB)
     /* Note! This probably won't end up looking exactly like this, but it give an idea... */
 
-    pVCpu->iem.s.CodeTlb.uTlbPhysRev = uTlbPhysRev;
-    pVCpu->iem.s.DataTlb.uTlbPhysRev = uTlbPhysRev;
-
-    if (!fFlushFlush)
-    { /* very likely */ }
+# ifdef IEM_WITH_CODE_TLB
+    pVCpu->iem.s.cbInstrBufTotal = 0;
+# endif
+    uint64_t uTlbPhysRev = pVCpu->iem.s.CodeTlb.uTlbPhysRev + IEMTLB_PHYS_REV_INCR;
+    if (uTlbPhysRev != 0)
+    {
+        pVCpu->iem.s.CodeTlb.uTlbPhysRev = uTlbPhysRev;
+        pVCpu->iem.s.DataTlb.uTlbPhysRev = uTlbPhysRev;
+    }
     else
     {
+        pVCpu->iem.s.CodeTlb.uTlbPhysRev = IEMTLB_PHYS_REV_INCR;
+        pVCpu->iem.s.DataTlb.uTlbPhysRev = IEMTLB_PHYS_REV_INCR;
+
         unsigned i;
 # ifdef IEM_WITH_CODE_TLB
         i = RT_ELEMENTS(pVCpu->iem.s.CodeTlb.aEntries);
         while (i-- > 0)
         {
-            pVCpu->iem.s.CodeTlb.aEntries[i].pMappingR3        = NULL;
-            pVCpu->iem.s.CodeTlb.aEntries[i].fFlagsAndPhysRev &= ~(IEMTLBE_F_PG_NO_WRITE | IEMTLBE_F_PG_NO_READ | IEMTLBE_F_PHYS_REV)
+            pVCpu->iem.s.CodeTlb.aEntries[i].pbMappingR3       = NULL;
+            pVCpu->iem.s.CodeTlb.aEntries[i].fFlagsAndPhysRev &= ~(IEMTLBE_F_PG_NO_WRITE | IEMTLBE_F_PG_NO_READ | IEMTLBE_F_PHYS_REV);
         }
 # endif
 # ifdef IEM_WITH_DATA_TLB
         i = RT_ELEMENTS(pVCpu->iem.s.DataTlb.aEntries);
         while (i-- > 0)
         {
-            pVCpu->iem.s.DataTlb.aEntries[i].pMappingR3        = NULL;
-            pVCpu->iem.s.DataTlb.aEntries[i].fFlagsAndPhysRev &= ~(IEMTLBE_F_PG_NO_WRITE | IEMTLBE_F_PG_NO_READ | IEMTLBE_F_PHYS_REV)
+            pVCpu->iem.s.DataTlb.aEntries[i].pbMappingR3       = NULL;
+            pVCpu->iem.s.DataTlb.aEntries[i].fFlagsAndPhysRev &= ~(IEMTLBE_F_PG_NO_WRITE | IEMTLBE_F_PG_NO_READ | IEMTLBE_F_PHYS_REV);
         }
 # endif
     }
+#else
+    NOREF(pVCpu);
 #endif
-    NOREF(pVCpu); NOREF(fFullFlush);
 }
 
 
+/**
+ * Invalidates the host physical aspects of the IEM TLBs.
+ *
+ * This is called internally as well as by PGM when moving GC mappings.
+ *
+ * @param   pVM         The cross context VM structure.
+ *
+ * @remarks Caller holds the PGM lock.
+ */
+VMM_INT_DECL(void) IEMTlbInvalidateAllPhysicalAllCpus(PVM pVM)
+{
+
+}
+
 #ifdef IEM_WITH_CODE_TLB
 
 /**
@@ -1407,225 +1466,278 @@ void IEMInvalidTLBsHostPhys(PVMCPU pVCpu, uint64_t uTlbPhysRev, bool fFullFlush)
  */
 IEM_STATIC void iemOpcodeFetchBytesJmp(PVMCPU pVCpu, size_t cbDst, void *pvDst)
 {
-    Assert(cbDst <= 8);
-    uint32_t offBuf = pVCpu->iem.s.offInstrNextByte;
-
-    /*
-     * We might have a partial buffer match, deal with that first to make the
-     * rest simpler.  This is the first part of the cross page/buffer case.
-     */
-    if (pVCpu->iem.s.pbInstrBuf != NULL)
+#ifdef IN_RING3
+//__debugbreak();
+#else
+    longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), VERR_INTERNAL_ERROR);
+#endif
+    for (;;)
     {
-        if (offBuf < pVCpu->iem.s.cbInstrBuf)
-        {
-            Assert(offBuf + cbDst > pVCpu->iem.s.cbInstrBuf);
-            uint32_t const cbCopy = pVCpu->iem.s.cbInstrBuf - pVCpu->iem.s.offInstrNextByte;
-            memcpy(pvDst, &pVCpu->iem.s.pbInstrBuf[offBuf], cbCopy);
+        Assert(cbDst <= 8);
+        uint32_t offBuf = pVCpu->iem.s.offInstrNextByte;
 
-            cbDst  -= cbCopy;
-            pvDst   = (uint8_t *)pvDst + cbCopy;
-            offBuf += cbCopy;
-            pVCpu->iem.s.offInstrNextByte += offBuf;
+        /*
+         * We might have a partial buffer match, deal with that first to make the
+         * rest simpler.  This is the first part of the cross page/buffer case.
+         */
+        if (pVCpu->iem.s.pbInstrBuf != NULL)
+        {
+            if (offBuf < pVCpu->iem.s.cbInstrBuf)
+            {
+                Assert(offBuf + cbDst > pVCpu->iem.s.cbInstrBuf);
+                uint32_t const cbCopy = pVCpu->iem.s.cbInstrBuf - pVCpu->iem.s.offInstrNextByte;
+                memcpy(pvDst, &pVCpu->iem.s.pbInstrBuf[offBuf], cbCopy);
+
+                cbDst  -= cbCopy;
+                pvDst   = (uint8_t *)pvDst + cbCopy;
+                offBuf += cbCopy;
+                pVCpu->iem.s.offInstrNextByte += offBuf;
+            }
         }
-    }
 
-    /*
-     * Check segment limit, figuring how much we're allowed to access at this point.
-     */
-    PCPUMCTX pCtx = IEM_GET_CTX(pVCpu);
-    RTGCPTR  GCPtrFirst;
-    uint32_t cbMaxRead;
-    if (pVCpu->iem.s.enmCpuMode == IEMMODE_64BIT)
-    {
-        GCPtrFirst = pCtx->rip + (offBuf - pVCpu->iem.s.offCurInstrStart);
-        if (RT_LIKELY(IEM_IS_CANONICAL(GCPtrFirst)))
-        { /* likely */ }
-        else
-            iemRaiseGeneralProtectionFault0Jmp(pVCpu);
-        cbMaxRead = X86_PAGE_SIZE - ((uint32_t)GCPtrFirst & X86_PAGE_OFFSET_MASK);
-    }
-    else
-    {
-        GCPtrFirst = pCtx->eip + (offBuf - pVCpu->iem.s.offCurInstrStart);
-        Assert(!(GCPtrFirst & ~(uint32_t)UINT16_MAX) || pVCpu->iem.s.enmCpuMode == IEMMODE_32BIT);
-        if (RT_LIKELY((uint32_t)GCPtrFirst <= pCtx->cs.u32Limit))
-        { /* likely */ }
-        else
-            iemRaiseSelectorBoundsJmp(pVCpu, X86_SREG_CS, IEM_ACCESS_INSTRUCTION);
-        cbMaxRead = pCtx->cs.u32Limit - (uint32_t)GCPtrFirst + 1;
-        if (cbMaxRead != 0)
-        { /* likely */ }
+        /*
+         * Check segment limit, figuring how much we're allowed to access at this point.
+         *
+         * We will fault immediately if RIP is past the segment limit / in non-canonical
+         * territory.  If we do continue, there are one or more bytes to read before we
+         * end up in trouble and we need to do that first before faulting.
+         */
+        PCPUMCTX pCtx = IEM_GET_CTX(pVCpu);
+        RTGCPTR  GCPtrFirst;
+        uint32_t cbMaxRead;
+        if (pVCpu->iem.s.enmCpuMode == IEMMODE_64BIT)
+        {
+            GCPtrFirst = pCtx->rip + (offBuf - (uint32_t)(int32_t)pVCpu->iem.s.offCurInstrStart);
+            if (RT_LIKELY(IEM_IS_CANONICAL(GCPtrFirst)))
+            { /* likely */ }
+            else
+                iemRaiseGeneralProtectionFault0Jmp(pVCpu);
+            cbMaxRead = X86_PAGE_SIZE - ((uint32_t)GCPtrFirst & X86_PAGE_OFFSET_MASK);
+        }
         else
         {
-            /* Overflowed because address is 0 and limit is max. */
-            Assert(GCPtrFirst == 0); Assert(pCtx->cs.u32Limit == UINT32_MAX);
-            cbMaxRead = X86_PAGE_SIZE;
+            GCPtrFirst = pCtx->eip + (offBuf - (uint32_t)(int32_t)pVCpu->iem.s.offCurInstrStart);
+            Assert(!(GCPtrFirst & ~(uint32_t)UINT16_MAX) || pVCpu->iem.s.enmCpuMode == IEMMODE_32BIT);
+            if (RT_LIKELY((uint32_t)GCPtrFirst <= pCtx->cs.u32Limit))
+            { /* likely */ }
+            else
+                iemRaiseSelectorBoundsJmp(pVCpu, X86_SREG_CS, IEM_ACCESS_INSTRUCTION);
+            cbMaxRead = pCtx->cs.u32Limit - (uint32_t)GCPtrFirst + 1;
+            if (cbMaxRead != 0)
+            { /* likely */ }
+            else
+            {
+                /* Overflowed because address is 0 and limit is max. */
+                Assert(GCPtrFirst == 0); Assert(pCtx->cs.u32Limit == UINT32_MAX);
+                cbMaxRead = X86_PAGE_SIZE;
+            }
+            GCPtrFirst = (uint32_t)GCPtrFirst + (uint32_t)pCtx->cs.u64Base;
+            uint32_t cbMaxRead2 = X86_PAGE_SIZE - ((uint32_t)GCPtrFirst & X86_PAGE_OFFSET_MASK);
+            if (cbMaxRead2 < cbMaxRead)
+                cbMaxRead = cbMaxRead2;
+            /** @todo testcase: unreal modes, both huge 16-bit and 32-bit. */
         }
-        GCPtrFirst = (uint32_t)GCPtrFirst + (uint32_t)pCtx->cs.u64Base;
-        uint32_t cbMaxRead2 = X86_PAGE_SIZE - ((uint32_t)GCPtrFirst & X86_PAGE_OFFSET_MASK);
-        if (cbMaxRead2 < cbMaxRead)
-            cbMaxRead = cbMaxRead2;
-        /** @todo testcase: unreal modes, both huge 16-bit and 32-bit. */
-    }
 
-    /*
-     * Get the TLB entry for this piece of code.
-     */
-    uint64_t     uTag  = (GCPtrFirst >> X86_PAGE_SHIFT) | pVCpu->iem.s.CodeTlb.uTlbRevision;
-    AssertCompile(RT_ELEMENTS(pVCpu->iem.s.CodeTlb.aEntries) == 256);
-    PIEMTLBENTRY pTlbe = &pVCpu->iem.s.CodeTlb.aEntries[(uint8_t)uTag];
-    if (pTlbe->uTag == uTag)
-    {
-        /* likely when executing lots of code, otherwise unlikely */
+        /*
+         * Get the TLB entry for this piece of code.
+         */
+        uint64_t     uTag  = (GCPtrFirst >> X86_PAGE_SHIFT) | pVCpu->iem.s.CodeTlb.uTlbRevision;
+        AssertCompile(RT_ELEMENTS(pVCpu->iem.s.CodeTlb.aEntries) == 256);
+        PIEMTLBENTRY pTlbe = &pVCpu->iem.s.CodeTlb.aEntries[(uint8_t)uTag];
+        if (pTlbe->uTag == uTag)
+        {
+            /* likely when executing lots of code, otherwise unlikely */
 # ifdef VBOX_WITH_STATISTICS
-        pVCpu->iem.s.CodeTlb.cTlbHits++;
+            pVCpu->iem.s.CodeTlb.cTlbHits++;
 # endif
-    }
-    else
-    {
-        pVCpu->iem.s.CodeTlb.cTlbMisses++;
-        pVCpu->iem.s.CodeTlb.cTlbMissesTag++;
-# ifdef VBOX_WITH_RAW_MODE_NOT_R0
-        if (PATMIsPatchGCAddr(pVCpu->CTX_SUFF(pVM), pCtx->eip))
-        {
-            pTlbe->uTag             = uTag;
-            pTlbe->fFlagsAndPhysRev = IEMTLBE_F_PATCH_CODE  | IEMTLBE_F_PT_NO_WRITE | IEMTLBE_F_PT_NO_USER
-                                    | IEMTLBE_F_PT_NO_WRITE | IEMTLBE_F_PT_NO_DIRTY | IEMTLBE_F_NO_MAPPINGR3;
-            pTlbe->GCPhys           = NIL_RTGCPHYS;
-            pTlbe->pMappingR3       = NULL;
         }
         else
-# endif
         {
-            RTGCPHYS    GCPhys;
-            uint64_t    fFlags;
-            int rc = PGMGstGetPage(pVCpu, GCPtrNext, &fFlags, &GCPhys);
-            if (RT_FAILURE(rc))
+            pVCpu->iem.s.CodeTlb.cTlbMisses++;
+# ifdef VBOX_WITH_RAW_MODE_NOT_R0
+            if (PATMIsPatchGCAddr(pVCpu->CTX_SUFF(pVM), pCtx->eip))
             {
-                Log(("iemOpcodeFetchMoreBytes: %RGv - rc=%Rrc\n", GCPtrNext, rc));
-                return iemRaisePageFault(pVCpu, GCPtrNext, IEM_ACCESS_INSTRUCTION, rc);
+                pTlbe->uTag             = uTag;
+                pTlbe->fFlagsAndPhysRev = IEMTLBE_F_PATCH_CODE  | IEMTLBE_F_PT_NO_WRITE | IEMTLBE_F_PT_NO_USER
+                                        | IEMTLBE_F_PT_NO_WRITE | IEMTLBE_F_PT_NO_DIRTY | IEMTLBE_F_NO_MAPPINGR3;
+                pTlbe->GCPhys           = NIL_RTGCPHYS;
+                pTlbe->pbMappingR3      = NULL;
             }
+            else
+# endif
+            {
+                RTGCPHYS    GCPhys;
+                uint64_t    fFlags;
+                int rc = PGMGstGetPage(pVCpu, GCPtrFirst, &fFlags, &GCPhys);
+                if (RT_FAILURE(rc))
+                {
+                    Log(("iemOpcodeFetchMoreBytes: %RGv - rc=%Rrc\n", GCPtrFirst, rc));
+                    iemRaisePageFaultJmp(pVCpu, GCPtrFirst, IEM_ACCESS_INSTRUCTION, rc);
+                }
 
-            AssertCompile(IEMTLBE_F_PT_NO_EXEC == 1);
-            pTlbe->uTag             = uTag;
-            pTlbe->fFlagsAndPhysRev = (~fFlags & (X86_PTE_US | X86_PTE_RW | X86_PTE_D)) | (fFlags >> X86_PTE_PAE_BIT_NX);
-            pTlbe->GCPhys           = GCPhys;
-            pTlbe->pMappingR3       = NULL;
+                AssertCompile(IEMTLBE_F_PT_NO_EXEC == 1);
+                pTlbe->uTag             = uTag;
+                pTlbe->fFlagsAndPhysRev = (~fFlags & (X86_PTE_US | X86_PTE_RW | X86_PTE_D)) | (fFlags >> X86_PTE_PAE_BIT_NX);
+                pTlbe->GCPhys           = GCPhys;
+                pTlbe->pbMappingR3      = NULL;
+            }
         }
-    }
 
-    /*
-     * Check TLB access flags.
-     */
-    if (pTlbe->fFlagsAndPhysRev & (IEMTLBE_F_PT_NO_USER | IEMTLBE_F_PT_NO_EXEC))
-    {
-        if ((pTlbe->fFlagsAndPhysRev & IEMTLBE_F_PT_NO_USER) && pVCpu->iem.s.uCpl == 3)
-        {
-            Log(("iemOpcodeFetchBytesJmp: %RGv - supervisor page\n", GCPtrFirst));
-            iemRaisePageFaultJmp(pVCpu, GCPtrFirst, IEM_ACCESS_INSTRUCTION, VERR_ACCESS_DENIED);
-        }
-        if ((pTlbe->fFlagsAndPhysRev & IEMTLBE_F_PT_NO_EXEC) && (pCtx->msrEFER & MSR_K6_EFER_NXE))
+        /*
+         * Check TLB page table level access flags.
+         */
+        if (pTlbe->fFlagsAndPhysRev & (IEMTLBE_F_PT_NO_USER | IEMTLBE_F_PT_NO_EXEC))
         {
-            Log(("iemOpcodeFetchMoreBytes: %RGv - NX\n", GCPtrFirst));
-            iemRaisePageFaultJmp(pVCpu, GCPtrFirst, IEM_ACCESS_INSTRUCTION, VERR_ACCESS_DENIED);
+            if ((pTlbe->fFlagsAndPhysRev & IEMTLBE_F_PT_NO_USER) && pVCpu->iem.s.uCpl == 3)
+            {
+                Log(("iemOpcodeFetchBytesJmp: %RGv - supervisor page\n", GCPtrFirst));
+                iemRaisePageFaultJmp(pVCpu, GCPtrFirst, IEM_ACCESS_INSTRUCTION, VERR_ACCESS_DENIED);
+            }
+            if ((pTlbe->fFlagsAndPhysRev & IEMTLBE_F_PT_NO_EXEC) && (pCtx->msrEFER & MSR_K6_EFER_NXE))
+            {
+                Log(("iemOpcodeFetchMoreBytes: %RGv - NX\n", GCPtrFirst));
+                iemRaisePageFaultJmp(pVCpu, GCPtrFirst, IEM_ACCESS_INSTRUCTION, VERR_ACCESS_DENIED);
+            }
         }
-    }
-
-# ifdef VBOX_WITH_RAW_MODE_NOT_R0
-    /*
-     * Allow interpretation of patch manager code blocks since they can for
-     * instance throw #PFs for perfectly good reasons.
-     */
-    if (!(pTlbe->fFlagsAndPhysRev & IEMTLBE_F_PATCH_CODE))
-    { /* no unlikely */ }
-    else
-    {
-
-    }
-
-# endif /* VBOX_WITH_RAW_MODE_NOT_R0 */
-
-# if 0
 
 # ifdef VBOX_WITH_RAW_MODE_NOT_R0
-    /* Allow interpretation of patch manager code blocks since they can for
-       instance throw #PFs for perfectly good reasons. */
-    if (pVCpu->iem.s.fInPatchCode)
-    {
-        size_t cbRead = 0;
-        int rc = PATMReadPatchCode(pVCpu->CTX_SUFF(pVM), GCPtrNext, pVCpu->iem.s.abOpcode, cbToTryRead, &cbRead);
-        AssertRCReturn(rc, rc);
-        pVCpu->iem.s.cbOpcode = (uint8_t)cbRead; Assert(pVCpu->iem.s.cbOpcode == cbRead); Assert(cbRead > 0);
-        return VINF_SUCCESS;
-    }
+        /*
+         * Allow interpretation of patch manager code blocks since they can for
+         * instance throw #PFs for perfectly good reasons.
+         */
+        if (!(pTlbe->fFlagsAndPhysRev & IEMTLBE_F_PATCH_CODE))
+        { /* no unlikely */ }
+        else
+        {
+            /** @todo Could be optimized this a little in ring-3 if we liked. */
+            size_t cbRead = 0;
+            int rc = PATMReadPatchCode(pVCpu->CTX_SUFF(pVM), GCPtrFirst, pvDst, cbDst, &cbRead);
+            AssertRCStmt(rc, longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), rc));
+            AssertStmt(cbRead == cbDst, longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), VERR_IEM_IPE_1));
+            return;
+        }
 # endif /* VBOX_WITH_RAW_MODE_NOT_R0 */
 
-    RTGCPHYS    GCPhys;
-    uint64_t    fFlags;
-    int rc = PGMGstGetPage(pVCpu, GCPtrNext, &fFlags, &GCPhys);
-    if (RT_FAILURE(rc))
-    {
-        Log(("iemOpcodeFetchMoreBytes: %RGv - rc=%Rrc\n", GCPtrNext, rc));
-        return iemRaisePageFault(pVCpu, GCPtrNext, IEM_ACCESS_INSTRUCTION, rc);
-    }
-    if (!(fFlags & X86_PTE_US) && pVCpu->iem.s.uCpl == 3)
-    {
-        Log(("iemOpcodeFetchMoreBytes: %RGv - supervisor page\n", GCPtrNext));
-        return iemRaisePageFault(pVCpu, GCPtrNext, IEM_ACCESS_INSTRUCTION, VERR_ACCESS_DENIED);
-    }
-    if ((fFlags & X86_PTE_PAE_NX) && (pCtx->msrEFER & MSR_K6_EFER_NXE))
-    {
-        Log(("iemOpcodeFetchMoreBytes: %RGv - NX\n", GCPtrNext));
-        return iemRaisePageFault(pVCpu, GCPtrNext, IEM_ACCESS_INSTRUCTION, VERR_ACCESS_DENIED);
-    }
-    GCPhys |= GCPtrNext & PAGE_OFFSET_MASK;
-    Log5(("GCPtrNext=%RGv GCPhys=%RGp cbOpcodes=%#x\n",  GCPtrNext,  GCPhys,  pVCpu->iem.s.cbOpcode));
-    /** @todo Check reserved bits and such stuff. PGM is better at doing
-     *        that, so do it when implementing the guest virtual address
-     *        TLB... */
+        /*
+         * Look up the physical page info if necessary.
+         */
+        if ((pTlbe->fFlagsAndPhysRev & IEMTLBE_F_PHYS_REV) == pVCpu->iem.s.CodeTlb.uTlbPhysRev)
+        { /* not necessary */ }
+        else
+        {
+            AssertCompile(PGMIEMGCPHYS2PTR_F_NO_WRITE     == IEMTLBE_F_PG_NO_WRITE);
+            AssertCompile(PGMIEMGCPHYS2PTR_F_NO_READ      == IEMTLBE_F_PG_NO_READ);
+            AssertCompile(PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3 == IEMTLBE_F_NO_MAPPINGR3);
+            pTlbe->fFlagsAndPhysRev &= ~(  IEMTLBE_F_PHYS_REV
+                                         | IEMTLBE_F_NO_MAPPINGR3 | IEMTLBE_F_PG_NO_READ | IEMTLBE_F_PG_NO_WRITE);
+            int rc = PGMPhysIemGCPhys2PtrNoLock(pVCpu->CTX_SUFF(pVM), pVCpu, pTlbe->GCPhys, &pVCpu->iem.s.CodeTlb.uTlbPhysRev,
+                                                &pTlbe->pbMappingR3, &pTlbe->fFlagsAndPhysRev);
+            AssertRCStmt(rc, longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), rc));
+        }
 
-    /*
-     * Read the bytes at this address.
-     *
-     * We read all unpatched bytes in iemInitDecoderAndPrefetchOpcodes already,
-     * and since PATM should only patch the start of an instruction there
-     * should be no need to check again here.
-     */
-    if (!pVCpu->iem.s.fBypassHandlers)
-    {
-        VBOXSTRICTRC rcStrict = PGMPhysRead(pVCpu->CTX_SUFF(pVM), GCPhys, &pVCpu->iem.s.abOpcode[pVCpu->iem.s.cbOpcode],
-                                            cbToTryRead, PGMACCESSORIGIN_IEM);
-        if (RT_LIKELY(rcStrict == VINF_SUCCESS))
-        { /* likely */ }
-        else if (PGM_PHYS_RW_IS_SUCCESS(rcStrict))
+# if defined(IN_RING3) || (defined(IN_RING0) && !defined(VBOX_WITH_2X_4GB_ADDR_SPACE))
+        /*
+         * Try do a direct read using the pbMappingR3 pointer.
+         */
+        if (    (pTlbe->fFlagsAndPhysRev & (IEMTLBE_F_PHYS_REV | IEMTLBE_F_NO_MAPPINGR3 | IEMTLBE_F_PG_NO_READ))
+             == pVCpu->iem.s.CodeTlb.uTlbPhysRev)
         {
-            Log(("iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read status -  rcStrict=%Rrc\n",
-                 GCPtrNext, GCPhys, VBOXSTRICTRC_VAL(rcStrict), cbToTryRead));
-            rcStrict = iemSetPassUpStatus(pVCpu, rcStrict);
+            uint32_t const offPg = (GCPtrFirst & X86_PAGE_OFFSET_MASK);
+            pVCpu->iem.s.cbInstrBufTotal  = offPg + cbMaxRead;
+            if (offBuf == (uint32_t)(int32_t)pVCpu->iem.s.offCurInstrStart)
+            {
+                pVCpu->iem.s.cbInstrBuf       = offPg + RT_MIN(15, cbMaxRead);
+                pVCpu->iem.s.offCurInstrStart = (int16_t)offPg;
+            }
+            else
+            {
+                uint32_t const cbInstr = offBuf - (uint32_t)(int32_t)pVCpu->iem.s.offCurInstrStart;
+                Assert(cbInstr < cbMaxRead);
+                pVCpu->iem.s.cbInstrBuf       = offPg + RT_MIN(cbMaxRead + cbInstr, 15) - cbInstr;
+                pVCpu->iem.s.offCurInstrStart = (int16_t)(offPg - cbInstr);
+            }
+            if (cbDst <= cbMaxRead)
+            {
+                pVCpu->iem.s.offInstrNextByte = offPg + (uint32_t)cbDst;
+                pVCpu->iem.s.uInstrBufPc      = GCPtrFirst & ~(RTGCPTR)X86_PAGE_OFFSET_MASK;
+                pVCpu->iem.s.pbInstrBuf       = pTlbe->pbMappingR3;
+                memcpy(pvDst, &pTlbe->pbMappingR3[offPg], cbDst);
+                return;
+            }
+            pVCpu->iem.s.pbInstrBuf = NULL;
+
+            memcpy(pvDst, &pTlbe->pbMappingR3[offPg], cbMaxRead);
+            pVCpu->iem.s.offInstrNextByte = offPg + cbMaxRead;
         }
         else
+# endif
+#if 0
+        /*
+         * If there is no special read handling, so we can read a bit more and
+         * put it in the prefetch buffer.
+         */
+        if (   cbDst < cbMaxRead
+            && (pTlbe->fFlagsAndPhysRev & (IEMTLBE_F_PHYS_REV | IEMTLBE_F_PG_NO_READ)) == pVCpu->iem.s.CodeTlb.uTlbPhysRev)
         {
-            Log((RT_SUCCESS(rcStrict)
-                 ? "iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read status - rcStrict=%Rrc\n"
-                 : "iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read error - rcStrict=%Rrc (!!)\n",
-                 GCPtrNext, GCPhys, VBOXSTRICTRC_VAL(rcStrict), cbToTryRead));
-            return rcStrict;
+            VBOXSTRICTRC rcStrict = PGMPhysRead(pVCpu->CTX_SUFF(pVM), pTlbe->GCPhys,
+                                                &pVCpu->iem.s.abOpcode[0], cbToTryRead, PGMACCESSORIGIN_IEM);
+            if (RT_LIKELY(rcStrict == VINF_SUCCESS))
+            { /* likely */ }
+            else if (PGM_PHYS_RW_IS_SUCCESS(rcStrict))
+            {
+                Log(("iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read status -  rcStrict=%Rrc\n",
+                     GCPtrNext, GCPhys, VBOXSTRICTRC_VAL(rcStrict), cbToTryRead));
+                rcStrict = iemSetPassUpStatus(pVCpu, rcStrict);
+                AssertStmt(rcStrict == VINF_SUCCESS, longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), VBOXSTRICRC_VAL(rcStrict)));
+            }
+            else
+            {
+                Log((RT_SUCCESS(rcStrict)
+                     ? "iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read status - rcStrict=%Rrc\n"
+                     : "iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read error - rcStrict=%Rrc (!!)\n",
+                     GCPtrNext, GCPhys, VBOXSTRICTRC_VAL(rcStrict), cbToTryRead));
+                longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), VBOXSTRICTRC_VAL(rcStrict));
+            }
         }
-    }
-    else
-    {
-        rc = PGMPhysSimpleReadGCPhys(pVCpu->CTX_SUFF(pVM), &pVCpu->iem.s.abOpcode[pVCpu->iem.s.cbOpcode], GCPhys, cbToTryRead);
-        if (RT_SUCCESS(rc))
-        { /* likely */ }
+        /*
+         * Special read handling, so only read exactly what's needed.
+         * This is a highly unlikely scenario.
+         */
         else
+#endif
         {
-            Log(("iemOpcodeFetchMoreBytes: %RGv - read error - rc=%Rrc (!!)\n", GCPtrNext, rc));
-            return rc;
+            pVCpu->iem.s.CodeTlb.cTlbSlowReadPath++;
+            uint32_t const cbToRead = RT_MIN((uint32_t)cbDst, cbMaxRead);
+            VBOXSTRICTRC rcStrict = PGMPhysRead(pVCpu->CTX_SUFF(pVM), pTlbe->GCPhys + (GCPtrFirst & X86_PAGE_OFFSET_MASK),
+                                                pvDst, cbToRead, PGMACCESSORIGIN_IEM);
+            if (RT_LIKELY(rcStrict == VINF_SUCCESS))
+            { /* likely */ }
+            else if (PGM_PHYS_RW_IS_SUCCESS(rcStrict))
+            {
+                Log(("iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read status -  rcStrict=%Rrc\n",
+                     GCPtrFirst, pTlbe->GCPhys + (GCPtrFirst & X86_PAGE_OFFSET_MASK), VBOXSTRICTRC_VAL(rcStrict), cbToRead));
+                rcStrict = iemSetPassUpStatus(pVCpu, rcStrict);
+                AssertStmt(rcStrict == VINF_SUCCESS, longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), VBOXSTRICTRC_VAL(rcStrict)));
+            }
+            else
+            {
+                Log((RT_SUCCESS(rcStrict)
+                     ? "iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read status - rcStrict=%Rrc\n"
+                     : "iemOpcodeFetchMoreBytes: %RGv/%RGp LB %#x - read error - rcStrict=%Rrc (!!)\n",
+                     GCPtrFirst, pTlbe->GCPhys + (GCPtrFirst & X86_PAGE_OFFSET_MASK), VBOXSTRICTRC_VAL(rcStrict), cbToRead));
+                longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), VBOXSTRICTRC_VAL(rcStrict));
+            }
+            pVCpu->iem.s.offInstrNextByte = offBuf + cbToRead;
+            if (cbToRead == cbDst)
+                return;
         }
+
+        /*
+         * More to read, loop.
+         */
+        cbDst -= cbMaxRead;
+        pvDst  = (uint8_t *)pvDst + cbMaxRead;
     }
-    pVCpu->iem.s.cbOpcode += cbToTryRead;
-    Log5(("%.*Rhxs\n", pVCpu->iem.s.cbOpcode, pVCpu->iem.s.abOpcode));
-# endif
 }
 
 #else
@@ -5283,6 +5395,14 @@ DECL_NO_INLINE(IEM_STATIC, VBOXSTRICTRC) iemRaisePageFault(PVMCPU pVCpu, RTGCPTR
                              uErr, GCPtrWhere);
 }
 
+#ifdef IEM_WITH_SETJMP
+/** \#PF(n) - 0e, longjmp.  */
+IEM_STATIC DECL_NO_RETURN(void) iemRaisePageFaultJmp(PVMCPU pVCpu, RTGCPTR GCPtrWhere, uint32_t fAccess, int rc)
+{
+    longjmp(*CTX_SUFF(pVCpu->iem.s.pJmpBuf), VBOXSTRICTRC_VAL(iemRaisePageFault(pVCpu, GCPtrWhere, fAccess, rc)));
+}
+#endif
+
 
 /** \#MF(0) - 10.  */
 DECL_NO_INLINE(IEM_STATIC, VBOXSTRICTRC) iemRaiseMathFault(PVMCPU pVCpu)
@@ -7590,7 +7710,7 @@ DECLINLINE(void) iemMemPageUnmap(PVMCPU pVCpu, RTGCPHYS GCPhysMem, uint32_t fAcc
  */
 DECLINLINE(int) iemMapLookup(PVMCPU pVCpu, void *pvMem, uint32_t fAccess)
 {
-    Assert(pVCpu->iem.s.cActiveMappings < RT_ELEMENTS(pVCpu->iem.s.aMemMappings));
+    Assert(pVCpu->iem.s.cActiveMappings <= RT_ELEMENTS(pVCpu->iem.s.aMemMappings));
     fAccess &= IEM_ACCESS_WHAT_MASK | IEM_ACCESS_TYPE_MASK;
     if (   pVCpu->iem.s.aMemMappings[0].pv == pvMem
         && (pVCpu->iem.s.aMemMappings[0].fAccess & (IEM_ACCESS_WHAT_MASK | IEM_ACCESS_TYPE_MASK)) == fAccess)
@@ -9904,12 +10024,12 @@ IEM_STATIC VBOXSTRICTRC iemMemStackPushCommitSpecial(PVMCPU pVCpu, void *pvMem,
  *
  * @returns Strict VBox status code.
  * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
- * @param   cbMem               The number of bytes to push onto the stack.
+ * @param   cbMem               The number of bytes to pop from the stack.
  * @param   ppvMem              Where to return the pointer to the stack memory.
  * @param   puNewRsp            Where to return the new RSP value.  This must be
- *                              passed unchanged to
- *                              iemMemStackPopCommitSpecial() or applied
- *                              manually if iemMemStackPopDoneSpecial() is used.
+ *                              assigned to CPUMCTX::rsp manually some time
+ *                              after iemMemStackPopDoneSpecial() has been
+ *                              called.
  */
 IEM_STATIC VBOXSTRICTRC iemMemStackPopBeginSpecial(PVMCPU pVCpu, size_t cbMem, void const **ppvMem, uint64_t *puNewRsp)
 {
@@ -9927,17 +10047,17 @@ IEM_STATIC VBOXSTRICTRC iemMemStackPopBeginSpecial(PVMCPU pVCpu, size_t cbMem, v
  *
  * @returns Strict VBox status code.
  * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
- * @param   cbMem               The number of bytes to push onto the stack.
+ * @param   cbMem               The number of bytes to pop from the stack.
  * @param   ppvMem              Where to return the pointer to the stack memory.
  * @param   puNewRsp            Where to return the new RSP value.  This must be
- *                              passed unchanged to
- *                              iemMemStackPopCommitSpecial() or applied
- *                              manually if iemMemStackPopDoneSpecial() is used.
+ *                              assigned to CPUMCTX::rsp manually some time
+ *                              after iemMemStackPopDoneSpecial() has been
+ *                              called.
  */
 IEM_STATIC VBOXSTRICTRC iemMemStackPopContinueSpecial(PVMCPU pVCpu, size_t cbMem, void const **ppvMem, uint64_t *puNewRsp)
 {
     Assert(cbMem < UINT8_MAX);
-    PCPUMCTX    pCtx     = IEM_GET_CTX(pVCpu);
+    PCPUMCTX    pCtx = IEM_GET_CTX(pVCpu);
     RTUINT64U   NewRsp;
     NewRsp.u = *puNewRsp;
     RTGCPTR     GCPtrTop = iemRegGetRspForPopEx(pVCpu, pCtx, &NewRsp, 8);
@@ -9947,27 +10067,6 @@ IEM_STATIC VBOXSTRICTRC iemMemStackPopContinueSpecial(PVMCPU pVCpu, size_t cbMem
 
 
 /**
- * Commits a special stack pop (started by iemMemStackPopBeginSpecial).
- *
- * This will update the rSP.
- *
- * @returns Strict VBox status code.
- * @param   pVCpu               The cross context virtual CPU structure of the calling thread.
- * @param   pvMem               The pointer returned by
- *                              iemMemStackPopBeginSpecial().
- * @param   uNewRsp             The new RSP value returned by
- *                              iemMemStackPopBeginSpecial().
- */
-IEM_STATIC VBOXSTRICTRC iemMemStackPopCommitSpecial(PVMCPU pVCpu, void const *pvMem, uint64_t uNewRsp)
-{
-    VBOXSTRICTRC rcStrict = iemMemCommitAndUnmap(pVCpu, (void *)pvMem, IEM_ACCESS_STACK_R);
-    if (rcStrict == VINF_SUCCESS)
-        IEM_GET_CTX(pVCpu)->rsp = uNewRsp;
-    return rcStrict;
-}
-
-
-/**
  * Done with a special stack pop (started by iemMemStackPopBeginSpecial or
  * iemMemStackPopContinueSpecial).
  *
diff --git a/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp b/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
index 3114a42..d4ce733 100644
--- a/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
+++ b/src/VBox/VMM/VMMAll/IEMAllAImplC.cpp
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2011-2015 Oracle Corporation
+ * Copyright (C) 2011-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;
@@ -22,6 +22,7 @@
 #include "IEMInternal.h"
 #include <VBox/vmm/vm.h>
 #include <iprt/x86.h>
+#include <iprt/uint128.h>
 
 
 /*********************************************************************************************************************************
@@ -1127,40 +1128,193 @@ IEM_DECL_IMPL_DEF(void, iemAImpl_xchg_u64,(uint64_t *puMem, uint64_t *puReg))
 }
 
 
+#endif /* RT_ARCH_X86 */
+#ifdef RT_ARCH_X86
+
 /* multiplication and division */
 
+
 IEM_DECL_IMPL_DEF(int, iemAImpl_mul_u64,(uint64_t *pu64RAX, uint64_t *pu64RDX, uint64_t u64Factor, uint32_t *pfEFlags))
 {
-    AssertFailed();
-    return -1;
+    RTUINT128U Result;
+    RTUInt128MulU64ByU64(&Result, *pu64RAX, u64Factor);
+    *pu64RAX = Result.s.Lo;
+    *pu64RDX = Result.s.Hi;
+    /** @todo research the undefined MUL flags. */
+    return 0;
 }
 
 
 IEM_DECL_IMPL_DEF(int, iemAImpl_imul_u64,(uint64_t *pu64RAX, uint64_t *pu64RDX, uint64_t u64Factor, uint32_t *pfEFlags))
 {
-    AssertFailed();
-    return -1;
+/** @todo Testcase: IMUL 1 operand   */
+    RTUINT128U Result;
+    *pfEFlags &= ~(X86_EFL_SF | X86_EFL_CF | X86_EFL_OF);
+    if ((int64_t)*pu64RAX >= 0)
+    {
+        if ((int64_t)u64Factor >= 0)
+        {
+            RTUInt128MulU64ByU64(&Result, *pu64RAX, u64Factor);
+            if (Result.s.Hi != 0 || Result.s.Lo >= UINT64_C(0x8000000000000000))
+                *pfEFlags |= X86_EFL_CF | X86_EFL_OF;
+        }
+        else
+        {
+            RTUInt128MulU64ByU64(&Result, *pu64RAX, UINT64_C(0) - u64Factor);
+            if (Result.s.Hi != 0 || Result.s.Lo > UINT64_C(0x8000000000000000))
+                *pfEFlags |= X86_EFL_CF | X86_EFL_OF;
+            RTUInt128AssignNeg(&Result);
+        }
+    }
+    else
+    {
+        if ((int64_t)u64Factor >= 0)
+        {
+            RTUInt128MulU64ByU64(&Result, UINT64_C(0) - *pu64RAX, u64Factor);
+            if (Result.s.Hi != 0 || Result.s.Lo > UINT64_C(0x8000000000000000))
+                *pfEFlags |= X86_EFL_CF | X86_EFL_OF;
+            RTUInt128AssignNeg(&Result);
+        }
+        else
+        {
+            RTUInt128MulU64ByU64(&Result, UINT64_C(0) - *pu64RAX, UINT64_C(0) - u64Factor);
+            if (Result.s.Hi != 0 || Result.s.Lo >= UINT64_C(0x8000000000000000))
+                *pfEFlags |= X86_EFL_CF | X86_EFL_OF;
+        }
+    }
+    *pu64RAX = Result.s.Lo;
+    *pu64RDX = Result.s.Hi;
+    if (*pu64RAX & RT_BIT_64(63))
+        *pfEFlags |= X86_EFL_SF;
+
+    /** @todo research the undefined IMUL flags. */
+    return 0;
 }
 
 
 IEM_DECL_IMPL_DEF(void, iemAImpl_imul_two_u64,(uint64_t *puDst, uint64_t uSrc, uint32_t *pfEFlags))
 {
-    AssertFailed();
+/** @todo Testcase: IMUL 2 and 3 operands. */
+    uint64_t u64Ign;
+    iemAImpl_imul_u64(puDst, &u64Ign, uSrc, pfEFlags);
 }
 
 
 
 IEM_DECL_IMPL_DEF(int, iemAImpl_div_u64,(uint64_t *pu64RAX, uint64_t *pu64RDX, uint64_t u64Divisor, uint32_t *pfEFlags))
 {
-    AssertFailed();
-    return -1;
+    if (   u64Divisor != 0
+        && *pu64RDX < u64Divisor)
+    {
+        RTUINT128U Dividend;
+        Dividend.s.Lo = *pu64RAX;
+        Dividend.s.Hi = *pu64RDX;
+
+        RTUINT128U Divisor;
+        Divisor.s.Lo = u64Divisor;
+        Divisor.s.Hi = 0;
+
+        RTUINT128U Remainder;
+        RTUINT128U Quotient;
+# ifdef __GNUC__ /* GCC maybe really annoying in function. */
+        Quotient.s.Lo = 0;
+        Quotient.s.Hi = 0;
+# endif
+        RTUInt128DivRem(&Quotient, &Remainder, &Dividend, &Divisor);
+        Assert(Quotient.s.Hi == 0);
+        Assert(Remainder.s.Hi == 0);
+
+        *pu64RAX = Quotient.s.Lo;
+        *pu64RDX = Remainder.s.Lo;
+        /** @todo research the undefined DIV flags. */
+        return 0;
+
+    }
+    /* #DE */
+    return VERR_IEM_ASPECT_NOT_IMPLEMENTED;
 }
 
 
 IEM_DECL_IMPL_DEF(int, iemAImpl_idiv_u64,(uint64_t *pu64RAX, uint64_t *pu64RDX, uint64_t u64Divisor, uint32_t *pfEFlags))
 {
-    AssertFailed();
-    return -1;
+    if (u64Divisor != 0)
+    {
+        /*
+         * Convert to unsigned division.
+         */
+        RTUINT128U Dividend;
+        Dividend.s.Lo = *pu64RAX;
+        Dividend.s.Hi = *pu64RDX;
+        if ((int64_t)*pu64RDX < 0)
+            RTUInt128AssignNeg(&Dividend);
+
+        RTUINT128U Divisor;
+        Divisor.s.Hi = 0;
+        if ((int64_t)u64Divisor >= 0)
+            Divisor.s.Lo = u64Divisor;
+        else
+            Divisor.s.Lo = UINT64_C(0) - u64Divisor;
+
+        RTUINT128U Remainder;
+        RTUINT128U Quotient;
+# ifdef __GNUC__ /* GCC maybe really annoying in function. */
+        Quotient.s.Lo = 0;
+        Quotient.s.Hi = 0;
+# endif
+        RTUInt128DivRem(&Quotient, &Remainder, &Dividend, &Divisor);
+
+        /*
+         * Setup the result, checking for overflows.
+         */
+        if ((int64_t)u64Divisor >= 0)
+        {
+            if ((int64_t)*pu64RDX >= 0)
+            {
+                /* Positive divisor, positive dividend => result positive. */
+                if (Quotient.s.Hi == 0 && Quotient.s.Lo <= (uint64_t)INT64_MAX)
+                {
+                    *pu64RAX = Quotient.s.Lo;
+                    *pu64RDX = Remainder.s.Lo;
+                    return 0;
+                }
+            }
+            else
+            {
+                /* Positive divisor, positive dividend => result negative. */
+                if (Quotient.s.Hi == 0 && Quotient.s.Lo <= UINT64_C(0x8000000000000000))
+                {
+                    *pu64RAX = UINT64_C(0) - Quotient.s.Lo;
+                    *pu64RDX = UINT64_C(0) - Remainder.s.Lo;
+                    return 0;
+                }
+            }
+        }
+        else
+        {
+            if ((int64_t)*pu64RDX >= 0)
+            {
+                /* Negative divisor, positive dividend => negative quotient, positive remainder. */
+                if (Quotient.s.Hi == 0 && Quotient.s.Lo <= UINT64_C(0x8000000000000000))
+                {
+                    *pu64RAX = UINT64_C(0) - Quotient.s.Lo;
+                    *pu64RDX = Remainder.s.Lo;
+                    return 0;
+                }
+            }
+            else
+            {
+                /* Negative divisor, negative dividend => positive quotient, negative remainder. */
+                if (Quotient.s.Hi == 0 && Quotient.s.Lo <= (uint64_t)INT64_MAX)
+                {
+                    *pu64RAX = Quotient.s.Lo;
+                    *pu64RDX = UINT64_C(0) - Remainder.s.Lo;
+                    return 0;
+                }
+            }
+        }
+    }
+    /* #DE */
+    return VERR_IEM_ASPECT_NOT_IMPLEMENTED;
 }
 
 
diff --git a/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h b/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
index cc479fc..443f167 100644
--- a/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
+++ b/src/VBox/VMM/VMMAll/IEMAllCImpl.cpp.h
@@ -2161,6 +2161,11 @@ IEM_CIMPL_DEF_2(iemCImpl_retf, IEMMODE, enmEffOpSize, uint16_t, cbPop)
         uNewRip = uPtrFrame.pu64[0];
         uNewCs  = uPtrFrame.pu16[4];
     }
+    rcStrict = iemMemStackPopDoneSpecial(pVCpu, uPtrFrame.pv);
+    if (RT_LIKELY(rcStrict == VINF_SUCCESS))
+    { /* extremely likely */ }
+    else
+        return rcStrict;
 
     /*
      * Real mode and V8086 mode are easy.
@@ -2178,9 +2183,7 @@ IEM_CIMPL_DEF_2(iemCImpl_retf, IEMMODE, enmEffOpSize, uint16_t, cbPop)
             return iemRaiseSelectorBounds(pVCpu, X86_SREG_CS, IEM_ACCESS_INSTRUCTION);
 
         /* commit the operation. */
-        rcStrict = iemMemStackPopCommitSpecial(pVCpu, uPtrFrame.pv, uNewRsp);
-        if (rcStrict != VINF_SUCCESS)
-            return rcStrict;
+        pCtx->rsp           = uNewRsp;
         pCtx->rip           = uNewRip;
         pCtx->cs.Sel        = uNewCs;
         pCtx->cs.ValidSel   = uNewCs;
@@ -2265,30 +2268,34 @@ IEM_CIMPL_DEF_2(iemCImpl_retf, IEMMODE, enmEffOpSize, uint16_t, cbPop)
     if ((uNewCs & X86_SEL_RPL) != pVCpu->iem.s.uCpl)
     {
         /* Read the outer stack pointer stored *after* the parameters. */
-        RTCPTRUNION uPtrStack;
-        rcStrict = iemMemStackPopContinueSpecial(pVCpu, cbPop + cbRetPtr, &uPtrStack.pv, &uNewRsp);
+        rcStrict = iemMemStackPopContinueSpecial(pVCpu, cbPop + cbRetPtr, &uPtrFrame.pv, &uNewRsp);
         if (rcStrict != VINF_SUCCESS)
             return rcStrict;
 
-        uPtrStack.pu8 += cbPop; /* Skip the parameters. */
+        uPtrFrame.pu8 += cbPop; /* Skip the parameters. */
 
         uint16_t uNewOuterSs;
         uint64_t uNewOuterRsp;
         if (enmEffOpSize == IEMMODE_16BIT)
         {
-            uNewOuterRsp = uPtrStack.pu16[0];
-            uNewOuterSs  = uPtrStack.pu16[1];
+            uNewOuterRsp = uPtrFrame.pu16[0];
+            uNewOuterSs  = uPtrFrame.pu16[1];
         }
         else if (enmEffOpSize == IEMMODE_32BIT)
         {
-            uNewOuterRsp = uPtrStack.pu32[0];
-            uNewOuterSs  = uPtrStack.pu16[2];
+            uNewOuterRsp = uPtrFrame.pu32[0];
+            uNewOuterSs  = uPtrFrame.pu16[2];
         }
         else
         {
-            uNewOuterRsp = uPtrStack.pu64[0];
-            uNewOuterSs  = uPtrStack.pu16[4];
+            uNewOuterRsp = uPtrFrame.pu64[0];
+            uNewOuterSs  = uPtrFrame.pu16[4];
         }
+        rcStrict = iemMemStackPopDoneSpecial(pVCpu, uPtrFrame.pv);
+        if (RT_LIKELY(rcStrict == VINF_SUCCESS))
+        { /* extremely likely */ }
+        else
+            return rcStrict;
 
         /* Check for NULL stack selector (invalid in ring-3 and non-long mode)
            and read the selector. */
@@ -2410,9 +2417,7 @@ IEM_CIMPL_DEF_2(iemCImpl_retf, IEMMODE, enmEffOpSize, uint16_t, cbPop)
         }
 
         /* commit */
-        rcStrict = iemMemStackPopCommitSpecial(pVCpu, uPtrFrame.pv, uNewRsp);
-        if (rcStrict != VINF_SUCCESS)
-            return rcStrict;
+        pCtx->rsp               = uNewRsp;
         if (enmEffOpSize == IEMMODE_16BIT)
             pCtx->rip           = uNewRip & UINT16_MAX; /** @todo Testcase: When exactly does this occur? With call it happens prior to the limit check according to Intel... */
         else
@@ -2497,9 +2502,7 @@ IEM_CIMPL_DEF_2(iemCImpl_retf, IEMMODE, enmEffOpSize, uint16_t, cbPop)
         }
 
         /* commit */
-        rcStrict = iemMemStackPopCommitSpecial(pVCpu, uPtrFrame.pv, uNewRsp);
-        if (rcStrict != VINF_SUCCESS)
-            return rcStrict;
+        pCtx->rsp           = uNewRsp;
         if (enmEffOpSize == IEMMODE_16BIT)
             pCtx->rip       = uNewRip & UINT16_MAX; /** @todo Testcase: When exactly does this occur? With call it happens prior to the limit check according to Intel... */
         else
@@ -2861,6 +2864,12 @@ IEM_CIMPL_DEF_1(iemCImpl_iret_real_v8086, IEMMODE, enmEffOpSize)
         if (IEM_GET_TARGET_CPU(pVCpu) == IEMTARGETCPU_286)
             uNewFlags &= ~(X86_EFL_NT | X86_EFL_IOPL);
     }
+    rcStrict = iemMemStackPopDoneSpecial(pVCpu, uFrame.pv);
+    if (RT_LIKELY(rcStrict == VINF_SUCCESS))
+    { /* extremely likely */ }
+    else
+        return rcStrict;
+
     /** @todo Check how this is supposed to work if sp=0xfffe. */
     Log7(("iemCImpl_iret_real_v8086: uNewCs=%#06x uNewRip=%#010x uNewFlags=%#x uNewRsp=%#18llx\n",
           uNewCs, uNewEip, uNewFlags, uNewRsp));
@@ -2903,14 +2912,11 @@ IEM_CIMPL_DEF_1(iemCImpl_iret_real_v8086, IEMMODE, enmEffOpSize)
     /*
      * Commit the operation.
      */
-    rcStrict = iemMemStackPopCommitSpecial(pVCpu, uFrame.pv, uNewRsp);
-    if (rcStrict != VINF_SUCCESS)
-        return rcStrict;
 #ifdef DBGFTRACE_ENABLED
     RTTraceBufAddMsgF(pVCpu->CTX_SUFF(pVM)->CTX_SUFF(hTraceBuf), "iret/rm %04x:%04x -> %04x:%04x %x %04llx",
                       pCtx->cs.Sel, pCtx->eip, uNewCs, uNewEip, uNewFlags, uNewRsp);
 #endif
-
+    pCtx->rsp           = uNewRsp;
     pCtx->rip           = uNewEip;
     pCtx->cs.Sel        = uNewCs;
     pCtx->cs.ValidSel   = uNewCs;
@@ -3122,8 +3128,10 @@ IEM_CIMPL_DEF_1(iemCImpl_iret_prot, IEMMODE, enmEffOpSize)
         uNewCs     = uFrame.pu16[1];
         uNewFlags  = uFrame.pu16[2];
     }
-    rcStrict = iemMemCommitAndUnmap(pVCpu, (void *)uFrame.pv, IEM_ACCESS_STACK_R); /* don't use iemMemStackPopCommitSpecial here. */
-    if (rcStrict != VINF_SUCCESS)
+    rcStrict = iemMemStackPopDoneSpecial(pVCpu, (void *)uFrame.pv); /* don't use iemMemStackPopCommitSpecial here. */
+    if (RT_LIKELY(rcStrict == VINF_SUCCESS))
+    { /* extremely likely */ }
+    else
         return rcStrict;
     Log7(("iemCImpl_iret_prot: uNewCs=%#06x uNewEip=%#010x uNewFlags=%#x uNewRsp=%#18llx\n", uNewCs, uNewEip, uNewFlags, uNewRsp));
 
@@ -3519,8 +3527,10 @@ IEM_CIMPL_DEF_1(iemCImpl_iret_64bit, IEMMODE, enmEffOpSize)
         uNewRsp    = uFrame.pu16[3];
         uNewSs     = uFrame.pu16[4];
     }
-    rcStrict = iemMemCommitAndUnmap(pVCpu, (void *)uFrame.pv, IEM_ACCESS_STACK_R); /* don't use iemMemStackPopCommitSpecial here. */
-    if (rcStrict != VINF_SUCCESS)
+    rcStrict = iemMemStackPopDoneSpecial(pVCpu, (void *)uFrame.pv); /* don't use iemMemStackPopCommitSpecial here. */
+    if (RT_LIKELY(rcStrict == VINF_SUCCESS))
+    { /* extremely like */ }
+    else
         return rcStrict;
     Log7(("iretq stack: cs:rip=%04x:%016RX64 rflags=%016RX64 ss:rsp=%04x:%016RX64\n", uNewCs, uNewRip, uNewFlags, uNewSs, uNewRsp));
 
diff --git a/src/VBox/VMM/VMMAll/PATMAll.cpp b/src/VBox/VMM/VMMAll/PATMAll.cpp
index f20eaf1..cc55f33 100644
--- a/src/VBox/VMM/VMMAll/PATMAll.cpp
+++ b/src/VBox/VMM/VMMAll/PATMAll.cpp
@@ -167,8 +167,9 @@ VMM_INT_DECL(void) PATMRawLeave(PVM pVM, PCPUMCTX pCtx, int rawRC)
     CTXSUFF(pVM->patm.s.pGCState)->uVMFlags = X86_EFL_IF;
 
 #ifdef IN_RING3
-    AssertReleaseMsg((efl & X86_EFL_IF) || fPatchCode || rawRC == VINF_PATM_PENDING_IRQ_AFTER_IRET
-                     || rawRC == VINF_EM_RESCHEDULE || rawRC == VINF_EM_RESCHEDULE_REM || RT_FAILURE(rawRC),
+    AssertReleaseMsg((efl & X86_EFL_IF) || fPatchCode   || rawRC == VINF_PATM_PENDING_IRQ_AFTER_IRET
+                     || rawRC == VINF_EM_RESCHEDULE     || rawRC == VINF_EM_RESCHEDULE_REM
+                     || rawRC == VINF_EM_RAW_GUEST_TRAP || RT_FAILURE(rawRC),
                      ("Inconsistent state at %RRv rc=%Rrc\n", pCtx->eip, rawRC));
     AssertReleaseMsg(CTXSUFF(pVM->patm.s.pGCState)->fPIF || fPatchCode || RT_FAILURE(rawRC), ("fPIF=%d eip=%RRv rc=%Rrc\n", CTXSUFF(pVM->patm.s.pGCState)->fPIF, pCtx->eip, rawRC));
     if (   (efl & X86_EFL_IF)
diff --git a/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp b/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp
index 9f24c56..03e7c7e 100644
--- a/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp
+++ b/src/VBox/VMM/VMMAll/PDMAllCritSect.cpp
@@ -681,10 +681,11 @@ VMMDECL(int) PDMCritSectLeave(PPDMCRITSECT pCritSect)
             /* darn, someone raced in on us. */
             ASMAtomicWriteHandle(&pCritSect->s.Core.NativeThreadOwner, hNativeThread);
             STAM_PROFILE_ADV_START(&pCritSect->s.StatLocked, l);
-            Assert(pCritSect->s.Core.cNestings == 0);
 # ifdef PDMCRITSECT_WITH_LESS_ATOMIC_STUFF
             //pCritSect->s.Core.cNestings = 1;
+            Assert(pCritSect->s.Core.cNestings == 1);
 # else
+            //Assert(pCritSect->s.Core.cNestings == 0);
             ASMAtomicWriteS32(&pCritSect->s.Core.cNestings, 1);
 # endif
         }
diff --git a/src/VBox/VMM/VMMAll/PGMAll.cpp b/src/VBox/VMM/VMMAll/PGMAll.cpp
index 020aa28..b686798 100644
--- a/src/VBox/VMM/VMMAll/PGMAll.cpp
+++ b/src/VBox/VMM/VMMAll/PGMAll.cpp
@@ -23,6 +23,7 @@
 #include <VBox/vmm/pgm.h>
 #include <VBox/vmm/cpum.h>
 #include <VBox/vmm/selm.h>
+#include <VBox/vmm/iem.h>
 #include <VBox/vmm/iom.h>
 #include <VBox/sup.h>
 #include <VBox/vmm/mm.h>
@@ -730,6 +731,7 @@ VMMDECL(int) PGMInvalidatePage(PVMCPU pVCpu, RTGCPTR GCPtrPage)
      */
     REMNotifyInvalidatePage(pVM, GCPtrPage);
 #endif /* !IN_RING3 */
+    IEMTlbInvalidatePage(pVCpu, GCPtrPage);
 
 
 #ifdef IN_RC
@@ -2020,6 +2022,7 @@ VMMDECL(int) PGMFlushTLB(PVMCPU pVCpu, uint64_t cr3, bool fGlobal)
             STAM_COUNTER_INC(&pVCpu->pgm.s.CTX_SUFF(pStats)->CTX_MID_Z(Stat,FlushTLBSameCR3));
     }
 
+    IEMTlbInvalidateAll(pVCpu, false /*fVmm*/);
     STAM_PROFILE_STOP(&pVCpu->pgm.s.CTX_SUFF(pStats)->CTX_MID_Z(Stat,FlushTLB), a);
     return rc;
 }
diff --git a/src/VBox/VMM/VMMAll/PGMAllPhys.cpp b/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
index e0b9caa..a95e30c 100644
--- a/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
+++ b/src/VBox/VMM/VMMAll/PGMAllPhys.cpp
@@ -4376,6 +4376,145 @@ VMM_INT_DECL(PGMPAGETYPE) PGMPhysGetPageType(PVM pVM, RTGCPHYS GCPhys)
 }
 
 
+/**
+ * Converts a GC physical address to a HC ring-3 pointer, with some
+ * additional checks.
+ *
+ * @returns VBox status code (no informational statuses).
+ *
+ * @param   pVM             The cross context VM structure.
+ * @param   pVCpu           The cross context virtual CPU structure of the
+ *                          calling EMT.
+ * @param   GCPhys          The GC physical address to convert.  This API mask
+ *                          the A20 line when necessary.
+ * @param   puTlbPhysRev    Where to read the physical TLB revision.  Needs to
+ *                          be done while holding the PGM lock.
+ * @param   ppb             Where to store the pointer corresponding to GCPhys
+ *                          on success.
+ * @param   pfTlb           The TLB flags and revision.  We only add stuff.
+ *
+ * @remarks This is more or a less a copy of PGMR3PhysTlbGCPhys2Ptr and
+ *          PGMPhysIemGCPhys2Ptr.
+ *
+ * @thread  EMT(pVCpu).
+ */
+VMM_INT_DECL(int) PGMPhysIemGCPhys2PtrNoLock(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, uint64_t const volatile *puTlbPhysRev,
+#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
+                                             R3PTRTYPE(uint8_t *) *ppb,
+#else
+                                             R3R0PTRTYPE(uint8_t *) *ppb,
+#endif
+                                             uint64_t *pfTlb)
+{
+    PGM_A20_APPLY_TO_VAR(pVCpu, GCPhys);
+    Assert(!(GCPhys & X86_PAGE_OFFSET_MASK));
+
+    pgmLock(pVM);
+
+    PPGMRAMRANGE pRam;
+    PPGMPAGE pPage;
+    int rc = pgmPhysGetPageAndRangeEx(pVM, GCPhys, &pPage, &pRam);
+    if (RT_SUCCESS(rc))
+    {
+        if (!PGM_PAGE_IS_BALLOONED(pPage))
+        {
+            if (!PGM_PAGE_IS_SPECIAL_ALIAS_MMIO(pPage))
+            {
+                if (!PGM_PAGE_HAS_ANY_HANDLERS(pPage))
+                {
+                    /*
+                     * No access handler.
+                     */
+                    switch (PGM_PAGE_GET_STATE(pPage))
+                    {
+                        case PGM_PAGE_STATE_ALLOCATED:
+                            *pfTlb |= *puTlbPhysRev;
+                            break;
+                        case PGM_PAGE_STATE_BALLOONED:
+                            AssertFailed();
+                        case PGM_PAGE_STATE_ZERO:
+                        case PGM_PAGE_STATE_SHARED:
+                        case PGM_PAGE_STATE_WRITE_MONITORED:
+                            *pfTlb |= *puTlbPhysRev | PGMIEMGCPHYS2PTR_F_NO_WRITE;
+                            break;
+                    }
+#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
+                    *pfTlb |= PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3;
+                    *ppb = NULL;
+#else
+                    PPGMPAGER3MAPTLBE pTlbe;
+                    rc = pgmPhysPageQueryTlbeWithPage(pVM, pPage, GCPhys, &pTlbe);
+                    AssertLogRelRCReturn(rc, rc);
+                    *ppb = (uint8_t *)pTlbe->pv;
+#endif
+                }
+                else if (PGM_PAGE_HAS_ACTIVE_ALL_HANDLERS(pPage))
+                {
+                    /*
+                     * MMIO or similar all access handler: Catch all access.
+                     */
+                    *pfTlb |= *puTlbPhysRev
+                           | PGMIEMGCPHYS2PTR_F_NO_WRITE | PGMIEMGCPHYS2PTR_F_NO_READ | PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3;
+                    *ppb   = NULL;
+                }
+                else
+                {
+                    /*
+                     * Write access handler: Catch write accesses if active.
+                     */
+                    if (PGM_PAGE_HAS_ACTIVE_HANDLERS(pPage))
+                        *pfTlb |= *puTlbPhysRev | PGMIEMGCPHYS2PTR_F_NO_WRITE;
+                    else
+                        switch (PGM_PAGE_GET_STATE(pPage))
+                        {
+                            case PGM_PAGE_STATE_ALLOCATED:
+                                *pfTlb |= *puTlbPhysRev;
+                                break;
+                            case PGM_PAGE_STATE_BALLOONED:
+                                AssertFailed();
+                            case PGM_PAGE_STATE_ZERO:
+                            case PGM_PAGE_STATE_SHARED:
+                            case PGM_PAGE_STATE_WRITE_MONITORED:
+                                *pfTlb |= *puTlbPhysRev | PGMIEMGCPHYS2PTR_F_NO_WRITE;
+                                break;
+                        }
+#if defined(IN_RC) || defined(VBOX_WITH_2X_4GB_ADDR_SPACE_IN_R0)
+                    *pfTlb |= PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3;
+                    *ppb = NULL;
+#else
+                    PPGMPAGER3MAPTLBE pTlbe;
+                    rc = pgmPhysPageQueryTlbeWithPage(pVM, pPage, GCPhys, &pTlbe);
+                    AssertLogRelRCReturn(rc, rc);
+                    *ppb = (uint8_t *)pTlbe->pv;
+#endif
+                }
+            }
+            else
+            {
+                /* Alias MMIO: For now, we catch all access.  */
+                *pfTlb |= *puTlbPhysRev
+                       |  PGMIEMGCPHYS2PTR_F_NO_WRITE | PGMIEMGCPHYS2PTR_F_NO_READ | PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3;
+                *ppb    = NULL;
+            }
+        }
+        else
+        {
+            /* Ballooned: Shouldn't get here, but we read zero page via PGMPhysRead and writes goes to /dev/null. */
+            *pfTlb |= *puTlbPhysRev | PGMIEMGCPHYS2PTR_F_NO_WRITE | PGMIEMGCPHYS2PTR_F_NO_READ | PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3;
+            *ppb    = NULL;
+        }
+        Log6(("PGMPhysIemGCPhys2PtrNoLock: GCPhys=%RGp *ppb=%p *pfTlb=%#RX64 pPage=%R[pgmpage]\n", GCPhys, *ppb, *pfTlb, pPage));
+    }
+    else
+    {
+        *pfTlb |= *puTlbPhysRev | PGMIEMGCPHYS2PTR_F_NO_WRITE | PGMIEMGCPHYS2PTR_F_NO_READ | PGMIEMGCPHYS2PTR_F_NO_MAPPINGR3;
+        *ppb    = NULL;
+        Log6(("PGMPhysIemGCPhys2PtrNoLock: GCPhys=%RGp *ppb=%p *pfTlb=%#RX64 (rc=%Rrc)\n", GCPhys, *ppb, *pfTlb, rc));
+    }
+
+    pgmUnlock(pVM);
+    return VINF_SUCCESS;
+}
 
 
 /**
diff --git a/src/VBox/VMM/VMMAll/TRPMAll.cpp b/src/VBox/VMM/VMMAll/TRPMAll.cpp
index 085b358..76a5f4f 100644
--- a/src/VBox/VMM/VMMAll/TRPMAll.cpp
+++ b/src/VBox/VMM/VMMAll/TRPMAll.cpp
@@ -38,7 +38,6 @@
 #include <iprt/asm-amd64-x86.h>
 #include <iprt/param.h>
 #include <iprt/x86.h>
-#include "internal/pgm.h"
 
 
 
diff --git a/src/VBox/VMM/VMMR0/HMSVMR0.cpp b/src/VBox/VMM/VMMR0/HMSVMR0.cpp
index fbd06fe..477dae3 100644
--- a/src/VBox/VMM/VMMR0/HMSVMR0.cpp
+++ b/src/VBox/VMM/VMMR0/HMSVMR0.cpp
@@ -3262,7 +3262,6 @@ static void hmR0SvmPostRunGuest(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PSVMT
     if (!(pVmcb->ctrl.u32InterceptCtrl1 & SVM_CTRL1_INTERCEPT_RDTSC))
         TMCpuTickSetLastSeen(pVCpu, ASMReadTSC() + pVmcb->ctrl.u64TSCOffset);
 
-
     if (pSvmTransient->fRestoreTscAuxMsr)
     {
         uint64_t u64GuestTscAuxMsr = ASMRdMsr(MSR_K8_TSC_AUX);
diff --git a/src/VBox/VMM/VMMR0/HMVMXR0.cpp b/src/VBox/VMM/VMMR0/HMVMXR0.cpp
index 95ee45b..b6dde8c 100644
--- a/src/VBox/VMM/VMMR0/HMVMXR0.cpp
+++ b/src/VBox/VMM/VMMR0/HMVMXR0.cpp
@@ -4902,6 +4902,7 @@ static int hmR0VmxSetupVMRunHandler(PVMCPU pVCpu, PCPUMCTX pMixedCtx)
             /* Mark that we've switched to 64-bit handler, we can't safely switch back to 32-bit for
                the rest of the VM run (until VM reset). See @bugref{8432#c7}. */
             pVCpu->hm.s.vmx.fSwitchedTo64on32 = true;
+            Log4(("Load[%RU32]: hmR0VmxSetupVMRunHandler: selected 64-bit switcher\n", pVCpu->idCpu));
         }
 #else
         /* 64-bit host. */
@@ -4922,23 +4923,31 @@ static int hmR0VmxSetupVMRunHandler(PVMCPU pVCpu, PCPUMCTX pMixedCtx)
                                              | HM_CHANGED_GUEST_EFER_MSR), ("flags=%#x\n", HMCPU_CF_VALUE(pVCpu)));
         }
 # ifdef VBOX_ENABLE_64_BITS_GUESTS
-        /* Keep using the 64-bit switcher even though we're in 32-bit because of bad Intel design. See @bugref{8432#c7}.
-         * Except if Real-on-V86 is active, clear the 64-bit switcher flag because now we know the guest is in a sane
-         * state where it's safe to use the 32-bit switcher again.
+        /*
+         * Keep using the 64-bit switcher even though we're in 32-bit because of bad Intel design, see @bugref{8432#c7}.
+         * If real-on-v86 mode is active, clear the 64-bit switcher flag because now we know the guest is in a sane
+         * state where it's safe to use the 32-bit switcher. Otherwise check the guest state if it's safe to use
+         * the much faster 32-bit switcher again.
          */
-        if (pVCpu->hm.s.vmx.RealMode.fRealOnV86Active)
-            pVCpu->hm.s.vmx.fSwitchedTo64on32 = false;
-
         if (!pVCpu->hm.s.vmx.fSwitchedTo64on32)
+        {
+            if (pVCpu->hm.s.vmx.pfnStartVM != VMXR0StartVM32)
+                Log4(("Load[%RU32]: hmR0VmxSetupVMRunHandler: selected 32-bit switcher\n", pVCpu->idCpu));
             pVCpu->hm.s.vmx.pfnStartVM = VMXR0StartVM32;
+        }
         else
         {
-            Assert(!pVCpu->hm.s.vmx.RealMode.fRealOnV86Active);
             Assert(pVCpu->hm.s.vmx.pfnStartVM == VMXR0SwitcherStartVM64);
-            if (hmR0VmxIs32BitSwitcherSafe(pVCpu, pMixedCtx))
+            if (   pVCpu->hm.s.vmx.RealMode.fRealOnV86Active
+                || hmR0VmxIs32BitSwitcherSafe(pVCpu, pMixedCtx))
             {
                 pVCpu->hm.s.vmx.fSwitchedTo64on32 = false;
                 pVCpu->hm.s.vmx.pfnStartVM = VMXR0StartVM32;
+                HMCPU_CF_SET(pVCpu,   HM_CHANGED_GUEST_EFER_MSR
+                                    | HM_CHANGED_VMX_ENTRY_CTLS
+                                    | HM_CHANGED_VMX_EXIT_CTLS
+                                    | HM_CHANGED_HOST_CONTEXT);
+                Log4(("Load[%RU32]: hmR0VmxSetupVMRunHandler: selected 32-bit switcher (safe)\n", pVCpu->idCpu));
             }
         }
 # else
@@ -5090,8 +5099,11 @@ static void hmR0VmxReportWorldSwitchError(PVM pVM, PVMCPU pVCpu, int rcVMRun, PC
                 Log4(("Old Guest Rsp %#RX64 New %#RX64\n", pCtx->rsp, u64Val));
                 rc = VMXReadVmcs32(VMX_VMCS_GUEST_RFLAGS, &u32Val);         AssertRC(rc);
                 Log4(("Old Guest Rflags %#RX32 New %#RX32\n", pCtx->eflags.u32, u32Val));
-                rc = VMXReadVmcs32(VMX_VMCS16_VPID, &u32Val);               AssertRC(rc);
-                Log4(("VMX_VMCS16_VPID  %u\n", u32Val));
+                if (pVM->hm.s.vmx.fVpid)
+                {
+                    rc = VMXReadVmcs32(VMX_VMCS16_VPID, &u32Val);           AssertRC(rc);
+                    Log4(("VMX_VMCS16_VPID  %u\n", u32Val));
+                }
 
                 /* Host bits. */
                 rc = VMXReadVmcsHstN(VMX_VMCS_HOST_CR0, &uHCReg);           AssertRC(rc);
@@ -5282,6 +5294,7 @@ VMMR0DECL(int) VMXR0Execute64BitsHandler(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, H
 
     /* Clear VMCS. Marking it inactive, clearing implementation-specific data and writing VMCS data back to memory. */
     VMXClearVmcs(pVCpu->hm.s.vmx.HCPhysVmcs);
+    pVCpu->hm.s.vmx.uVmcsState = HMVMX_VMCS_STATE_CLEAR;
 
     /* Leave VMX Root Mode. */
     VMXDisable();
@@ -5315,6 +5328,7 @@ VMMR0DECL(int) VMXR0Execute64BitsHandler(PVM pVM, PVMCPU pVCpu, PCPUMCTX pCtx, H
 
     rc2 = VMXActivateVmcs(pVCpu->hm.s.vmx.HCPhysVmcs);
     AssertRC(rc2);
+    pVCpu->hm.s.vmx.uVmcsState = HMVMX_VMCS_STATE_ACTIVE;
     Assert(!(ASMGetFlags() & X86_EFL_IF));
     ASMSetFlags(fOldEFlags);
     return rc;
@@ -8744,12 +8758,12 @@ static void hmR0VmxPreRunGuestCommitted(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCt
     /*
      * Load the host state bits as we may've been preempted (only happens when
      * thread-context hooks are used or when hmR0VmxSetupVMRunHandler() changes pfnStartVM).
+     * Note that the 64-on-32 switcher saves the (64-bit) host state into the VMCS and
+     * if we change the switcher back to 32-bit, we *must* save the 32-bit host state here.
+     * See @bugref{8432}.
      */
-    /** @todo Why should hmR0VmxSetupVMRunHandler() changing pfnStartVM have
-     *        any effect to the host state needing to be saved? */
     if (HMCPU_CF_IS_PENDING(pVCpu, HM_CHANGED_HOST_CONTEXT))
     {
-        /* This ASSUMES that pfnStartVM has been set up already. */
         int rc = hmR0VmxSaveHostState(pVM, pVCpu);
         AssertRC(rc);
         STAM_COUNTER_INC(&pVCpu->hm.s.StatSwitchPreemptSaveHostState);
@@ -8892,7 +8906,13 @@ static void hmR0VmxPostRunGuest(PVM pVM, PVMCPU pVCpu, PCPUMCTX pMixedCtx, PVMXT
 #if HC_ARCH_BITS == 64
     pVCpu->hm.s.vmx.fRestoreHostFlags |= VMX_RESTORE_HOST_REQUIRED;   /* Host state messed up by VT-x, we must restore. */
 #endif
+#if HC_ARCH_BITS == 32 && defined(VBOX_ENABLE_64_BITS_GUESTS)
+    /* The 64-on-32 switcher maintains uVmcsState on its own and we need to leave it alone here. */
+    if (pVCpu->hm.s.vmx.pfnStartVM != VMXR0SwitcherStartVM64)
+        pVCpu->hm.s.vmx.uVmcsState |= HMVMX_VMCS_STATE_LAUNCHED;      /* Use VMRESUME instead of VMLAUNCH in the next run. */
+#else
     pVCpu->hm.s.vmx.uVmcsState |= HMVMX_VMCS_STATE_LAUNCHED;          /* Use VMRESUME instead of VMLAUNCH in the next run. */
+#endif
 #ifdef VBOX_STRICT
     hmR0VmxCheckHostEferMsr(pVCpu);                                   /* Verify that VMRUN/VMLAUNCH didn't modify host EFER. */
 #endif
diff --git a/src/VBox/VMM/VMMR3/CPUM.cpp b/src/VBox/VMM/VMMR3/CPUM.cpp
index 9bf7e17..9c34134 100644
--- a/src/VBox/VMM/VMMR3/CPUM.cpp
+++ b/src/VBox/VMM/VMMR3/CPUM.cpp
@@ -131,7 +131,6 @@
 #include <iprt/mem.h>
 #include <iprt/mp.h>
 #include <iprt/string.h>
-#include "internal/pgm.h"
 
 
 /*********************************************************************************************************************************
diff --git a/src/VBox/VMM/VMMR3/CSAM.cpp b/src/VBox/VMM/VMMR3/CSAM.cpp
index 2ed1ff7..b18fcd7 100644
--- a/src/VBox/VMM/VMMR3/CSAM.cpp
+++ b/src/VBox/VMM/VMMR3/CSAM.cpp
@@ -65,7 +65,6 @@
 #include <VBox/disopcode.h>
 #include <iprt/assert.h>
 #include <iprt/string.h>
-#include "internal/pgm.h"
 
 
 /* Enabled by default */
diff --git a/src/VBox/VMM/VMMR3/DBGFAddr.cpp b/src/VBox/VMM/VMMR3/DBGFAddr.cpp
index c709e7c..164ef6b 100644
--- a/src/VBox/VMM/VMMR3/DBGFAddr.cpp
+++ b/src/VBox/VMM/VMMR3/DBGFAddr.cpp
@@ -32,7 +32,6 @@
 #include <VBox/param.h>
 #include <VBox/err.h>
 #include <VBox/log.h>
-#include "internal/pgm.h"
 
 
 
diff --git a/src/VBox/VMM/VMMR3/DBGFDisas.cpp b/src/VBox/VMM/VMMR3/DBGFDisas.cpp
index 6e15d2d..6fce7ec 100644
--- a/src/VBox/VMM/VMMR3/DBGFDisas.cpp
+++ b/src/VBox/VMM/VMMR3/DBGFDisas.cpp
@@ -35,7 +35,6 @@
 #include <VBox/param.h>
 #include <VBox/vmm/vm.h>
 #include <VBox/vmm/uvm.h>
-#include "internal/pgm.h"
 
 #include <VBox/log.h>
 #include <iprt/assert.h>
diff --git a/src/VBox/VMM/VMMR3/EM.cpp b/src/VBox/VMM/VMMR3/EM.cpp
index e204978..22a1fb0 100644
--- a/src/VBox/VMM/VMMR3/EM.cpp
+++ b/src/VBox/VMM/VMMR3/EM.cpp
@@ -1989,15 +1989,6 @@ int emR3ForcedActions(PVM pVM, PVMCPU pVCpu, int rc)
                 /* Reschedule required: We must not miss the wakeup below! */
                 fWakeupPending = true;
             }
-#ifdef VBOX_WITH_REM
-            /** @todo really ugly; if we entered the hlt state when exiting the recompiler and an interrupt was pending, we previously got stuck in the halted state. */
-            else if (REMR3QueryPendingInterrupt(pVM, pVCpu) != REM_NO_PENDING_IRQ)
-            {
-                Log2(("REMR3QueryPendingInterrupt -> %#x\n", REMR3QueryPendingInterrupt(pVM, pVCpu)));
-                rc2 = VINF_EM_RESCHEDULE_REM;
-                UPDATE_RC();
-            }
-#endif
         }
 
         /*
diff --git a/src/VBox/VMM/VMMR3/EMRaw.cpp b/src/VBox/VMM/VMMR3/EMRaw.cpp
index f3547b5..cc42704 100644
--- a/src/VBox/VMM/VMMR3/EMRaw.cpp
+++ b/src/VBox/VMM/VMMR3/EMRaw.cpp
@@ -1303,9 +1303,6 @@ int emR3RawExecute(PVM pVM, PVMCPU pVCpu, bool *pfFFDone)
          * Check various preconditions.
          */
 #ifdef VBOX_STRICT
-# ifdef VBOX_WITH_REM
-        Assert(REMR3QueryPendingInterrupt(pVM, pVCpu) == REM_NO_PENDING_IRQ);
-# endif
         Assert(pCtx->eflags.Bits.u1VM || (pCtx->ss.Sel & X86_SEL_RPL) == 3 || (pCtx->ss.Sel & X86_SEL_RPL) == 0
                || (EMIsRawRing1Enabled(pVM) && (pCtx->ss.Sel & X86_SEL_RPL) == 1));
         AssertMsg(   (pCtx->eflags.u32 & X86_EFL_IF)
diff --git a/src/VBox/VMM/VMMR3/FTM.cpp b/src/VBox/VMM/VMMR3/FTM.cpp
index 46f5f8a..e04f6c2 100644
--- a/src/VBox/VMM/VMMR3/FTM.cpp
+++ b/src/VBox/VMM/VMMR3/FTM.cpp
@@ -42,8 +42,6 @@
 #include <iprt/semaphore.h>
 #include <iprt/asm.h>
 
-#include "internal/pgm.h"
-
 
 /*******************************************************************************
  * Structures and Typedefs                                                     *
diff --git a/src/VBox/VMM/VMMR3/GIM.cpp b/src/VBox/VMM/VMMR3/GIM.cpp
index 69174a4..b286547 100644
--- a/src/VBox/VMM/VMMR3/GIM.cpp
+++ b/src/VBox/VMM/VMMR3/GIM.cpp
@@ -93,7 +93,6 @@ VMMR3_INT_DECL(int) GIMR3Init(PVM pVM)
     AssertCompile(sizeof(pVM->gim.s) <= sizeof(pVM->gim.padding));
     AssertCompile(sizeof(pVM->aCpus[0].gim.s) <= sizeof(pVM->aCpus[0].gim.padding));
 
-
     /*
      * Initialize members.
      */
diff --git a/src/VBox/VMM/VMMR3/GIMHv.cpp b/src/VBox/VMM/VMMR3/GIMHv.cpp
index 4d9ceae..1bb47e2 100644
--- a/src/VBox/VMM/VMMR3/GIMHv.cpp
+++ b/src/VBox/VMM/VMMR3/GIMHv.cpp
@@ -556,6 +556,7 @@ VMMR3_INT_DECL(void) gimR3HvReset(PVM pVM)
         PVMCPU pVCpu = &pVM->aCpus[i];
         pVCpu->gim.s.u.HvCpu.uSint2Msr = MSR_GIM_HV_SINT_MASKED_BIT;
         pVCpu->gim.s.u.HvCpu.uSimpMsr  = 0;
+        pVCpu->gim.s.u.HvCpu.uApicAssistPageMsr = 0;
     }
 }
 
@@ -868,6 +869,63 @@ VMMR3_INT_DECL(int) gimR3HvLoad(PVM pVM, PSSMHANDLE pSSM, uint32_t uSSMVersion)
 
 
 /**
+ * Enables the Hyper-V APIC-assist page.
+ *
+ * @returns VBox status code.
+ * @param   pVM                     The cross context VM structure.
+ * @param   GCPhysApicAssistPage    Where to map the APIC-assist page.
+ */
+VMMR3_INT_DECL(int) gimR3HvEnableApicAssistPage(PVM pVM, RTGCPHYS GCPhysApicAssistPage)
+{
+    PPDMDEVINSR3    pDevIns = pVM->gim.s.pDevInsR3;
+    AssertPtrReturn(pDevIns, VERR_GIM_DEVICE_NOT_REGISTERED);
+
+    /*
+     * Map the APIC-assist-page at the specified address.
+     */
+    /** @todo this is buggy when large pages are used due to a PGM limitation, see
+     *        @bugref{7532}. Instead of the overlay style mapping, we just
+     *               rewrite guest memory directly. */
+    size_t const cbApicAssistPage = PAGE_SIZE;
+    void *pvApicAssist = RTMemAllocZ(cbApicAssistPage);
+    if (RT_LIKELY(pvApicAssist))
+    {
+        int rc = PGMPhysSimpleWriteGCPhys(pVM, GCPhysApicAssistPage, pvApicAssist, cbApicAssistPage);
+        if (RT_SUCCESS(rc))
+        {
+            /** @todo Inform APIC. */
+            LogRel(("GIM: HyperV: Enabled APIC-assist page at %#RGp\n", GCPhysApicAssistPage));
+        }
+        else
+        {
+            LogRelFunc(("GIM: HyperV: PGMPhysSimpleWriteGCPhys failed. rc=%Rrc\n", rc));
+            rc = VERR_GIM_OPERATION_FAILED;
+        }
+
+        RTMemFree(pvApicAssist);
+        return rc;
+    }
+
+    LogRelFunc(("GIM: HyperV: Failed to alloc %u bytes\n", cbApicAssistPage));
+    return VERR_NO_MEMORY;
+}
+
+
+/**
+ * Disables the Hyper-V APIC-assist page.
+ *
+ * @returns VBox status code.
+ * @param   pVM     The cross context VM structure.
+ */
+VMMR3_INT_DECL(int) gimR3HvDisableApicAssistPage(PVM pVM)
+{
+    LogRel(("GIM: HyperV: Disabled APIC-assist page\n"));
+    /** @todo inform APIC */
+    return VINF_SUCCESS;
+}
+
+
+/**
  * Enables the Hyper-V TSC page.
  *
  * @returns VBox status code.
@@ -1001,7 +1059,7 @@ VMMR3_INT_DECL(int) gimR3HvDisableTscPage(PVM pVM)
 #else
         pRegion->fMapped = false;
 #endif
-        LogRel(("GIM: HyperV: Disabled TSC-page\n"));
+        LogRel(("GIM: HyperV: Disabled TSC page\n"));
 
         TMR3CpuTickParavirtDisable(pVM);
         return VINF_SUCCESS;
diff --git a/src/VBox/VMM/VMMR3/IEMR3.cpp b/src/VBox/VMM/VMMR3/IEMR3.cpp
index 9210695..b6bd748 100644
--- a/src/VBox/VMM/VMMR3/IEMR3.cpp
+++ b/src/VBox/VMM/VMMR3/IEMR3.cpp
@@ -59,6 +59,9 @@ static const char *iemGetTargetCpuName(uint32_t enmTargetCpu)
  */
 VMMR3DECL(int)      IEMR3Init(PVM pVM)
 {
+    uint64_t const uInitialTlbRevision = UINT64_C(0) - (IEMTLB_REVISION_INCR * 200U);
+    uint64_t const uInitialTlbPhysRev  = UINT64_C(0) - (IEMTLB_PHYS_REV_INCR * 100U);
+
     for (VMCPUID idCpu = 0; idCpu < pVM->cCpus; idCpu++)
     {
         PVMCPU pVCpu = &pVM->aCpus[idCpu];
@@ -66,25 +69,51 @@ VMMR3DECL(int)      IEMR3Init(PVM pVM)
         pVCpu->iem.s.pCtxR0 = VM_R0_ADDR(pVM, pVCpu->iem.s.pCtxR3);
         pVCpu->iem.s.pCtxRC = VM_RC_ADDR(pVM, pVCpu->iem.s.pCtxR3);
 
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cInstructions,             STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
-                        "Instructions interpreted",          "/IEM/CPU%u/cInstructions", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cLongJumps,                STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
-                        "Number of longjmp calls",           "/IEM/CPU%u/cLongJumps", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cPotentialExits,           STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
-                        "Potential exits",                   "/IEM/CPU%u/cPotentialExits", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetAspectNotImplemented,  STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
-                        "VERR_IEM_ASPECT_NOT_IMPLEMENTED",   "/IEM/CPU%u/cRetAspectNotImplemented", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetInstrNotImplemented,   STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
-                        "VERR_IEM_INSTR_NOT_IMPLEMENTED",    "/IEM/CPU%u/cRetInstrNotImplemented", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetInfStatuses,           STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
-                        "Informational statuses returned",   "/IEM/CPU%u/cRetInfStatuses", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetErrStatuses,           STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
-                        "Error statuses returned",           "/IEM/CPU%u/cRetErrStatuses", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cbWritten,                 STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
-                        "Approx bytes written",              "/IEM/CPU%u/cbWritten", idCpu);
-        STAMR3RegisterF(pVM, &pVCpu->iem.s.cPendingCommit,            STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
+        pVCpu->iem.s.CodeTlb.uTlbRevision = pVCpu->iem.s.DataTlb.uTlbRevision = uInitialTlbRevision;
+        pVCpu->iem.s.CodeTlb.uTlbPhysRev  = pVCpu->iem.s.DataTlb.uTlbPhysRev  = uInitialTlbPhysRev;
+
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cInstructions,               STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Instructions interpreted",                     "/IEM/CPU%u/cInstructions", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cLongJumps,                  STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
+                        "Number of longjmp calls",                      "/IEM/CPU%u/cLongJumps", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cPotentialExits,             STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Potential exits",                              "/IEM/CPU%u/cPotentialExits", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetAspectNotImplemented,    STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "VERR_IEM_ASPECT_NOT_IMPLEMENTED",              "/IEM/CPU%u/cRetAspectNotImplemented", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetInstrNotImplemented,     STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "VERR_IEM_INSTR_NOT_IMPLEMENTED",               "/IEM/CPU%u/cRetInstrNotImplemented", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetInfStatuses,             STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Informational statuses returned",              "/IEM/CPU%u/cRetInfStatuses", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cRetErrStatuses,             STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Error statuses returned",                      "/IEM/CPU%u/cRetErrStatuses", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cbWritten,                   STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
+                        "Approx bytes written",                         "/IEM/CPU%u/cbWritten", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.cPendingCommit,              STAMTYPE_U32,       STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,
                         "Times RC/R0 had to postpone instruction committing to ring-3", "/IEM/CPU%u/cPendingCommit", idCpu);
 
+#ifdef VBOX_WITH_STATISTICS
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.CodeTlb.cTlbHits,            STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Code TLB hits",                            "/IEM/CPU%u/CodeTlb-Hits", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.DataTlb.cTlbHits,            STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Data TLB hits",                            "/IEM/CPU%u/DataTlb-Hits", idCpu);
+#endif
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.CodeTlb.cTlbMisses,          STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Code TLB misses",                          "/IEM/CPU%u/CodeTlb-Misses", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.CodeTlb.uTlbRevision,        STAMTYPE_X64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
+                        "Code TLB revision",                        "/IEM/CPU%u/CodeTlb-Revision", idCpu);
+        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.CodeTlb.uTlbPhysRev, STAMTYPE_X64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
+                        "Code TLB physical revision",               "/IEM/CPU%u/CodeTlb-PhysRev", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.CodeTlb.cTlbSlowReadPath,    STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
+                        "Code TLB slow read path",                  "/IEM/CPU%u/CodeTlb-SlowReads", idCpu);
+
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.DataTlb.cTlbMisses,          STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT,
+                        "Data TLB misses",                          "/IEM/CPU%u/DataTlb-Misses", idCpu);
+        STAMR3RegisterF(pVM, &pVCpu->iem.s.DataTlb.uTlbRevision,        STAMTYPE_X64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
+                        "Data TLB revision",                        "/IEM/CPU%u/DataTlb-Revision", idCpu);
+        STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.DataTlb.uTlbPhysRev, STAMTYPE_X64,       STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,
+                        "Data TLB physical revision",               "/IEM/CPU%u/DataTlb-PhysRev", idCpu);
+
+
         /*
          * Host and guest CPU information.
          */
diff --git a/src/VBox/VMM/VMMR3/MMHyper.cpp b/src/VBox/VMM/VMMR3/MMHyper.cpp
index 2c9732e..c0b63e1 100644
--- a/src/VBox/VMM/VMMR3/MMHyper.cpp
+++ b/src/VBox/VMM/VMMR3/MMHyper.cpp
@@ -29,7 +29,6 @@
 #include <VBox/err.h>
 #include <VBox/param.h>
 #include <VBox/log.h>
-#include "internal/pgm.h"
 #include <iprt/alloc.h>
 #include <iprt/assert.h>
 #include <iprt/string.h>
diff --git a/src/VBox/VMM/VMMR3/MMPagePool.cpp b/src/VBox/VMM/VMMR3/MMPagePool.cpp
index 163c58c..dce775c 100644
--- a/src/VBox/VMM/VMMR3/MMPagePool.cpp
+++ b/src/VBox/VMM/VMMR3/MMPagePool.cpp
@@ -28,7 +28,6 @@
 #include <VBox/param.h>
 #include <VBox/err.h>
 #include <VBox/log.h>
-#include "internal/pgm.h"
 #include <iprt/alloc.h>
 #include <iprt/assert.h>
 #define USE_INLINE_ASM_BIT_OPS
diff --git a/src/VBox/VMM/VMMR3/PATM.cpp b/src/VBox/VMM/VMMR3/PATM.cpp
index f12b990..20d0be8 100644
--- a/src/VBox/VMM/VMMR3/PATM.cpp
+++ b/src/VBox/VMM/VMMR3/PATM.cpp
@@ -62,7 +62,6 @@
 #include <iprt/asm.h>
 #include <VBox/dis.h>
 #include <VBox/disopcode.h>
-#include "internal/pgm.h"
 
 #include <iprt/string.h>
 #include "PATMA.h"
diff --git a/src/VBox/VMM/VMMR3/PATMSSM.cpp b/src/VBox/VMM/VMMR3/PATMSSM.cpp
index f1b1e0d..8ff3d73 100644
--- a/src/VBox/VMM/VMMR3/PATMSSM.cpp
+++ b/src/VBox/VMM/VMMR3/PATMSSM.cpp
@@ -35,7 +35,6 @@
 #include "PATMA.h"
 #include <VBox/vmm/vm.h>
 #include <VBox/vmm/csam.h>
-#include "internal/pgm.h"
 #include <VBox/dbg.h>
 #include <VBox/err.h>
 #include <VBox/log.h>
diff --git a/src/VBox/VMM/VMMR3/PDMDriver.cpp b/src/VBox/VMM/VMMR3/PDMDriver.cpp
index 1349f51..06b80f2 100644
--- a/src/VBox/VMM/VMMR3/PDMDriver.cpp
+++ b/src/VBox/VMM/VMMR3/PDMDriver.cpp
@@ -1419,9 +1419,7 @@ static DECLCALLBACK(int) pdmR3DrvHlp_STAMDeregister(PPDMDRVINS pDrvIns, void *pv
     PDMDRV_ASSERT_DRVINS(pDrvIns);
     VM_ASSERT_EMT(pDrvIns->Internal.s.pVMR3);
 
-    int rc = STAMR3DeregisterByAddr(pDrvIns->Internal.s.pVMR3->pUVM, pvSample);
-    AssertRC(rc);
-    return rc;
+    return STAMR3DeregisterByAddr(pDrvIns->Internal.s.pVMR3->pUVM, pvSample);
 }
 
 
diff --git a/src/VBox/VMM/VMMR3/PGMPhys.cpp b/src/VBox/VMM/VMMR3/PGMPhys.cpp
index 7669818..f62eabe 100644
--- a/src/VBox/VMM/VMMR3/PGMPhys.cpp
+++ b/src/VBox/VMM/VMMR3/PGMPhys.cpp
@@ -21,6 +21,7 @@
 *********************************************************************************************************************************/
 #define LOG_GROUP LOG_GROUP_PGM_PHYS
 #include <VBox/vmm/pgm.h>
+#include <VBox/vmm/iem.h>
 #include <VBox/vmm/iom.h>
 #include <VBox/vmm/mm.h>
 #include <VBox/vmm/stam.h>
@@ -3761,6 +3762,7 @@ VMMDECL(void) PGMR3PhysSetA20(PVMCPU pVCpu, bool fEnable)
         pgmR3RefreshShadowModeAfterA20Change(pVCpu);
         HMFlushTLB(pVCpu);
 #endif
+        IEMTlbInvalidateAllPhysical(pVCpu);
         STAM_REL_COUNTER_INC(&pVCpu->pgm.s.cA20Changes);
     }
 }
diff --git a/src/VBox/VMM/VMMR3/TRPM.cpp b/src/VBox/VMM/VMMR3/TRPM.cpp
index 9e20231..491297b 100644
--- a/src/VBox/VMM/VMMR3/TRPM.cpp
+++ b/src/VBox/VMM/VMMR3/TRPM.cpp
@@ -81,7 +81,6 @@
 #include <VBox/vmm/pdmapi.h>
 #include <VBox/vmm/em.h>
 #include <VBox/vmm/pgm.h>
-#include "internal/pgm.h"
 #include <VBox/vmm/dbgf.h>
 #include <VBox/vmm/mm.h>
 #include <VBox/vmm/stam.h>
@@ -1495,99 +1494,87 @@ VMMR3DECL(int) TRPMR3InjectEvent(PVM pVM, PVMCPU pVCpu, TRPMEVENT enmEvent)
     /* Currently only useful for external hardware interrupts. */
     Assert(enmEvent == TRPM_HARDWARE_INT);
 
-    if (   !EMIsSupervisorCodeRecompiled(pVM)
-#ifdef VBOX_WITH_REM
-        && REMR3QueryPendingInterrupt(pVM, pVCpu) == REM_NO_PENDING_IRQ
-#endif
-        )
-    {
-#ifdef TRPM_FORWARD_TRAPS_IN_GC
+#if defined(TRPM_FORWARD_TRAPS_IN_GC) && !defined(IEM_VERIFICATION_MODE)
 
 # ifdef LOG_ENABLED
-        DBGFR3_INFO_LOG(pVM, pVCpu, "cpumguest", "TRPMInject");
-        DBGFR3_DISAS_INSTR_CUR_LOG(pVCpu, "TRPMInject");
+    DBGFR3_INFO_LOG(pVM, pVCpu, "cpumguest", "TRPMInject");
+    DBGFR3_DISAS_INSTR_CUR_LOG(pVCpu, "TRPMInject");
 # endif
 
-        uint8_t u8Interrupt = 0;
-        int rc = PDMGetInterrupt(pVCpu, &u8Interrupt);
-        Log(("TRPMR3InjectEvent: CPU%d u8Interrupt=%d (%#x) rc=%Rrc\n", pVCpu->idCpu, u8Interrupt, u8Interrupt, rc));
-        if (RT_SUCCESS(rc))
+    uint8_t u8Interrupt = 0;
+    int rc = PDMGetInterrupt(pVCpu, &u8Interrupt);
+    Log(("TRPMR3InjectEvent: CPU%d u8Interrupt=%d (%#x) rc=%Rrc\n", pVCpu->idCpu, u8Interrupt, u8Interrupt, rc));
+    if (RT_SUCCESS(rc))
+    {
+        if (HMIsEnabled(pVM) || EMIsSupervisorCodeRecompiled(pVM))
         {
-# ifndef IEM_VERIFICATION_MODE
-            if (HMIsEnabled(pVM))
-# endif
-            {
-                rc = TRPMAssertTrap(pVCpu, u8Interrupt, enmEvent);
-                AssertRC(rc);
-                STAM_COUNTER_INC(&pVM->trpm.s.paStatForwardedIRQR3[u8Interrupt]);
-                return HMR3IsActive(pVCpu) ? VINF_EM_RESCHEDULE_HM : VINF_EM_RESCHEDULE_REM;
-            }
-            /* If the guest gate is not patched, then we will check (again) if we can patch it. */
-            if (pVM->trpm.s.aGuestTrapHandler[u8Interrupt] == TRPM_INVALID_HANDLER)
-            {
-                CSAMR3CheckGates(pVM, u8Interrupt, 1);
-                Log(("TRPMR3InjectEvent: recheck gate %x -> valid=%d\n", u8Interrupt, TRPMR3GetGuestTrapHandler(pVM, u8Interrupt) != TRPM_INVALID_HANDLER));
-            }
+            rc = TRPMAssertTrap(pVCpu, u8Interrupt, enmEvent);
+            AssertRC(rc);
+            STAM_COUNTER_INC(&pVM->trpm.s.paStatForwardedIRQR3[u8Interrupt]);
+            return HMR3IsActive(pVCpu) ? VINF_EM_RESCHEDULE_HM : VINF_EM_RESCHEDULE_REM;
+        }
+        /* If the guest gate is not patched, then we will check (again) if we can patch it. */
+        if (pVM->trpm.s.aGuestTrapHandler[u8Interrupt] == TRPM_INVALID_HANDLER)
+        {
+            CSAMR3CheckGates(pVM, u8Interrupt, 1);
+            Log(("TRPMR3InjectEvent: recheck gate %x -> valid=%d\n", u8Interrupt, TRPMR3GetGuestTrapHandler(pVM, u8Interrupt) != TRPM_INVALID_HANDLER));
+        }
 
-            if (pVM->trpm.s.aGuestTrapHandler[u8Interrupt] != TRPM_INVALID_HANDLER)
+        if (pVM->trpm.s.aGuestTrapHandler[u8Interrupt] != TRPM_INVALID_HANDLER)
+        {
+            /* Must check pending forced actions as our IDT or GDT might be out of sync */
+            rc = EMR3CheckRawForcedActions(pVM, pVCpu);
+            if (rc == VINF_SUCCESS)
             {
-                /* Must check pending forced actions as our IDT or GDT might be out of sync */
-                rc = EMR3CheckRawForcedActions(pVM, pVCpu);
-                if (rc == VINF_SUCCESS)
+                /* There's a handler -> let's execute it in raw mode */
+                rc = TRPMForwardTrap(pVCpu, CPUMCTX2CORE(pCtx), u8Interrupt, 0, TRPM_TRAP_NO_ERRORCODE, enmEvent, -1);
+                if (rc == VINF_SUCCESS /* Don't use RT_SUCCESS */)
                 {
-                    /* There's a handler -> let's execute it in raw mode */
-                    rc = TRPMForwardTrap(pVCpu, CPUMCTX2CORE(pCtx), u8Interrupt, 0, TRPM_TRAP_NO_ERRORCODE, enmEvent, -1);
-                    if (rc == VINF_SUCCESS /* Don't use RT_SUCCESS */)
-                    {
-                        Assert(!VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT | VMCPU_FF_TRPM_SYNC_IDT | VMCPU_FF_SELM_SYNC_TSS));
+                    Assert(!VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_SELM_SYNC_GDT | VMCPU_FF_SELM_SYNC_LDT | VMCPU_FF_TRPM_SYNC_IDT | VMCPU_FF_SELM_SYNC_TSS));
 
-                        STAM_COUNTER_INC(&pVM->trpm.s.paStatForwardedIRQR3[u8Interrupt]);
-                        return VINF_EM_RESCHEDULE_RAW;
-                    }
+                    STAM_COUNTER_INC(&pVM->trpm.s.paStatForwardedIRQR3[u8Interrupt]);
+                    return VINF_EM_RESCHEDULE_RAW;
                 }
             }
-            else
-                STAM_COUNTER_INC(&pVM->trpm.s.StatForwardFailNoHandler);
-
-# if 1
-            rc = TRPMAssertTrap(pVCpu, u8Interrupt, enmEvent);
-            AssertRCReturn(rc, rc);
-# else
-#  ifdef VBOX_WITH_REM
-            REMR3NotifyPendingInterrupt(pVM, pVCpu, u8Interrupt);
-#  endif
-#endif
         }
         else
-        {
-            /* Can happen if the interrupt is masked by TPR or APIC is disabled. */
-            AssertMsg(rc == VERR_APIC_INTR_MASKED_BY_TPR || rc == VERR_NO_DATA, ("PDMGetInterrupt failed. rc=%Rrc\n", rc));
-            return HMR3IsActive(pVCpu) ? VINF_EM_RESCHEDULE_HM : VINF_EM_RESCHEDULE_REM; /* (Heed the halted state if this is changed!) */
-        }
-#else /* !TRPM_FORWARD_TRAPS_IN_GC */
-        uint8_t u8Interrupt = 0;
-        int rc = PDMGetInterrupt(pVCpu, &u8Interrupt);
-        Log(("TRPMR3InjectEvent: u8Interrupt=%d (%#x) rc=%Rrc\n", u8Interrupt, u8Interrupt, rc));
-        if (RT_SUCCESS(rc))
-        {
-            rc = TRPMAssertTrap(pVCpu, u8Interrupt, TRPM_HARDWARE_INT);
-            AssertRC(rc);
-            STAM_COUNTER_INC(&pVM->trpm.s.paStatForwardedIRQR3[u8Interrupt]);
-        }
-        else
-        {
-            /* Can happen if the interrupt is masked by TPR or APIC is disabled. */
-            AssertMsg(rc == VERR_APIC_INTR_MASKED_BY_TPR || rc == VERR_NO_DATA, ("PDMGetInterrupt failed. rc=%Rrc\n", rc));
-        }
+            STAM_COUNTER_INC(&pVM->trpm.s.StatForwardFailNoHandler);
+
+        rc = TRPMAssertTrap(pVCpu, u8Interrupt, enmEvent);
+        AssertRCReturn(rc, rc);
+    }
+    else
+    {
+        /* Can happen if the interrupt is masked by TPR or APIC is disabled. */
+        AssertMsg(rc == VERR_APIC_INTR_MASKED_BY_TPR || rc == VERR_NO_DATA, ("PDMGetInterrupt failed. rc=%Rrc\n", rc));
         return HMR3IsActive(pVCpu) ? VINF_EM_RESCHEDULE_HM : VINF_EM_RESCHEDULE_REM; /* (Heed the halted state if this is changed!) */
-#endif /* !TRPM_FORWARD_TRAPS_IN_GC */
     }
+
     /** @todo check if it's safe to translate the patch address to the original guest address.
      *        this implies a safe state in translated instructions and should take sti successors into account (instruction fusing)
      */
-    /* Note: if it's a PATM address, then we'll go back to raw mode regardless of the return code below. */
+    /* Note: if it's a PATM address, then we'll go back to raw mode regardless of the return codes below. */
 
     /* Fall back to the recompiler */
     return VINF_EM_RESCHEDULE_REM; /* (Heed the halted state if this is changed!) */
+
+#else  /* !TRPM_FORWARD_TRAPS_IN_GC || IEM_VERIFICATION_MODE */
+    uint8_t u8Interrupt = 0;
+    int rc = PDMGetInterrupt(pVCpu, &u8Interrupt);
+    Log(("TRPMR3InjectEvent: u8Interrupt=%d (%#x) rc=%Rrc\n", u8Interrupt, u8Interrupt, rc));
+    if (RT_SUCCESS(rc))
+    {
+        rc = TRPMAssertTrap(pVCpu, u8Interrupt, TRPM_HARDWARE_INT);
+        AssertRC(rc);
+        STAM_COUNTER_INC(&pVM->trpm.s.paStatForwardedIRQR3[u8Interrupt]);
+    }
+    else
+    {
+        /* Can happen if the interrupt is masked by TPR or APIC is disabled. */
+        AssertMsg(rc == VERR_APIC_INTR_MASKED_BY_TPR || rc == VERR_NO_DATA, ("PDMGetInterrupt failed. rc=%Rrc\n", rc));
+    }
+    return HMR3IsActive(pVCpu) ? VINF_EM_RESCHEDULE_HM : VINF_EM_RESCHEDULE_REM; /* (Heed the halted state if this is changed!) */
+#endif /* !TRPM_FORWARD_TRAPS_IN_GC || IEM_VERIFICATION_MODE */
+
 }
 
diff --git a/src/VBox/VMM/include/GIMHvInternal.h b/src/VBox/VMM/include/GIMHvInternal.h
index 2216039..85d9215 100644
--- a/src/VBox/VMM/include/GIMHvInternal.h
+++ b/src/VBox/VMM/include/GIMHvInternal.h
@@ -454,6 +454,31 @@ AssertCompile(MSR_GIM_HV_RANGE11_START <= MSR_GIM_HV_RANGE11_END);
 #define MSR_GIM_HV_GUEST_OS_ID_BUILD(a)           ((a) & 0xffff)
 /** @} */
 
+/** @name Hyper-V MSR - APIC-assist page (MSR_GIM_HV_APIC_ASSIST_PAGE).
+ * @{
+ */
+/** Guest-physical page frame number of the APIC-assist page. */
+#define MSR_GIM_HV_APICASSIST_GUEST_PFN(a)        ((a) >> 12)
+/** The hypercall enable bit. */
+#define MSR_GIM_HV_APICASSIST_PAGE_ENABLE_BIT     RT_BIT_64(0)
+/** Whether the hypercall-page is enabled or not. */
+#define MSR_GIM_HV_APICASSIST_PAGE_IS_ENABLED(a)  RT_BOOL((a) & MSR_GIM_HV_APICASSIST_PAGE_ENABLE_BIT)
+/** @} */
+
+/**
+ * Hyper-V APIC-assist (HV_REFERENCE_TSC_PAGE) structure placed in the TSC
+ * reference page.
+ */
+typedef struct GIMHVAPICASSIST
+{
+    uint32_t fNoEoiRequired : 1;
+    uint32_t u31Reserved0   : 31;
+} GIMHVAPICASSIST;
+/** Pointer to Hyper-V reference TSC. */
+typedef GIMHVAPICASSIST *PGIMHVAPICASSIST;
+/** Pointer to a const Hyper-V reference TSC. */
+typedef GIMHVAPICASSIST const *PCGIMHVAPICASSIST;
+AssertCompileSize(GIMHVAPICASSIST, 4);
 
 /**
  * Hypercall parameter type.
@@ -1096,6 +1121,8 @@ typedef struct GIMHVCPU
     uint64_t                    uSimpMsr;
     /** Interrupt source 2 MSR. */
     uint64_t                    uSint2Msr;
+    /** APIC-assist page MSR. */
+    uint64_t                    uApicAssistPageMsr;
     /** @} */
 } GIMHVCPU;
 /** Pointer to per-VCPU GIM Hyper-V instance data. */
@@ -1123,6 +1150,8 @@ VMMR3_INT_DECL(int)             gimR3HvSave(PVM pVM, PSSMHANDLE pSSM);
 VMMR3_INT_DECL(int)             gimR3HvLoad(PVM pVM, PSSMHANDLE pSSM, uint32_t uSSMVersion);
 VMMR3_INT_DECL(int)             gimR3HvGetDebugSetup(PVM pVM, PGIMDEBUGSETUP pDbgSetup);
 
+VMMR3_INT_DECL(int)             gimR3HvDisableApicAssistPage(PVM pVM);
+VMMR3_INT_DECL(int)             gimR3HvEnableApicAssistPage(PVM pVM, RTGCPHYS GCPhysTscPage);
 VMMR3_INT_DECL(int)             gimR3HvDisableTscPage(PVM pVM);
 VMMR3_INT_DECL(int)             gimR3HvEnableTscPage(PVM pVM, RTGCPHYS GCPhysTscPage, bool fUseThisTscSeq, uint32_t uTscSeq);
 VMMR3_INT_DECL(int)             gimR3HvDisableHypercallPage(PVM pVM);
diff --git a/src/VBox/VMM/include/IEMInternal.h b/src/VBox/VMM/include/IEMInternal.h
index 9e2df04..159263d 100644
--- a/src/VBox/VMM/include/IEMInternal.h
+++ b/src/VBox/VMM/include/IEMInternal.h
@@ -64,6 +64,8 @@ RT_C_DECLS_BEGIN
 #endif
 
 
+//#define IEM_WITH_CODE_TLB// - work in progress
+
 
 /** Finish and move to types.h */
 typedef union
@@ -309,9 +311,9 @@ typedef struct IEMTLBENTRY
     uint64_t                GCPhys;
     /** Pointer to the ring-3 mapping (possibly also valid in ring-0). */
 #ifdef VBOX_WITH_2X_4GB_ADDR_SPACE
-    R3PTRTYPE(uint8_t *)    pMappingR3;
+    R3PTRTYPE(uint8_t *)    pbMappingR3;
 #else
-    R3R0PTRTYPE(uint8_t *)  pMappingR3;
+    R3R0PTRTYPE(uint8_t *)  pbMappingR3;
 #endif
 #if HC_ARCH_BITS == 32
     uint32_t                u32Padding1;
@@ -328,9 +330,10 @@ typedef IEMTLBENTRY *PIEMTLBENTRY;
 #define IEMTLBE_F_PT_NO_USER        RT_BIT_64(2) /**< Page tables: Not user accessible (supervisor only). */
 #define IEMTLBE_F_PG_NO_WRITE       RT_BIT_64(3) /**< Phys page:   Not writable (access handler, ROM, whatever). */
 #define IEMTLBE_F_PG_NO_READ        RT_BIT_64(4) /**< Phys page:   Not readable (MMIO / access handler, ROM) */
-#define IEMTLBE_F_UNUSED            RT_BIT_64(5) /**< Currently unused. */
+#define IEMTLBE_F_PATCH_CODE        RT_BIT_64(5) /**< Code TLB:    Patch code (PATM). */
 #define IEMTLBE_F_PT_NO_DIRTY       RT_BIT_64(6) /**< Page tables: Not dirty (needs to be made dirty on write). */
 #define IEMTLBE_F_NO_MAPPINGR3      RT_BIT_64(7) /**< TLB entry:   The IEMTLBENTRY::pMappingR3 member is invalid. */
+#define IEMTLBE_F_PHYS_REV          UINT64_C(0xffffffffffffff00) /**< Physical revision mask. */
 /** @} */
 
 
@@ -369,6 +372,9 @@ typedef struct IEMTLB
     uint64_t            cTlbHits;
     /** TLB misses. */
     uint32_t            cTlbMisses;
+    /** Slow read path.  */
+    uint32_t            cTlbSlowReadPath;
+#if 0
     /** TLB misses because of tag mismatch. */
     uint32_t            cTlbMissesTag;
     /** TLB misses because of virtual access violation. */
@@ -381,10 +387,15 @@ typedef struct IEMTLB
     uint32_t            cTlbMissesWriteHandler;
     /** TLB misses because no r3(/r0) mapping. */
     uint32_t            cTlbMissesMapping;
+#endif
     /** Alignment padding. */
-    uint32_t            au32Padding[3];
+    uint32_t            au32Padding[3+5];
 } IEMTLB;
 AssertCompileSizeAlignment(IEMTLB, 64);
+/** IEMTLB::uTlbRevision increment.  */
+#define IEMTLB_REVISION_INCR    RT_BIT_64(36)
+/** IEMTLB::uTlbPhysRev increment.  */
+#define IEMTLB_PHYS_REV_INCR    RT_BIT_64(8)
 
 
 /**
@@ -442,8 +453,9 @@ typedef struct IEMCPU
     /** The number of bytes available at pbInstrBuf in total (for IEMExecLots).
      * This takes the CS segment limit into account. */
     uint16_t                cbInstrBufTotal;                                                                /* 0x24 */
-    /** Offset into pbInstrBuf of the first byte of the current instruction. */
-    uint16_t                offCurInstrStart;                                                               /* 0x26 */
+    /** Offset into pbInstrBuf of the first byte of the current instruction.
+     * Can be negative to efficiently handle cross page instructions. */
+    int16_t                 offCurInstrStart;                                                               /* 0x26 */
 
     /** The prefix mask (IEM_OP_PRF_XXX). */
     uint32_t                fPrefixes;                                                                      /* 0x28 */
@@ -716,7 +728,7 @@ typedef IEMCPU const *PCIEMCPU;
 
 /** @def Gets the instruction length. */
 #ifdef IEM_WITH_CODE_TLB
-# define IEM_GET_INSTR_LEN(a_pVCpu)     ((a_pVCpu)->iem.s.offInstrNextByte - (uint32_t)(a_pVCpu)->iem.s.offCurInstrStart)
+# define IEM_GET_INSTR_LEN(a_pVCpu)     ((a_pVCpu)->iem.s.offInstrNextByte - (uint32_t)(int32_t)(a_pVCpu)->iem.s.offCurInstrStart)
 #else
 # define IEM_GET_INSTR_LEN(a_pVCpu)     ((a_pVCpu)->iem.s.offOpcode)
 #endif
diff --git a/src/VBox/VMM/include/PGMInternal.h b/src/VBox/VMM/include/PGMInternal.h
index 1449d9f..85ef904 100644
--- a/src/VBox/VMM/include/PGMInternal.h
+++ b/src/VBox/VMM/include/PGMInternal.h
@@ -34,7 +34,6 @@
 #include <VBox/vmm/gmm.h>
 #include <VBox/vmm/hm.h>
 #include <VBox/vmm/hm_vmx.h>
-#include "internal/pgm.h"
 #include <iprt/asm.h>
 #include <iprt/assert.h>
 #include <iprt/avl.h>
diff --git a/src/VBox/VMM/include/REMInternal.h b/src/VBox/VMM/include/REMInternal.h
index c6bf28c..c9c4b34 100644
--- a/src/VBox/VMM/include/REMInternal.h
+++ b/src/VBox/VMM/include/REMInternal.h
@@ -155,8 +155,8 @@ typedef struct REM
      * It is used to prevent rescheduling on the first call. */
     uint32_t                cCanExecuteRaw;
 
-    /** Pending interrupt (~0 -> nothing). */
-    uint32_t                u32PendingInterrupt;
+    /** Pending interrupt that remR3LoadDone will assert with TRPM. */
+    uint32_t                uStateLoadPendingInterrupt;
 
     /** Number of recorded invlpg instructions. */
     uint32_t volatile       cInvalidatedPages;
diff --git a/src/VBox/VMM/include/internal/pgm.h b/src/VBox/VMM/include/internal/pgm.h
deleted file mode 100644
index b862941..0000000
--- a/src/VBox/VMM/include/internal/pgm.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* $Id: pgm.h $ */
-/** @file
- * PGM - Internal VMM header file.
- */
-
-/*
- * Copyright (C) 2006-2015 Oracle Corporation
- *
- * This file is part of VirtualBox Open Source Edition (OSE), as
- * available from http://www.virtualbox.org. This file is free software;
- * you can redistribute it and/or modify it under the terms of the GNU
- * General Public License (GPL) as published by the Free Software
- * Foundation, in version 2 as it comes in the "COPYING" file of the
- * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
- * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
- */
-
-#ifndef ___PGM_include_internal_h
-#define ___PGM_include_internal_h
-
-#include <VBox/vmm/pgm.h>
-
-#endif
-
diff --git a/src/VBox/VMM/testcase/tstVMM.cpp b/src/VBox/VMM/testcase/tstVMM.cpp
index dc1b671..a7284d7 100644
--- a/src/VBox/VMM/testcase/tstVMM.cpp
+++ b/src/VBox/VMM/testcase/tstVMM.cpp
@@ -49,6 +49,7 @@
 *   Global Variables                                                                                                             *
 *********************************************************************************************************************************/
 static uint32_t g_cCpus = 1;
+static bool     g_fStat = false;                /* don't create log files on the testboxes */
 
 
 /*********************************************************************************************************************************
@@ -212,6 +213,7 @@ extern "C" DECLEXPORT(int) TrustedMain(int argc, char **argv, char **envp)
     {
         { "--cpus",          'c', RTGETOPT_REQ_UINT8 },
         { "--test",          't', RTGETOPT_REQ_STRING },
+        { "--stat",          's', RTGETOPT_REQ_NOTHING },
     };
     enum
     {
@@ -248,12 +250,16 @@ extern "C" DECLEXPORT(int) TrustedMain(int argc, char **argv, char **envp)
                 }
                 break;
 
+            case 's':
+                g_fStat = true;
+                break;
+
             case 'h':
-                RTPrintf("usage: tstVMM [--cpus|-c cpus] [--test <vmm|tm|msrs|known-msrs>]\n");
+                RTPrintf("usage: tstVMM [--cpus|-c cpus] [-s] [--test <vmm|tm|msrs|known-msrs>]\n");
                 return 1;
 
             case 'V':
-                RTPrintf("$Revision: 102121 $\n");
+                RTPrintf("$Revision: 108770 $\n");
                 return 0;
 
             default:
@@ -285,7 +291,8 @@ extern "C" DECLEXPORT(int) TrustedMain(int argc, char **argv, char **envp)
                 rc = VMR3ReqCallWaitU(pUVM, VMCPUID_ANY, (PFNRT)VMMDoTest, 1, pVM);
                 if (RT_FAILURE(rc))
                     RTTestFailed(hTest, "VMMDoTest failed: rc=%Rrc\n", rc);
-                STAMR3Dump(pUVM, "*");
+                if (g_fStat)
+                    STAMR3Dump(pUVM, "*");
                 break;
             }
 
@@ -302,7 +309,8 @@ extern "C" DECLEXPORT(int) TrustedMain(int argc, char **argv, char **envp)
                 rc = VMR3ReqCallWaitU(pUVM, 0 /*idDstCpu*/, (PFNRT)tstTMWorker, 2, pVM, hTest);
                 if (RT_FAILURE(rc))
                     RTTestFailed(hTest, "VMMDoTest failed: rc=%Rrc\n", rc);
-                STAMR3Dump(pUVM, "*");
+                if (g_fStat)
+                    STAMR3Dump(pUVM, "*");
                 break;
             }
 
diff --git a/src/VBox/VMM/testcase/tstVMStructSize.cpp b/src/VBox/VMM/testcase/tstVMStructSize.cpp
index e7ec825..c06296e 100644
--- a/src/VBox/VMM/testcase/tstVMStructSize.cpp
+++ b/src/VBox/VMM/testcase/tstVMStructSize.cpp
@@ -252,7 +252,9 @@ int main()
     CHECK_PADDING_VMCPU(64, iom);
     CHECK_PADDING_VMCPU(64, dbgf);
     CHECK_PADDING_VMCPU(64, gim);
+#ifdef VBOX_WITH_NEW_APIC
     CHECK_PADDING_VMCPU(64, apic);
+#endif
     PRINT_OFFSET(VMCPU, pgm);
     CHECK_PADDING_VMCPU(4096, pgm);
     CHECK_PADDING_VMCPU(4096, cpum);
diff --git a/src/VBox/ValidationKit/testdriver/reporter.py b/src/VBox/ValidationKit/testdriver/reporter.py
index a5a729b..1f0177c 100755
--- a/src/VBox/ValidationKit/testdriver/reporter.py
+++ b/src/VBox/ValidationKit/testdriver/reporter.py
@@ -27,7 +27,7 @@ CDDL are applicable instead of those of the GPL.
 You may elect to license modified versions of this file under the
 terms and conditions of either the GPL or the CDDL or both.
 """
-__version__ = "$Revision: 108593 $"
+__version__ = "$Revision: 108858 $"
 
 
 # Standard Python imports.
@@ -871,7 +871,6 @@ class RemoteReporter(ReporterBase):
             if len(asXml) > 0  or  fForce is True:
                 self._fXmlFlushing = True;
 
-                self._writeOutput('xml-debug/%s: flushing!'  % (len(self._asXml),)); # temporarily while debugging flush/poll
                 g_oLock.release();
                 (asXml, fIncErrors) = self._xmlDoFlush(asXml, fRetry = fRetry);
                 g_oLock.acquire();
@@ -896,8 +895,6 @@ class RemoteReporter(ReporterBase):
         cSecsLast = tsNow - self._secTsXmlLast;
         if fPolling is not True:
             self._secTsXmlLast = tsNow;
-        self._writeOutput('xml-debug/%s: %s s since flush, %s s since poll %s'
-                          % (len(self._asXml), cSecs, cSecsLast, sDebug if sDebug is not None else '', )); # temporarily
 
         # Absolute flush thresholds.
         if cSecs >= self.kcSecXmlFlushMax:
@@ -910,11 +907,11 @@ class RemoteReporter(ReporterBase):
           and cSecsLast >= self.kcSecXmlFlushIdle:
             return self.xmlFlush();
 
+        _ = sDebug;
         return False;
 
     def _xmlWrite(self, asText, fIndent = True):
         """XML output function for the reporter."""
-        self._writeOutput('xml-debug/%s: %s' % (len(self._asXml), asText)); # temporarily while debugging flush/poll problem.
         self._asXml += asText;
         self._xmlFlushIfNecessary();
         _ = fIndent; # No pretty printing, thank you.
diff --git a/src/VBox/ValidationKit/testdriver/vboxwrappers.py b/src/VBox/ValidationKit/testdriver/vboxwrappers.py
index 14f57a9..00280c9 100755
--- a/src/VBox/ValidationKit/testdriver/vboxwrappers.py
+++ b/src/VBox/ValidationKit/testdriver/vboxwrappers.py
@@ -27,7 +27,7 @@ CDDL are applicable instead of those of the GPL.
 You may elect to license modified versions of this file under the
 terms and conditions of either the GPL or the CDDL or both.
 """
-__version__ = "$Revision: 108687 $"
+__version__ = "$Revision: 108748 $"
 
 
 # Standard Python imports.
@@ -57,6 +57,8 @@ def _ControllerNameToBus(sController):
         iType = vboxcon.StorageBus_SAS;
     elif sController == "SCSI Controller":
         iType = vboxcon.StorageBus_SCSI;
+    elif sController == "NVMe Controller":
+        iType = vboxcon.StorageBus_PCIe;
     else:
         iType = vboxcon.StorageBus_Null;
     return iType;
diff --git a/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py b/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py
index 3a7053e..a2941ab 100755
--- a/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py
+++ b/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py
@@ -33,7 +33,7 @@ CDDL are applicable instead of those of the GPL.
 You may elect to license modified versions of this file under the
 terms and conditions of either the GPL or the CDDL or both.
 """
-__version__ = "$Revision: 108597 $"
+__version__ = "$Revision: 108794 $"
 
 
 # Standard python imports
@@ -141,6 +141,31 @@ class VirtualTestSheriffCaseFile(object):
         return self.isVBoxTest() \
            and self.oTestCase.sName.lower().startswith('install:');
 
+    def isVBoxUSBTest(self):
+        """ Test case classification: VirtualBox USB test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('usb:');
+
+    def isVBoxStorageTest(self):
+        """ Test case classification: VirtualBox Storage test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('storage:');
+
+    def isVBoxGAsTest(self):
+        """ Test case classification: VirtualBox Guest Additions test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('ga\'s tests');
+
+    def isVBoxAPITest(self):
+        """ Test case classification: VirtualBox API test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('api:');
+
+    def isVBoxBenchmarkTest(self):
+        """ Test case classification: VirtualBox Benchmark test. """
+        return self.isVBoxTest() \
+           and self.oTestCase.sName.lower().startswith('benchmark:');
+
     def isVBoxSmokeTest(self):
         """ Test case classification: Smoke test. """
         return self.isVBoxTest() \
@@ -268,7 +293,7 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
 
         if self.oConfig.sLogFile is not None and len(self.oConfig.sLogFile) > 0:
             self.oLogFile = open(self.oConfig.sLogFile, "a");
-            self.oLogFile.write('VirtualTestSheriff: $Revision: 108597 $ \n');
+            self.oLogFile.write('VirtualTestSheriff: $Revision: 108794 $ \n');
 
 
     def eprint(self, sText):
@@ -408,6 +433,7 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
     ## @{
     ktReason_BSOD_Recovery                             = ( 'BSOD',              'Recovery' );
     ktReason_BSOD_Automatic_Repair                     = ( 'BSOD',              'Automatic Repair' );
+    ktReason_BSOD_C0000225                             = ( 'BSOD',              '0xC0000225 (boot)' );
     ktReason_Guru_Generic                              = ( 'Guru Meditations',  'Generic Guru Meditation' );
     ktReason_Guru_VERR_IEM_INSTR_NOT_IMPLEMENTED       = ( 'Guru Meditations',  'VERR_IEM_INSTR_NOT_IMPLEMENTED' );
     ktReason_Guru_VERR_IEM_ASPECT_NOT_IMPLEMENTED      = ( 'Guru Meditations',  'VERR_IEM_ASPECT_NOT_IMPLEMENTED' );
@@ -428,6 +454,7 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
     ktReason_Unknown_Reboot_Loop                       = ( 'Unknown',           'Reboot loop' );
     ktReason_Ignore_Buggy_Test_Driver                  = ( 'Ignore',            'Buggy test driver' );
     ktReason_Ignore_Stale_Files                        = ( 'Ignore',            'Stale files' );
+    ktReason_Buggy_Build_Broken_Build                  = ( 'Broken Build',      'Buggy build' );
     ## @}
 
     ## BSOD category.
@@ -492,7 +519,7 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
         for idTestResult, tReason in dReasonForResultId.items():
             oFailureReason = self.oFailureReasonLogic.cachedLookupByNameAndCategory(tReason[1], tReason[0]);
             if oFailureReason is not None:
-                sComment = 'Set by $Revision: 108597 $' # Handy for reverting later.
+                sComment = 'Set by $Revision: 108794 $' # Handy for reverting later.
                 if idTestResult in dCommentForResultId:
                     sComment += ': ' + dCommentForResultId[idTestResult];
 
@@ -688,6 +715,11 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
         ( True,  ktReason_BSOD_Recovery,                    '576f8e38d62b311cac7e3dc3436a0d0b9bd8cfd7fa9c43aafa95631520a45eac' ),
         ( True,  ktReason_BSOD_Automatic_Repair,            'c6a72076cc619937a7a39cfe9915b36d94cee0d4e3ce5ce061485792dcee2749' ),
         ( True,  ktReason_BSOD_Automatic_Repair,            '26c4d8a724ff2c5e1051f3d5b650dbda7b5fdee0aa3e3c6059797f7484a515df' ),
+        ( True,  ktReason_BSOD_C0000225,                    'bd13a144be9dcdfb16bc863ff4c8f02a86e263c174f2cd5ffd27ca5f3aa31789' ),
+        ( True,  ktReason_BSOD_C0000225,                    '8348b465e7ee9e59dd4e785880c57fd8677de05d11ac21e786bfde935307b42f' ),
+        ( True,  ktReason_BSOD_C0000225,                    '1316e1fc818a73348412788e6910b8c016f237d8b4e15b20caf4a866f7a7840e' ),
+        ( True,  ktReason_BSOD_C0000225,                    '54e0acbff365ce20a85abbe42bcd53647b8b9e80c68e45b2cd30e86bf177a0b5' ),
+        ( True,  ktReason_BSOD_C0000225,                    '50fec50b5199923fa48b3f3e782687cc381e1c8a788ebda14e6a355fbe3bb1b3' ),
     ];
 
     def investigateVMResult(self, oCaseFile, oFailedResult, sResultLog):
@@ -885,6 +917,13 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
                 return self.caseClosed(oCaseFile);
 
         #
+        # XPCOM screwup
+        #
+        if   sMainLog.find('AttributeError: \'NoneType\' object has no attribute \'addObserver\'') > 0:
+            oCaseFile.noteReason(self.ktReason_Buggy_Build_Broken_Build);
+            return self.caseClosed(oCaseFile);
+
+        #
         # Go thru each failed result.
         #
         for oFailedResult in aoFailedResults:
@@ -907,7 +946,7 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
                 oCaseFile.noteReasonForId(self.ktHarmless, oFailedResult.idTestResult);
 
             elif  sResultLog.find('** error: no action was specified') > 0 \
-               or sResultLog.find('(len(self._asXml, asText))'):
+               or sResultLog.find('(len(self._asXml, asText))') > 0:
                 oCaseFile.noteReasonForId(self.ktReason_Ignore_Buggy_Test_Driver, oFailedResult.idTestResult);
 
             else:
@@ -964,6 +1003,26 @@ class VirtualTestSheriff(object): # pylint: disable=R0903
                 self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
                 fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
 
+            elif oCaseFile.isVBoxUSBTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxStorageTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxGAsTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxAPITest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = True);
+
+            elif oCaseFile.isVBoxBenchmarkTest():
+                self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
+                fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = False);
+
             elif oCaseFile.isVBoxSmokeTest():
                 self.dprint(u'investigateVBoxVMTest is taking over %s.' % (oCaseFile.sLongName,));
                 fRc = self.investigateVBoxVMTest(oCaseFile, fSingleVM = False);
diff --git a/src/VBox/ValidationKit/tests/additions/tdAddBasic1.py b/src/VBox/ValidationKit/tests/additions/tdAddBasic1.py
index 31a0189..51e1fde 100755
--- a/src/VBox/ValidationKit/tests/additions/tdAddBasic1.py
+++ b/src/VBox/ValidationKit/tests/additions/tdAddBasic1.py
@@ -27,7 +27,7 @@ CDDL are applicable instead of those of the GPL.
 You may elect to license modified versions of this file under the
 terms and conditions of either the GPL or the CDDL or both.
 """
-__version__ = "$Revision: 108264 $"
+__version__ = "$Revision: 108749 $"
 
 
 # Standard Python imports.
@@ -247,24 +247,25 @@ class tdAddBasic1(vbox.TestDriver):                                         # py
         if fRc is True:
             (fRc, oTxsSession) = self.txsRebootAndReconnectViaTcp(oSession, oTxsSession, cMsTimeout = 3 * 60000);
 
-            # Add the Windows Guest Additions installer files to the files we want to download
-            # from the guest.
-            sGuestAddsDir = 'C:/Program Files/Oracle/VirtualBox Guest Additions/';
-            asLogFile.append(sGuestAddsDir + 'install.log');
-            # Note: There won't be a install_ui.log because of the silent installation.
-            asLogFile.append(sGuestAddsDir + 'install_drivers.log');
-            asLogFile.append('C:/Windows/setupapi.log');
-
-            # Note: setupapi.dev.log only is available since Windows 2000.
-            if fHaveSetupApiDevLog:
-                asLogFile.append('C:/Windows/setupapi.dev.log');
-
-            #
-            # Download log files.
-            # Ignore errors as all files above might not be present (or in different locations)
-            # on different Windows guests.
-            #
-            self.txsDownloadFiles(oSession, oTxsSession, asLogFile, fIgnoreErrors = True);
+            if fRc is True:
+                # Add the Windows Guest Additions installer files to the files we want to download
+                # from the guest.
+                sGuestAddsDir = 'C:/Program Files/Oracle/VirtualBox Guest Additions/';
+                asLogFile.append(sGuestAddsDir + 'install.log');
+                # Note: There won't be a install_ui.log because of the silent installation.
+                asLogFile.append(sGuestAddsDir + 'install_drivers.log');
+                asLogFile.append('C:/Windows/setupapi.log');
+
+                # Note: setupapi.dev.log only is available since Windows 2000.
+                if fHaveSetupApiDevLog:
+                    asLogFile.append('C:/Windows/setupapi.dev.log');
+
+                #
+                # Download log files.
+                # Ignore errors as all files above might not be present (or in different locations)
+                # on different Windows guests.
+                #
+                self.txsDownloadFiles(oSession, oTxsSession, asLogFile, fIgnoreErrors = True);
 
         return (fRc, oTxsSession);
 
diff --git a/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py b/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py
index f933ff0..c2c7613 100755
--- a/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py
+++ b/src/VBox/ValidationKit/tests/storage/tdStorageBenchmark1.py
@@ -27,7 +27,7 @@ CDDL are applicable instead of those of the GPL.
 You may elect to license modified versions of this file under the
 terms and conditions of either the GPL or the CDDL or both.
 """
-__version__ = "$Revision: 108705 $"
+__version__ = "$Revision: 108935 $"
 
 
 # Standard Python imports.
@@ -157,6 +157,8 @@ class IozoneTest(object):
                           ('random writers',  'RandomWrite'),
                           ('pwrite writers',  'PWrite'),
                           ('pread readers',   'PRead'),
+                          ('fwriters',        'FWrite'),
+                          ('freaders',        'FRead'),
                           ('readers',         'FirstRead')];
         self.sRecordSize  = dCfg.get('RecordSize',  '4k');
         self.sTestsetSize = dCfg.get('TestsetSize', '2g');
@@ -211,14 +213,18 @@ class IozoneTest(object):
                         while sLine[idxValue] == ' ':
                             idxValue += 1;
 
+                        # Get the reported value, cut off after the decimal point
+                        # it is not supported by the testmanager yet and is not really
+                        # relevant anyway.
                         idxValueEnd = idxValue;
-                        while sLine[idxValueEnd] == '.' or sLine[idxValueEnd].isdigit():
+                        while sLine[idxValueEnd].isdigit():
                             idxValueEnd += 1;
 
                         for sNeedle, sTestVal in self.lstTests:
                             if sLine.rfind(sNeedle) is not -1:
                                 reporter.testValue(sTestVal, sLine[idxValue:idxValueEnd],
                                                    constants.valueunit.g_asNames[constants.valueunit.KILOBYTES_PER_SEC]);
+                                break;
             except:
                 fRc = False;
         else:
@@ -244,7 +250,7 @@ class tdStorageBenchmark(vbox.TestDriver):
         self.oGuestToGuestVM   = None;
         self.oGuestToGuestSess = None;
         self.oGuestToGuestTxs  = None;
-        self.asTestVMsDef      = ['tst-storage'];
+        self.asTestVMsDef      = ['tst-storage', 'tst-storage32'];
         self.asTestVMs         = self.asTestVMsDef;
         self.asSkipVMs         = [];
         self.asVirtModesDef    = ['hwvirt', 'hwvirt-np', 'raw',]
@@ -369,6 +375,8 @@ class tdStorageBenchmark(vbox.TestDriver):
             self.asRsrcs = [];
             if 'tst-storage' in self.asTestVMs:
                 self.asRsrcs.append('5.0/storage/tst-storage.vdi');
+            if 'tst-storage32' in self.asTestVMs:
+                self.asRsrcs.append('5.0/storage/tst-storage32.vdi');
 
         return self.asRsrcs;
 
@@ -390,6 +398,13 @@ class tdStorageBenchmark(vbox.TestDriver):
             if oVM is None:
                 return False;
 
+        if 'tst-storage32' in self.asTestVMs:
+            oVM = self.createTestVM('tst-storage32', 1, '5.0/storage/tst-storage32.vdi', sKind = 'ArchLinux', fIoApic = True, \
+                                    eNic0AttachType = vboxcon.NetworkAttachmentType_NAT, \
+                                    eNic0Type = vboxcon.NetworkAdapterType_Am79C973);
+            if oVM is None:
+                return False;
+
         return True;
 
     def actionExecute(self):
@@ -585,29 +600,30 @@ class tdStorageBenchmark(vbox.TestDriver):
                 # cleanup.
                 self.removeTask(oTxsSession);
                 self.terminateVmBySession(oSession)
+            else:
+                fRc = False;
 
-                # Remove disk
-                oSession = self.openSession(oVM);
-                if oSession is not None:
-                    try:
-                        oSession.o.machine.detachDevice(_ControllerTypeToName(eStorageController), 0, iDevice);
-
-                        # Remove storage controller if it is not an IDE controller.
-                        if     eStorageController is not vboxcon.StorageControllerType_PIIX3 \
-                           and eStorageController is not vboxcon.StorageControllerType_PIIX4:
-                            oSession.o.machine.removeStorageController(_ControllerTypeToName(eStorageController));
-
-                        oSession.saveSettings();
-                        self.oVBox.deleteHdByLocation(sDiskPath);
-                        oSession.saveSettings();
-                        oSession.close();
-                        oSession = None;
-                    except:
-                        reporter.errorXcpt('failed to detach/delete disk %s from storage controller' % (sDiskPath));
-                else:
-                    fRc = False;
+            # Remove disk
+            oSession = self.openSession(oVM);
+            if oSession is not None:
+                try:
+                    oSession.o.machine.detachDevice(_ControllerTypeToName(eStorageController), 0, iDevice);
+
+                    # Remove storage controller if it is not an IDE controller.
+                    if     eStorageController is not vboxcon.StorageControllerType_PIIX3 \
+                       and eStorageController is not vboxcon.StorageControllerType_PIIX4:
+                        oSession.o.machine.removeStorageController(_ControllerTypeToName(eStorageController));
+
+                    oSession.saveSettings();
+                    self.oVBox.deleteHdByLocation(sDiskPath);
+                    oSession.saveSettings();
+                    oSession.close();
+                    oSession = None;
+                except:
+                    reporter.errorXcpt('failed to detach/delete disk %s from storage controller' % (sDiskPath));
             else:
                 fRc = False;
+
         return fRc;
 
     def testBenchmarkOneVM(self, sVmName):
@@ -628,6 +644,9 @@ class tdStorageBenchmark(vbox.TestDriver):
             elif sStorageCtrl == 'LsiLogic':
                 eStorageCtrl = vboxcon.StorageControllerType_LsiLogic;
             elif sStorageCtrl == 'BusLogic':
+                if sVmName == 'tst-storage': # Broken for 64bit Linux
+                    reporter.testDone(True);
+                    continue;
                 eStorageCtrl = vboxcon.StorageControllerType_BusLogic;
             elif sStorageCtrl == 'NVMe':
                 eStorageCtrl = vboxcon.StorageControllerType_NVMe;
@@ -667,7 +686,7 @@ class tdStorageBenchmark(vbox.TestDriver):
                         else:           reporter.testStart('%u cpus' % (cCpus));
 
                         for sVirtMode in self.asVirtModes:
-                            if sVirtMode == 'raw' and cCpus > 1:
+                            if sVirtMode == 'raw' and (cCpus > 1 or sVmName == 'tst-storage'):
                                 continue;
                             hsVirtModeDesc = {};
                             hsVirtModeDesc['raw']       = 'Raw-mode';
@@ -715,13 +734,13 @@ class tdStorageBenchmark(vbox.TestDriver):
                 else:
                     sMountPoint = self.prepareStorage(self.oStorCfg);
                 if sMountPoint is not None:
-                    fRc = self.testBenchmarks(utils.getHostOs(), sMountPoint, oExecutor);
+                    self.testBenchmarks(utils.getHostOs(), sMountPoint, oExecutor);
                     self.cleanupStorage(self.oStorCfg);
                 else:
                     reporter.testFailure('Failed to prepare host storage');
+                    fRc = False;
                 reporter.testDone();
-
-            if fRc:
+            else:
                 # Loop thru the test VMs.
                 for sVM in self.asTestVMs:
                     # run test on the VM.
diff --git a/src/libs/xpcom18a4/Makefile.kmk b/src/libs/xpcom18a4/Makefile.kmk
index e3b5676..cd53897 100644
--- a/src/libs/xpcom18a4/Makefile.kmk
+++ b/src/libs/xpcom18a4/Makefile.kmk
@@ -511,6 +511,7 @@ VBox-xpcom-nspr_DEFS.darwin.amd64 = \
 	VBOX_USE_MORE_IPRT_IN_NSPR
 VBox-xpcom-nspr_DEFS.darwin = \
 	HAVE_BSD_FLOCK=1 \
+	HAVE_SOCKLEN_T=1 \
 	_PR_PTHREADS
 VBox-xpcom-nspr_DEFS.freebsd = \
 	FREEBSD=1 \
diff --git a/src/libs/xpcom18a4/nsprpub/pr/src/cplus/rctime.cpp b/src/libs/xpcom18a4/nsprpub/pr/src/cplus/rctime.cpp
index 03c6ff3..6f02b41 100644
--- a/src/libs/xpcom18a4/nsprpub/pr/src/cplus/rctime.cpp
+++ b/src/libs/xpcom18a4/nsprpub/pr/src/cplus/rctime.cpp
@@ -59,7 +59,7 @@ RCTime RCTime::operator-(const RCTime& his)
 { RCTime difference(gmt - his.gmt); return difference; }
 
 RCTime RCTime::operator/(PRUint64 his)
-{ RCTime quotient(gmt / gmt); return quotient; }
+{ RCTime quotient(gmt / his); return quotient; }
 
 RCTime RCTime::operator*(PRUint64 his)
 { RCTime product(gmt * his); return product; }
diff --git a/src/libs/xpcom18a4/nsprpub/pr/src/misc/prtime.c b/src/libs/xpcom18a4/nsprpub/pr/src/misc/prtime.c
index a3cd1c6..0a2892e 100644
--- a/src/libs/xpcom18a4/nsprpub/pr/src/misc/prtime.c
+++ b/src/libs/xpcom18a4/nsprpub/pr/src/misc/prtime.c
@@ -1002,7 +1002,7 @@ PR_ParseTimeString(
                           (rest[2] == 'r' || rest[2] == 'R'))
                         month = TT_APR;
                   else if (zone == TT_UNKNOWN &&
-                                   (rest[1] == 's' || rest[1] == 's') &&
+                                   (rest[1] == 's' || rest[1] == 'S') &&
                                    (rest[2] == 't' || rest[2] == 'T'))
                         zone = TT_AST;
                   else if (month == TT_UNKNOWN &&
diff --git a/src/libs/xpcom18a4/python/src/TypeObject.cpp b/src/libs/xpcom18a4/python/src/TypeObject.cpp
index fab163c..3a1f949 100644
--- a/src/libs/xpcom18a4/python/src/TypeObject.cpp
+++ b/src/libs/xpcom18a4/python/src/TypeObject.cpp
@@ -173,7 +173,7 @@ PyXPCOM_TypeObject::Py_repr(PyObject *self)
 	// @comm The repr of this object displays both the object's address, and its attached nsISupports's address
 	Py_nsISupports *pis = (Py_nsISupports *)self;
 	// Try and get the IID name.
-	char *iid_repr;
+	char *iid_repr = nsnull;
 	nsCOMPtr<nsIInterfaceInfoManager> iim(do_GetService(
 	                NS_INTERFACEINFOMANAGER_SERVICE_CONTRACTID));
 	if (iim!=nsnull)
diff --git a/src/libs/xpcom18a4/python/src/VariantUtils.cpp b/src/libs/xpcom18a4/python/src/VariantUtils.cpp
index 294baa0..91ff177 100644
--- a/src/libs/xpcom18a4/python/src/VariantUtils.cpp
+++ b/src/libs/xpcom18a4/python/src/VariantUtils.cpp
@@ -1115,6 +1115,8 @@ PyXPCOM_InterfaceVariantHelper::PyXPCOM_InterfaceVariantHelper(Py_nsISupports *p
 	m_var_array=nsnull;
 	m_buffer_array=nsnull;
 	m_pyparams=nsnull;
+        m_typedescs = nsnull;
+        m_python_type_desc_array = nsnull;
 	m_num_array = 0;
         m_methodindex = methodindex;
 	// Parent should never die before we do, but let's not take the chance.
diff --git a/src/libs/xpcom18a4/xpcom/components/nsCategoryManager.h b/src/libs/xpcom18a4/xpcom/components/nsCategoryManager.h
index 6e54beb..a5cdb59 100644
--- a/src/libs/xpcom18a4/xpcom/components/nsCategoryManager.h
+++ b/src/libs/xpcom18a4/xpcom/components/nsCategoryManager.h
@@ -116,7 +116,7 @@ public:
   void operator delete(void*) { }
 
 private:
-  CategoryNode() { }
+  CategoryNode() : mLock(nsnull) { }
   void* operator new(size_t aSize, PLArenaPool* aArena);
 
   nsTHashtable<CategoryLeaf> mTable;
@@ -142,7 +142,7 @@ public:
    */
   NS_METHOD WriteCategoryManagerToRegistry(PRFileDesc* fd);
 
-  nsCategoryManager() { }
+  nsCategoryManager() : mLock(nsnull) { }
 private:
   friend class nsCategoryManagerFactory;
   static nsCategoryManager* Create();
diff --git a/src/libs/xpcom18a4/xpcom/io/nsDirectoryService.cpp b/src/libs/xpcom18a4/xpcom/io/nsDirectoryService.cpp
index e752802..4fb2a55 100644
--- a/src/libs/xpcom18a4/xpcom/io/nsDirectoryService.cpp
+++ b/src/libs/xpcom18a4/xpcom/io/nsDirectoryService.cpp
@@ -988,7 +988,7 @@ nsDirectoryService::GetFile(const char *prop, PRBool *persistent, nsIFile **_ret
                 ::ICStop(icInstance);
             }
 
-            if NS_FAILED(rv)
+            if (NS_FAILED(rv))
             {
                 // We got an error getting the DL folder from IC so try finding the user's Desktop folder
                 rv = GetOSXFolderType(kUserDomain, kDesktopFolderType, getter_AddRefs(localFile));
diff --git a/src/libs/xpcom18a4/xpcom/io/nsLocalFileOS2.cpp b/src/libs/xpcom18a4/xpcom/io/nsLocalFileOS2.cpp
index 7d80ac4..269a13d 100644
--- a/src/libs/xpcom18a4/xpcom/io/nsLocalFileOS2.cpp
+++ b/src/libs/xpcom18a4/xpcom/io/nsLocalFileOS2.cpp
@@ -108,8 +108,10 @@ static nsresult ConvertOS2Error(int err)
             break;
         case 0:
             rv = NS_OK;
+            break;
         default:    
             rv = NS_ERROR_FAILURE;
+            break;
     }
     return rv;
 }
diff --git a/src/libs/xpcom18a4/xpcom/io/nsLocalFileUnix.cpp b/src/libs/xpcom18a4/xpcom/io/nsLocalFileUnix.cpp
index ec79636..eef17bd 100644
--- a/src/libs/xpcom18a4/xpcom/io/nsLocalFileUnix.cpp
+++ b/src/libs/xpcom18a4/xpcom/io/nsLocalFileUnix.cpp
@@ -631,7 +631,7 @@ nsLocalFile::CopyDirectoryTo(nsIFile *newParent)
     PRBool dirCheck, isSymlink;
     PRUint32 oldPerms;
 
-    if NS_FAILED((rv = IsDirectory(&dirCheck)))
+    if (NS_FAILED((rv = IsDirectory(&dirCheck))))
         return rv;
     if (!dirCheck)
         return CopyToNative(newParent, EmptyCString());
diff --git a/src/libs/xpcom18a4/xpcom/io/nsLocalFileWin.cpp b/src/libs/xpcom18a4/xpcom/io/nsLocalFileWin.cpp
index 9d6e266..63414fc 100644
--- a/src/libs/xpcom18a4/xpcom/io/nsLocalFileWin.cpp
+++ b/src/libs/xpcom18a4/xpcom/io/nsLocalFileWin.cpp
@@ -254,8 +254,10 @@ static nsresult ConvertWinError(DWORD winErr)
             break;
         case 0:
             rv = NS_OK;
+            break;
         default:
             rv = NS_ERROR_FAILURE;
+            break;
     }
     return rv;
 }
diff --git a/src/libs/xpcom18a4/xpcom/threads/nsAutoLock.h b/src/libs/xpcom18a4/xpcom/threads/nsAutoLock.h
index e6da8c6..a82d6ff 100644
--- a/src/libs/xpcom18a4/xpcom/threads/nsAutoLock.h
+++ b/src/libs/xpcom18a4/xpcom/threads/nsAutoLock.h
@@ -150,18 +150,14 @@ private:
 
     // Not meant to be implemented. This makes it a compiler error to
     // construct or assign an nsAutoLock object incorrectly.
-    nsAutoLock(void) {}
-    nsAutoLock(nsAutoLock& /*aLock*/) {}
-    nsAutoLock& operator =(nsAutoLock& /*aLock*/) {
-        return *this;
-    }
+    nsAutoLock(void);
+    nsAutoLock(const nsAutoLock& /*aLock*/);
+    nsAutoLock& operator =(const nsAutoLock& /*aLock*/);
 
     // Not meant to be implemented. This makes it a compiler error to
     // attempt to create an nsAutoLock object on the heap.
-    static void* operator new(size_t /*size*/) CPP_THROW_NEW {
-        return nsnull;
-    }
-    static void operator delete(void* /*memory*/) {}
+    static void* operator new(size_t /*size*/) CPP_THROW_NEW;
+    static void operator delete(void* /*memory*/);
 
 public:
     /**
@@ -310,18 +306,14 @@ private:
 
     // Not meant to be implemented. This makes it a compiler error to
     // construct or assign an nsAutoLock object incorrectly.
-    nsAutoMonitor(void) {}
-    nsAutoMonitor(nsAutoMonitor& /*aMon*/) {}
-    nsAutoMonitor& operator =(nsAutoMonitor& /*aMon*/) {
-        return *this;
-    }
+    nsAutoMonitor(void);
+    nsAutoMonitor(const nsAutoMonitor& /*aMon*/);
+    nsAutoMonitor& operator =(const nsAutoMonitor& /*aMon*/);
 
     // Not meant to be implemented. This makes it a compiler error to
     // attempt to create an nsAutoLock object on the heap.
-    static void* operator new(size_t /*size*/) CPP_THROW_NEW {
-        return nsnull;
-    }
-    static void operator delete(void* /*memory*/) {}
+    static void* operator new(size_t /*size*/) CPP_THROW_NEW;
+    static void operator delete(void* /*memory*/);
 };
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -377,18 +369,14 @@ private:
 
     // Not meant to be implemented. This makes it a compiler error to
     // construct or assign an nsAutoLock object incorrectly.
-    nsAutoCMonitor(void) {}
-    nsAutoCMonitor(nsAutoCMonitor& /*aMon*/) {}
-    nsAutoCMonitor& operator =(nsAutoCMonitor& /*aMon*/) {
-        return *this;
-    }
+    nsAutoCMonitor(void);
+    nsAutoCMonitor(const nsAutoCMonitor& /*aMon*/);
+    nsAutoCMonitor& operator =(const nsAutoCMonitor& /*aMon*/);
 
     // Not meant to be implemented. This makes it a compiler error to
     // attempt to create an nsAutoLock object on the heap.
-    static void* operator new(size_t /*size*/) CPP_THROW_NEW {
-        return nsnull;
-    }
-    static void operator delete(void* /*memory*/) {}
+    static void* operator new(size_t /*size*/) CPP_THROW_NEW;
+    static void operator delete(void* /*memory*/);
 };
 
 #endif // nsAutoLock_h__
diff --git a/src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_idl.c b/src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_idl.c
index 1d901e8..ae1827b 100644
--- a/src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_idl.c
+++ b/src/libs/xpcom18a4/xpcom/typelib/xpidl/xpidl_idl.c
@@ -382,7 +382,7 @@ NextIsInclude(input_callback_state *callback_state, char **startp,
         /* make sure we have accurate line info */
         IDL_file_get(&scratch, (int *)&data->lineno);
         fprintf(stderr,
-                "%s:%d: didn't find end of quoted include name \"%s\n",
+                "%s:%u: didn't find end of quoted include name \"%s\n",
                 scratch, data->lineno, filename);
         return -1;
     }
diff --git a/src/libs/xpcom18a4/xpcom/typelib/xpt/src/xpt_struct.c b/src/libs/xpcom18a4/xpcom/typelib/xpt/src/xpt_struct.c
index dd7c738..9343591 100644
--- a/src/libs/xpcom18a4/xpcom/typelib/xpt/src/xpt_struct.c
+++ b/src/libs/xpcom18a4/xpcom/typelib/xpt/src/xpt_struct.c
@@ -932,7 +932,7 @@ XPT_GetInterfaceIndexByName(XPTInterfaceDirectoryEntry *ide_block,
             return PR_TRUE;
         }
     }
-    indexp = 0;
+    *indexp = 0;
     return PR_FALSE;
 }
 
diff --git a/src/recompiler/VBoxREM.def b/src/recompiler/VBoxREM.def
index d87690f..3f6e39e 100644
--- a/src/recompiler/VBoxREM.def
+++ b/src/recompiler/VBoxREM.def
@@ -4,7 +4,7 @@
 ;
 
 ;
-; Copyright (C) 2006-2011 Oracle Corporation
+; Copyright (C) 2006-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;
@@ -47,6 +47,4 @@ EXPORTS
     REMR3NotifyFF
     REMR3NotifyCodePageChanged
     REMR3IsPageAccessHandled
-    REMR3NotifyPendingInterrupt
-    REMR3QueryPendingInterrupt
 
diff --git a/src/recompiler/VBoxREMWrapper.cpp b/src/recompiler/VBoxREMWrapper.cpp
index 18cd296..c3a56b4 100644
--- a/src/recompiler/VBoxREMWrapper.cpp
+++ b/src/recompiler/VBoxREMWrapper.cpp
@@ -4,7 +4,7 @@
  * VBoxREM Win64 DLL Wrapper.
  */
 /*
- * Copyright (C) 2006-2013 Oracle Corporation
+ * Copyright (C) 2006-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;
@@ -375,8 +375,6 @@ static DECLCALLBACKPTR(void, pfnREMR3NotifyDmaPending)(PVM);
 static DECLCALLBACKPTR(void, pfnREMR3NotifyQueuePending)(PVM);
 static DECLCALLBACKPTR(void, pfnREMR3NotifyFF)(PVM);
 static DECLCALLBACKPTR(int, pfnREMR3NotifyCodePageChanged)(PVM, PVMCPU, RTGCPTR);
-static DECLCALLBACKPTR(void, pfnREMR3NotifyPendingInterrupt)(PVM, PVMCPU, uint8_t);
-static DECLCALLBACKPTR(uint32_t, pfnREMR3QueryPendingInterrupt)(PVM, PVMCPU);
 static DECLCALLBACKPTR(int, pfnREMR3DisasEnableStepping)(PVM, bool);
 static DECLCALLBACKPTR(bool, pfnREMR3IsPageAccessHandled)(PVM, RTGCPHYS);
 /** @} */
@@ -1199,8 +1197,6 @@ static const REMFNDESC g_aExports[] =
     { "REMR3NotifyQueuePending",                (void *)&pfnREMR3NotifyQueuePending,                &g_aArgsVM[0],                              RT_ELEMENTS(g_aArgsVM),                                REMFNDESC_FLAGS_RET_VOID,   0,              NULL },
     { "REMR3NotifyFF",                          (void *)&pfnREMR3NotifyFF,                          &g_aArgsVM[0],                              RT_ELEMENTS(g_aArgsVM),                                REMFNDESC_FLAGS_RET_VOID,   0,              NULL },
     { "REMR3NotifyCodePageChanged",             (void *)&pfnREMR3NotifyCodePageChanged,             &g_aArgsNotifyCodePageChanged[0],           RT_ELEMENTS(g_aArgsNotifyCodePageChanged),             REMFNDESC_FLAGS_RET_INT,    sizeof(int),    NULL },
-    { "REMR3NotifyPendingInterrupt",            (void *)&pfnREMR3NotifyPendingInterrupt,            &g_aArgsNotifyPendingInterrupt[0],          RT_ELEMENTS(g_aArgsNotifyPendingInterrupt),            REMFNDESC_FLAGS_RET_VOID,   0,              NULL },
-    { "REMR3QueryPendingInterrupt",             (void *)&pfnREMR3QueryPendingInterrupt,             &g_aArgsVMandVMCPU[0],                      RT_ELEMENTS(g_aArgsVMandVMCPU),                        REMFNDESC_FLAGS_RET_INT,    sizeof(uint32_t), NULL },
     { "REMR3DisasEnableStepping",               (void *)&pfnREMR3DisasEnableStepping,               &g_aArgsDisasEnableStepping[0],             RT_ELEMENTS(g_aArgsDisasEnableStepping),               REMFNDESC_FLAGS_RET_INT,    sizeof(int),    NULL },
     { "REMR3IsPageAccessHandled",               (void *)&pfnREMR3IsPageAccessHandled,               &g_aArgsIsPageAccessHandled[0],             RT_ELEMENTS(g_aArgsIsPageAccessHandled),               REMFNDESC_FLAGS_RET_INT,    sizeof(bool),   NULL }
 };
@@ -2447,24 +2443,6 @@ REMR3DECL(int) REMR3DisasEnableStepping(PVM pVM, bool fEnable)
 #endif
 }
 
-REMR3DECL(void) REMR3NotifyPendingInterrupt(PVM pVM, PVMCPU pVCpu, uint8_t u8Interrupt)
-{
-#ifndef USE_REM_STUBS
-    Assert(VALID_PTR(pfnREMR3NotifyPendingInterrupt));
-    pfnREMR3NotifyPendingInterrupt(pVM, pVCpu, u8Interrupt);
-#endif
-}
-
-REMR3DECL(uint32_t) REMR3QueryPendingInterrupt(PVM pVM, PVMCPU pVCpu)
-{
-#ifdef USE_REM_STUBS
-    return REM_NO_PENDING_IRQ;
-#else
-    Assert(VALID_PTR(pfnREMR3QueryPendingInterrupt));
-    return pfnREMR3QueryPendingInterrupt(pVM, pVCpu);
-#endif
-}
-
 REMR3DECL(void) REMR3NotifyInterruptSet(PVM pVM, PVMCPU pVCpu)
 {
 #ifndef USE_REM_STUBS
diff --git a/src/recompiler/VBoxRecompiler.c b/src/recompiler/VBoxRecompiler.c
index 7716798..86e940d 100644
--- a/src/recompiler/VBoxRecompiler.c
+++ b/src/recompiler/VBoxRecompiler.c
@@ -4,7 +4,7 @@
  */
 
 /*
- * Copyright (C) 2006-2013 Oracle Corporation
+ * Copyright (C) 2006-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;
@@ -111,6 +111,7 @@ ram_addr_t get_phys_page_offset(target_ulong addr);
 *********************************************************************************************************************************/
 static DECLCALLBACK(int) remR3Save(PVM pVM, PSSMHANDLE pSSM);
 static DECLCALLBACK(int) remR3Load(PVM pVM, PSSMHANDLE pSSM, uint32_t uVersion, uint32_t uPass);
+static DECLCALLBACK(int) remR3LoadDone(PVM pVM, PSSMHANDLE pSSM);
 static void     remR3StateUpdate(PVM pVM, PVMCPU pVCpu);
 static int      remR3InitPhysRamSizeAndDirtyMap(PVM pVM, bool fGuarded);
 
@@ -351,7 +352,7 @@ REMR3DECL(int) REMR3Init(PVM pVM)
     cpu_single_env = &pVM->rem.s.Env;
 
     /* Nothing is pending by default */
-    pVM->rem.s.u32PendingInterrupt = REM_NO_PENDING_IRQ;
+    pVM->rem.s.uStateLoadPendingInterrupt = REM_NO_PENDING_IRQ;
 
     /*
      * Register ram types.
@@ -371,7 +372,7 @@ REMR3DECL(int) REMR3Init(PVM pVM)
     rc = SSMR3RegisterInternal(pVM, "rem", 1, REM_SAVED_STATE_VERSION, sizeof(uint32_t) * 10,
                                NULL, NULL, NULL,
                                NULL, remR3Save, NULL,
-                               NULL, remR3Load, NULL);
+                               NULL, remR3Load, remR3LoadDone);
     if (RT_FAILURE(rc))
         return rc;
 
@@ -636,7 +637,7 @@ static DECLCALLBACK(int) remR3Save(PVM pVM, PSSMHANDLE pSSM)
 
     /* Remember if we've entered raw mode (vital for ring 1 checks in e.g. iret emulation). */
     SSMR3PutU32(pSSM, !!(pRem->Env.state & CPU_RAW_RING0));
-    SSMR3PutU32(pSSM, pVM->rem.s.u32PendingInterrupt);
+    SSMR3PutU32(pSSM, REM_NO_PENDING_IRQ);
 
     return SSMR3PutU32(pSSM, ~0);       /* terminator */
 }
@@ -731,9 +732,12 @@ static DECLCALLBACK(int) remR3Load(PVM pVM, PSSMHANDLE pSSM, uint32_t uVersion,
             SSMR3GetGCPtr(pSSM, &pRem->aGCPtrInvalidatedPages[i]);
     }
 
-    rc = SSMR3GetUInt(pSSM, &pVM->rem.s.u32PendingInterrupt);
-    if (RT_FAILURE(rc))
-        return rc;
+    rc = SSMR3GetUInt(pSSM, &pVM->rem.s.uStateLoadPendingInterrupt);
+    AssertRCReturn(rc, rc);
+    AssertLogRelMsgReturn(   pVM->rem.s.uStateLoadPendingInterrupt == REM_NO_PENDING_IRQ
+                          || pVM->rem.s.uStateLoadPendingInterrupt < 256,
+                          ("uStateLoadPendingInterrupt=%#x\n", pVM->rem.s.uStateLoadPendingInterrupt),
+                          VERR_SSM_UNEXPECTED_DATA);
 
     /* check the terminator. */
     rc = SSMR3GetU32(pSSM, &u32Sep);
@@ -769,6 +773,21 @@ static DECLCALLBACK(int) remR3Load(PVM pVM, PSSMHANDLE pSSM, uint32_t uVersion,
 }
 
 
+/**
+ * @callback_method_impl{FNSSMINTLOADDONE,
+ *    For pushing misdesigned pending-interrupt mess to TRPM where it belongs. }
+ */
+static DECLCALLBACK(int) remR3LoadDone(PVM pVM, PSSMHANDLE pSSM)
+{
+    if (pVM->rem.s.uStateLoadPendingInterrupt != REM_NO_PENDING_IRQ)
+    {
+        int rc = TRPMAssertTrap(&pVM->aCpus[0], pVM->rem.s.uStateLoadPendingInterrupt, TRPM_HARDWARE_INT);
+        AssertLogRelMsgReturn(rc, ("uStateLoadPendingInterrupt=%#x rc=%Rrc\n", pVM->rem.s.uStateLoadPendingInterrupt, rc), rc);
+        pVM->rem.s.uStateLoadPendingInterrupt = REM_NO_PENDING_IRQ;
+    }
+    return VINF_SUCCESS;
+}
+
 
 #undef LOG_GROUP
 #define LOG_GROUP LOG_GROUP_REM_RUN
@@ -1118,8 +1137,7 @@ static int remR3RunLoggingStep(PVM pVM, PVMCPU pVCpu)
 #else
         pVM->rem.s.Env.interrupt_request = CPU_INTERRUPT_SINGLE_INSTR;
 #endif
-        if (   VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_UPDATE_APIC | VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC)
-            || pVM->rem.s.u32PendingInterrupt != REM_NO_PENDING_IRQ)
+        if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_UPDATE_APIC | VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC))
             pVM->rem.s.Env.interrupt_request |= CPU_INTERRUPT_HARD;
         RTLogPrintf("remR3RunLoggingStep: interrupt_request=%#x halted=%d exception_index=%#x\n",
                     pVM->rem.s.Env.interrupt_request,
@@ -2453,10 +2471,8 @@ REMR3DECL(int)  REMR3State(PVM pVM, PVMCPU pVCpu)
         pVM->rem.s.Env.exception_index = u8TrapNo;
         if (enmType != TRPM_SOFTWARE_INT)
         {
-            pVM->rem.s.Env.exception_is_int     = 0;
-#ifdef IEM_VERIFICATION_MODE /* Ugly hack, needs proper fixing. */
-            pVM->rem.s.Env.exception_is_int     = enmType == TRPM_HARDWARE_INT ? 0x42 : 0;
-#endif
+            pVM->rem.s.Env.exception_is_int     = enmType == TRPM_HARDWARE_INT
+                                                ? EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ : 0; /* HACK ALERT! */
             pVM->rem.s.Env.exception_next_eip   = pVM->rem.s.Env.eip;
         }
         else
@@ -2521,11 +2537,8 @@ REMR3DECL(int)  REMR3State(PVM pVM, PVMCPU pVCpu)
     if (VMCPU_FF_TEST_AND_CLEAR(pVCpu, VMCPU_FF_UPDATE_APIC))
         APICUpdatePendingInterrupts(pVCpu);
 #endif
-    if (    pVM->rem.s.u32PendingInterrupt != REM_NO_PENDING_IRQ
-        ||  VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC))
-    {
+    if (VMCPU_FF_IS_PENDING(pVCpu, VMCPU_FF_INTERRUPT_APIC | VMCPU_FF_INTERRUPT_PIC))
         pVM->rem.s.Env.interrupt_request |= CPU_INTERRUPT_HARD;
-    }
 
     /*
      * We're now in REM mode.
@@ -2782,7 +2795,9 @@ REMR3DECL(int) REMR3StateBack(PVM pVM, PVMCPU pVCpu)
         int rc;
 
         Log(("REMR3StateBack: Pending trap %x %d\n", pVM->rem.s.Env.exception_index, pVM->rem.s.Env.exception_is_int));
-        TRPMEVENT enmType = pVM->rem.s.Env.exception_is_int ? TRPM_SOFTWARE_INT : TRPM_TRAP;
+        TRPMEVENT enmType = pVM->rem.s.Env.exception_is_int == 0                                    ? TRPM_TRAP
+                          : pVM->rem.s.Env.exception_is_int == EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ  ? TRPM_HARDWARE_INT
+                          :                                                                           TRPM_SOFTWARE_INT;
         rc = TRPMAssertTrap(pVCpu, pVM->rem.s.Env.exception_index, enmType);
         AssertRC(rc);
         if (enmType == TRPM_TRAP)
@@ -4244,34 +4259,6 @@ const char *lookup_symbol(target_ulong orig_addr)
 
 /* -+- FF notifications -+- */
 
-
-/**
- * Notification about a pending interrupt.
- *
- * @param   pVM             VM Handle.
- * @param   pVCpu           VMCPU Handle.
- * @param   u8Interrupt     Interrupt
- * @thread  The emulation thread.
- */
-REMR3DECL(void) REMR3NotifyPendingInterrupt(PVM pVM, PVMCPU pVCpu, uint8_t u8Interrupt)
-{
-    Assert(pVM->rem.s.u32PendingInterrupt == REM_NO_PENDING_IRQ);
-    pVM->rem.s.u32PendingInterrupt = u8Interrupt;
-}
-
-/**
- * Notification about a pending interrupt.
- *
- * @returns Pending interrupt or REM_NO_PENDING_IRQ
- * @param   pVM             VM Handle.
- * @param   pVCpu           VMCPU Handle.
- * @thread  The emulation thread.
- */
-REMR3DECL(uint32_t) REMR3QueryPendingInterrupt(PVM pVM, PVMCPU pVCpu)
-{
-    return pVM->rem.s.u32PendingInterrupt;
-}
-
 /**
  * Notification about the interrupt FF being set.
  *
@@ -4522,19 +4509,7 @@ int cpu_get_pic_interrupt(CPUX86State *env)
      * with the (a)pic.
      */
     /* Note! We assume we will go directly to the recompiler to handle the pending interrupt! */
-    /** @todo r=bird: In the long run we should just do the interrupt handling in EM/CPUM/TRPM/somewhere and
-     * if we cannot execute the interrupt handler in raw-mode just reschedule to REM. Once that is done we
-     * remove this kludge. */
-    if (env->pVM->rem.s.u32PendingInterrupt != REM_NO_PENDING_IRQ)
-    {
-        rc = VINF_SUCCESS;
-        Assert(env->pVM->rem.s.u32PendingInterrupt <= 255);
-        u8Interrupt = env->pVM->rem.s.u32PendingInterrupt;
-        env->pVM->rem.s.u32PendingInterrupt = REM_NO_PENDING_IRQ;
-    }
-    else
-        rc = PDMGetInterrupt(env->pVCpu, &u8Interrupt);
-
+    rc = PDMGetInterrupt(env->pVCpu, &u8Interrupt);
     LogFlow(("cpu_get_pic_interrupt: u8Interrupt=%d rc=%Rrc pc=%04x:%08llx ~flags=%08llx\n",
              u8Interrupt, rc, env->segs[R_CS].selector, (uint64_t)env->eip, (uint64_t)env->eflags));
     if (RT_SUCCESS(rc))
diff --git a/src/recompiler/cpu-exec.c b/src/recompiler/cpu-exec.c
index 3241ccf..9716a09 100644
--- a/src/recompiler/cpu-exec.c
+++ b/src/recompiler/cpu-exec.c
@@ -344,18 +344,13 @@ int cpu_exec(CPUState *env1)
                     Log(("do_interrupt: vec=%#x int=%d pc=%04x:%RGv\n", env->exception_index, env->exception_is_int,
                          env->segs[R_CS].selector, (RTGCPTR)env->exception_next_eip));
 #  endif /* VBOX */
-#  ifdef IEM_VERIFICATION_MODE /* Ugly hacks */
                     do_interrupt(env->exception_index,
-                                 env->exception_is_int && env->exception_is_int != 0x42,
+                                 env->exception_is_int && env->exception_is_int != EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ,
                                  env->error_code,
                                  env->exception_next_eip,
-                                 env->exception_is_int == 0x42);
+                                 env->exception_is_int == EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ);
+#  ifdef IEM_VERIFICATION_MODE /* Ugly hacks */
                     cpu_loop_exit();
-#  else
-                    do_interrupt(env->exception_index,
-                                 env->exception_is_int,
-                                 env->error_code,
-                                 env->exception_next_eip, 0);
 #  endif
                     /* successfully delivered */
                     env->old_exception = -1;
diff --git a/src/recompiler/target-i386/cpu.h b/src/recompiler/target-i386/cpu.h
index 6b7a7d1..c643db8 100644
--- a/src/recompiler/target-i386/cpu.h
+++ b/src/recompiler/target-i386/cpu.h
@@ -705,6 +705,9 @@ typedef struct CPUX86State {
     /* exception/interrupt handling */
     int error_code;
     int exception_is_int;
+#ifdef VBOX
+# define EXCEPTION_IS_INT_VALUE_HARDWARE_IRQ 0x42 /**< Special CPUX86State::exception_is_int value indicating hardware irq.  (HACK ALERT) */
+#endif
     target_ulong exception_next_eip;
     target_ulong dr[8]; /* debug registers */
     union {
diff --git a/src/recompiler/tcg/i386/tcg-target.c b/src/recompiler/tcg/i386/tcg-target.c
index 3dc50fa..1bcccd7 100644
--- a/src/recompiler/tcg/i386/tcg-target.c
+++ b/src/recompiler/tcg/i386/tcg-target.c
@@ -724,7 +724,7 @@ static void tgen_arithi(TCGContext *s, int c, int r0,
        partial flags update stalls on Pentium4 and are not recommended
        by current Intel optimization manuals.  */
     if (!cf && (c == ARITH_ADD || c == ARITH_SUB) && (val == 1 || val == -1)) {
-        int is_inc = (c == ARITH_ADD) ^ (val < 0);
+        int is_inc = (c == ARITH_ADD) != (val < 0); /* VBox: cppcheck: "xor" for bools is "not-equals" */
         if (TCG_TARGET_REG_BITS == 64) {
             /* The single-byte increment encodings are re-tasked as the
                REX prefixes.  Use the MODRM encoding.  */

-- 
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