public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [PATCH v1 0/4] UncrustifyCheck Ignore Support
@ 2022-03-22  1:58 Michael Kubacki
  2022-03-22  1:58 ` [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths Michael Kubacki
                   ` (4 more replies)
  0 siblings, 5 replies; 19+ messages in thread
From: Michael Kubacki @ 2022-03-22  1:58 UTC (permalink / raw)
  To: devel
  Cc: Michael D Kinney, Liming Gao, Sean Brogan, Bret Barkelew,
	Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann,
	Rebecca Cran, Peter Grehan, Laszlo Ersek

From: Michael Kubacki <michael.kubacki@microsoft.com>

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875

This patch series:
1. Updates ignore handling in UncrustifyCheck including adding
a new CI plugin configuration option to ignore files in a package.
2. Reverts Uncrustify changes as requested for files in OvmfPkg.
3. Uses the new ignore file option to ignore the files that had
Uncrustify formatting reverted in OvmfPkg.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Cc: Peter Grehan <grehan@freebsd.org>
Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>

Michael Kubacki (4):
  .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
  .pytool/Plugin/UncrustifyCheck: Add ignore file support
  OvmfPkg: Revert Uncrustify formatting in VbeShim.h files
  OvmfPkg: Do not check VbeShim.h formatting with Uncrustify

 .pytool/Plugin/UncrustifyCheck/Readme.md          |    7 +
 .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py |   30 +-
 OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h               | 1811 ++++++++++----------
 OvmfPkg/OvmfPkg.ci.yaml                           |    5 +
 OvmfPkg/QemuVideoDxe/VbeShim.h                    | 1389 ++++++++-------
 5 files changed, 1640 insertions(+), 1602 deletions(-)

-- 
2.28.0.windows.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
  2022-03-22  1:58 [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael Kubacki
@ 2022-03-22  1:58 ` Michael Kubacki
  2022-03-22 16:07   ` [edk2-devel] " Michael D Kinney
  2022-03-22  1:58 ` [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support Michael Kubacki
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Michael Kubacki @ 2022-03-22  1:58 UTC (permalink / raw)
  To: devel; +Cc: Michael D Kinney, Liming Gao, Sean Brogan, Bret Barkelew

From: Michael Kubacki <michael.kubacki@microsoft.com>

Currently, UncrustifyCheck._get_git_ignored_paths() is documented to
return a list of absolute file paths but it currently returns a list
of relative file paths.

This change updates the function to return a list of absolute file
paths. The result is later compared to the list of absolute file
paths for files to run against Uncrustify.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
---
 .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
index 82db7a5a438b..dc133fecc4b2 100644
--- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
+++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
@@ -292,7 +292,11 @@ class UncrustifyCheck(ICiBuildPlugin):
                 f"An error occurred reading git ignore settings. This will prevent Uncrustify from running against the expected set of files.")
 
         # Note: This will potentially be a large list, but at least sorted
-        return outstream_buffer.getvalue().strip().splitlines()
+        rel_paths = outstream_buffer.getvalue().strip().splitlines()
+        abs_paths = []
+        for path in rel_paths:
+            abs_paths.append(os.path.join(self._abs_workspace_path, path))
+        return abs_paths
 
     def _get_git_submodule_paths(self) -> List[str]:
         """
-- 
2.28.0.windows.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
  2022-03-22  1:58 [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael Kubacki
  2022-03-22  1:58 ` [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths Michael Kubacki
@ 2022-03-22  1:58 ` Michael Kubacki
  2022-03-22 16:14   ` Michael D Kinney
  2022-03-22  1:58 ` [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files Michael Kubacki
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 19+ messages in thread
From: Michael Kubacki @ 2022-03-22  1:58 UTC (permalink / raw)
  To: devel; +Cc: Michael D Kinney, Liming Gao, Sean Brogan, Bret Barkelew

From: Michael Kubacki <michael.kubacki@microsoft.com>

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880

Currently UncrustifyCheck.py provides the following exclusion
options:

1. Override the type of files UncrustifyCheck operates against by
default (.c and .h files). Using the "IgnoreStandardPaths"
configuration option.

2. By default, UncrustifyCheck skips files in git submodules and
ignored by git (the "SkipGitExclusions" configuration option can
override this behavior).

The goal of UncrustifyCheck is to provide consistent formatting
across the codebase. In some rare circumstances, maintainers might
need to exclude a specific file (or file pattern) within their
package. For example, a small set of auto-generated files from
another repository.

This change adds a new configuration option that can be specified
in a package CI YAML file to describe a list of files within the
package that should be ignored by UncrustifyCheck.

The configuration option is called "IgnoreFiles" and it uses similar
syntax to git ignore to ignore a list of files.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
---
 .pytool/Plugin/UncrustifyCheck/Readme.md          |  7 ++++++
 .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 24 ++++++++++++++++++++
 2 files changed, 31 insertions(+)

diff --git a/.pytool/Plugin/UncrustifyCheck/Readme.md b/.pytool/Plugin/UncrustifyCheck/Readme.md
index 0c46fd241a7a..efe7a573e4fa 100644
--- a/.pytool/Plugin/UncrustifyCheck/Readme.md
+++ b/.pytool/Plugin/UncrustifyCheck/Readme.md
@@ -41,6 +41,7 @@ The plugin can be configured with a few optional configuration options.
       "AdditionalIncludePaths": [], # Additional paths to check formatting (wildcards supported).
       "AuditOnly": False,           # Don't fail the build if there are errors.  Just log them.
       "ConfigFilePath": "",         # Custom path to an Uncrustify config file.
+      "IgnoreFiles": [],            # A list of file patterns to ignore.
       "IgnoreStandardPaths": [],    # Standard Plugin defined paths that should be ignored.
       "OutputFileDiffs": True,      # Output chunks of formatting diffs in the test case log.
                                     # This can significantly slow down the plugin on very large packages.
@@ -67,6 +68,12 @@ the test as skipped. This allows visibility into the failures without breaking t
 
 When specified in the config file, this is a package relative path to the Uncrustify configuration file.
 
+### `IgnoreFiles`
+
+This option supports .gitignore file and folder matching strings including wildcards.
+
+The files specified by this configuration option will not be processed by Uncrustify.
+
 ### `IgnoreStandardPaths`
 
 This plugin by default will check the below standard paths. A package configuration file can specify any of these paths
diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
index dc133fecc4b2..e8370381032f 100644
--- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
+++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
@@ -13,11 +13,13 @@ import os
 import pathlib
 import shutil
 import timeit
+from collections.abc import Callable
 from edk2toolext.environment import version_aggregator
 from edk2toolext.environment.plugin_manager import PluginManager
 from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPlugin
 from edk2toolext.environment.plugintypes.uefi_helper_plugin import HelperFunctions
 from edk2toolext.environment.var_dict import VarDict
+from edk2toollib.gitignore_parser import parse_gitignore_lines
 from edk2toollib.log.junit_report_format import JunitReportTestCase
 from edk2toollib.uefi.edk2.path_utilities import Edk2Path
 from edk2toollib.utility_functions import  RunCmd
@@ -273,6 +275,15 @@ class UncrustifyCheck(ICiBuildPlugin):
             f"-c {self._app_config_file} -F {self._app_input_file_path} --if-changed --suffix {UncrustifyCheck.FORMATTED_FILE_EXTENSION}", outstream=output)
         self._app_output = output.getvalue().strip().splitlines()
 
+    def _get_files_ignored_in_config(self) -> Callable[[str], bool]:
+        """"
+        Returns a function that returns true if a given file string path is ignored in the plugin configuration file and false otherwise.
+        """
+        ignored_files = []
+        if "IgnoreFiles" in self._package_config:
+            ignored_files = self._package_config["IgnoreFiles"]
+        return parse_gitignore_lines(ignored_files, os.path.join(self._abs_workspace_path, "nofile.txt"), self._abs_workspace_path)
+
     def _get_git_ignored_paths(self) -> List[str]:
         """"
         Returns a list of file absolute path strings to all files ignored in this git repository.
@@ -464,6 +475,19 @@ class UncrustifyCheck(ICiBuildPlugin):
             self._abs_file_paths_to_format.extend(
                 [str(path.resolve()) for path in pathlib.Path(self._abs_package_path).rglob(path)])
 
+        # Remove files ignore in the plugin configuration file
+        plugin_ignored_files = list(filter(self._get_files_ignored_in_config(), self._abs_file_paths_to_format))
+
+        if plugin_ignored_files:
+            logging.info(
+                f"{self._package_name} file count before plugin ignore file exclusion: {len(self._abs_file_paths_to_format)}")
+            for path in plugin_ignored_files:
+                if path in self._abs_file_paths_to_format:
+                    logging.info(f"  File ignored in plugin config file: {path}")
+                    self._abs_file_paths_to_format.remove(path)
+            logging.info(
+                f"{self._package_name} file count after plugin ignore file exclusion: {len(self._abs_file_paths_to_format)}")
+
         if not "SkipGitExclusions" in self._package_config or not self._package_config["SkipGitExclusions"]:
             # Remove files ignored by git
             logging.info(
-- 
2.28.0.windows.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files
  2022-03-22  1:58 [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael Kubacki
  2022-03-22  1:58 ` [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths Michael Kubacki
  2022-03-22  1:58 ` [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support Michael Kubacki
@ 2022-03-22  1:58 ` Michael Kubacki
  2022-03-22  6:34   ` Laszlo Ersek
  2022-03-22  8:45   ` [edk2-devel] " Gerd Hoffmann
  2022-03-22  1:58 ` [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify Michael Kubacki
  2022-03-22 16:14 ` [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael D Kinney
  4 siblings, 2 replies; 19+ messages in thread
From: Michael Kubacki @ 2022-03-22  1:58 UTC (permalink / raw)
  To: devel
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann,
	Rebecca Cran, Peter Grehan, Laszlo Ersek

From: Michael Kubacki <michael.kubacki@microsoft.com>

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875

Reverts changes automatically applied by Uncrustify in commit
ac0a286.

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Cc: Peter Grehan <grehan@freebsd.org>
Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
---
 OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h | 1811 ++++++++++----------
 OvmfPkg/QemuVideoDxe/VbeShim.h      | 1389 ++++++++-------
 2 files changed, 1599 insertions(+), 1601 deletions(-)

diff --git a/OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h b/OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h
index 4becb1afa1c8..72b8a3f25f83 100644
--- a/OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h
+++ b/OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h
@@ -1,913 +1,912 @@
 //
 // THIS FILE WAS GENERATED BY "VbeShim.sh". DO NOT EDIT.
 //
-
 #ifndef _VBE_SHIM_H_
 #define _VBE_SHIM_H_
-STATIC CONST UINT8  mVbeShim[] = {
-  /* 00000000 nop                            */ 0x90,
-  /* 00000001 nop                            */ 0x90,
-  /* 00000002 nop                            */ 0x90,
-  /* 00000003 nop                            */ 0x90,
-  /* 00000004 nop                            */ 0x90,
-  /* 00000005 nop                            */ 0x90,
-  /* 00000006 nop                            */ 0x90,
-  /* 00000007 nop                            */ 0x90,
-  /* 00000008 nop                            */ 0x90,
-  /* 00000009 nop                            */ 0x90,
-  /* 0000000A nop                            */ 0x90,
-  /* 0000000B nop                            */ 0x90,
-  /* 0000000C nop                            */ 0x90,
-  /* 0000000D nop                            */ 0x90,
-  /* 0000000E nop                            */ 0x90,
-  /* 0000000F nop                            */ 0x90,
-  /* 00000010 nop                            */ 0x90,
-  /* 00000011 nop                            */ 0x90,
-  /* 00000012 nop                            */ 0x90,
-  /* 00000013 nop                            */ 0x90,
-  /* 00000014 nop                            */ 0x90,
-  /* 00000015 nop                            */ 0x90,
-  /* 00000016 nop                            */ 0x90,
-  /* 00000017 nop                            */ 0x90,
-  /* 00000018 nop                            */ 0x90,
-  /* 00000019 nop                            */ 0x90,
-  /* 0000001A nop                            */ 0x90,
-  /* 0000001B nop                            */ 0x90,
-  /* 0000001C nop                            */ 0x90,
-  /* 0000001D nop                            */ 0x90,
-  /* 0000001E nop                            */ 0x90,
-  /* 0000001F nop                            */ 0x90,
-  /* 00000020 nop                            */ 0x90,
-  /* 00000021 nop                            */ 0x90,
-  /* 00000022 nop                            */ 0x90,
-  /* 00000023 nop                            */ 0x90,
-  /* 00000024 nop                            */ 0x90,
-  /* 00000025 nop                            */ 0x90,
-  /* 00000026 nop                            */ 0x90,
-  /* 00000027 nop                            */ 0x90,
-  /* 00000028 nop                            */ 0x90,
-  /* 00000029 nop                            */ 0x90,
-  /* 0000002A nop                            */ 0x90,
-  /* 0000002B nop                            */ 0x90,
-  /* 0000002C nop                            */ 0x90,
-  /* 0000002D nop                            */ 0x90,
-  /* 0000002E nop                            */ 0x90,
-  /* 0000002F nop                            */ 0x90,
-  /* 00000030 nop                            */ 0x90,
-  /* 00000031 nop                            */ 0x90,
-  /* 00000032 nop                            */ 0x90,
-  /* 00000033 nop                            */ 0x90,
-  /* 00000034 nop                            */ 0x90,
-  /* 00000035 nop                            */ 0x90,
-  /* 00000036 nop                            */ 0x90,
-  /* 00000037 nop                            */ 0x90,
-  /* 00000038 nop                            */ 0x90,
-  /* 00000039 nop                            */ 0x90,
-  /* 0000003A nop                            */ 0x90,
-  /* 0000003B nop                            */ 0x90,
-  /* 0000003C nop                            */ 0x90,
-  /* 0000003D nop                            */ 0x90,
-  /* 0000003E nop                            */ 0x90,
-  /* 0000003F nop                            */ 0x90,
-  /* 00000040 nop                            */ 0x90,
-  /* 00000041 nop                            */ 0x90,
-  /* 00000042 nop                            */ 0x90,
-  /* 00000043 nop                            */ 0x90,
-  /* 00000044 nop                            */ 0x90,
-  /* 00000045 nop                            */ 0x90,
-  /* 00000046 nop                            */ 0x90,
-  /* 00000047 nop                            */ 0x90,
-  /* 00000048 nop                            */ 0x90,
-  /* 00000049 nop                            */ 0x90,
-  /* 0000004A nop                            */ 0x90,
-  /* 0000004B nop                            */ 0x90,
-  /* 0000004C nop                            */ 0x90,
-  /* 0000004D nop                            */ 0x90,
-  /* 0000004E nop                            */ 0x90,
-  /* 0000004F nop                            */ 0x90,
-  /* 00000050 nop                            */ 0x90,
-  /* 00000051 nop                            */ 0x90,
-  /* 00000052 nop                            */ 0x90,
-  /* 00000053 nop                            */ 0x90,
-  /* 00000054 nop                            */ 0x90,
-  /* 00000055 nop                            */ 0x90,
-  /* 00000056 nop                            */ 0x90,
-  /* 00000057 nop                            */ 0x90,
-  /* 00000058 nop                            */ 0x90,
-  /* 00000059 nop                            */ 0x90,
-  /* 0000005A nop                            */ 0x90,
-  /* 0000005B nop                            */ 0x90,
-  /* 0000005C nop                            */ 0x90,
-  /* 0000005D nop                            */ 0x90,
-  /* 0000005E nop                            */ 0x90,
-  /* 0000005F nop                            */ 0x90,
-  /* 00000060 nop                            */ 0x90,
-  /* 00000061 nop                            */ 0x90,
-  /* 00000062 nop                            */ 0x90,
-  /* 00000063 nop                            */ 0x90,
-  /* 00000064 nop                            */ 0x90,
-  /* 00000065 nop                            */ 0x90,
-  /* 00000066 nop                            */ 0x90,
-  /* 00000067 nop                            */ 0x90,
-  /* 00000068 nop                            */ 0x90,
-  /* 00000069 nop                            */ 0x90,
-  /* 0000006A nop                            */ 0x90,
-  /* 0000006B nop                            */ 0x90,
-  /* 0000006C nop                            */ 0x90,
-  /* 0000006D nop                            */ 0x90,
-  /* 0000006E nop                            */ 0x90,
-  /* 0000006F nop                            */ 0x90,
-  /* 00000070 nop                            */ 0x90,
-  /* 00000071 nop                            */ 0x90,
-  /* 00000072 nop                            */ 0x90,
-  /* 00000073 nop                            */ 0x90,
-  /* 00000074 nop                            */ 0x90,
-  /* 00000075 nop                            */ 0x90,
-  /* 00000076 nop                            */ 0x90,
-  /* 00000077 nop                            */ 0x90,
-  /* 00000078 nop                            */ 0x90,
-  /* 00000079 nop                            */ 0x90,
-  /* 0000007A nop                            */ 0x90,
-  /* 0000007B nop                            */ 0x90,
-  /* 0000007C nop                            */ 0x90,
-  /* 0000007D nop                            */ 0x90,
-  /* 0000007E nop                            */ 0x90,
-  /* 0000007F nop                            */ 0x90,
-  /* 00000080 nop                            */ 0x90,
-  /* 00000081 nop                            */ 0x90,
-  /* 00000082 nop                            */ 0x90,
-  /* 00000083 nop                            */ 0x90,
-  /* 00000084 nop                            */ 0x90,
-  /* 00000085 nop                            */ 0x90,
-  /* 00000086 nop                            */ 0x90,
-  /* 00000087 nop                            */ 0x90,
-  /* 00000088 nop                            */ 0x90,
-  /* 00000089 nop                            */ 0x90,
-  /* 0000008A nop                            */ 0x90,
-  /* 0000008B nop                            */ 0x90,
-  /* 0000008C nop                            */ 0x90,
-  /* 0000008D nop                            */ 0x90,
-  /* 0000008E nop                            */ 0x90,
-  /* 0000008F nop                            */ 0x90,
-  /* 00000090 nop                            */ 0x90,
-  /* 00000091 nop                            */ 0x90,
-  /* 00000092 nop                            */ 0x90,
-  /* 00000093 nop                            */ 0x90,
-  /* 00000094 nop                            */ 0x90,
-  /* 00000095 nop                            */ 0x90,
-  /* 00000096 nop                            */ 0x90,
-  /* 00000097 nop                            */ 0x90,
-  /* 00000098 nop                            */ 0x90,
-  /* 00000099 nop                            */ 0x90,
-  /* 0000009A nop                            */ 0x90,
-  /* 0000009B nop                            */ 0x90,
-  /* 0000009C nop                            */ 0x90,
-  /* 0000009D nop                            */ 0x90,
-  /* 0000009E nop                            */ 0x90,
-  /* 0000009F nop                            */ 0x90,
-  /* 000000A0 nop                            */ 0x90,
-  /* 000000A1 nop                            */ 0x90,
-  /* 000000A2 nop                            */ 0x90,
-  /* 000000A3 nop                            */ 0x90,
-  /* 000000A4 nop                            */ 0x90,
-  /* 000000A5 nop                            */ 0x90,
-  /* 000000A6 nop                            */ 0x90,
-  /* 000000A7 nop                            */ 0x90,
-  /* 000000A8 nop                            */ 0x90,
-  /* 000000A9 nop                            */ 0x90,
-  /* 000000AA nop                            */ 0x90,
-  /* 000000AB nop                            */ 0x90,
-  /* 000000AC nop                            */ 0x90,
-  /* 000000AD nop                            */ 0x90,
-  /* 000000AE nop                            */ 0x90,
-  /* 000000AF nop                            */ 0x90,
-  /* 000000B0 nop                            */ 0x90,
-  /* 000000B1 nop                            */ 0x90,
-  /* 000000B2 nop                            */ 0x90,
-  /* 000000B3 nop                            */ 0x90,
-  /* 000000B4 nop                            */ 0x90,
-  /* 000000B5 nop                            */ 0x90,
-  /* 000000B6 nop                            */ 0x90,
-  /* 000000B7 nop                            */ 0x90,
-  /* 000000B8 nop                            */ 0x90,
-  /* 000000B9 nop                            */ 0x90,
-  /* 000000BA nop                            */ 0x90,
-  /* 000000BB nop                            */ 0x90,
-  /* 000000BC nop                            */ 0x90,
-  /* 000000BD nop                            */ 0x90,
-  /* 000000BE nop                            */ 0x90,
-  /* 000000BF nop                            */ 0x90,
-  /* 000000C0 nop                            */ 0x90,
-  /* 000000C1 nop                            */ 0x90,
-  /* 000000C2 nop                            */ 0x90,
-  /* 000000C3 nop                            */ 0x90,
-  /* 000000C4 nop                            */ 0x90,
-  /* 000000C5 nop                            */ 0x90,
-  /* 000000C6 nop                            */ 0x90,
-  /* 000000C7 nop                            */ 0x90,
-  /* 000000C8 nop                            */ 0x90,
-  /* 000000C9 nop                            */ 0x90,
-  /* 000000CA nop                            */ 0x90,
-  /* 000000CB nop                            */ 0x90,
-  /* 000000CC nop                            */ 0x90,
-  /* 000000CD nop                            */ 0x90,
-  /* 000000CE nop                            */ 0x90,
-  /* 000000CF nop                            */ 0x90,
-  /* 000000D0 nop                            */ 0x90,
-  /* 000000D1 nop                            */ 0x90,
-  /* 000000D2 nop                            */ 0x90,
-  /* 000000D3 nop                            */ 0x90,
-  /* 000000D4 nop                            */ 0x90,
-  /* 000000D5 nop                            */ 0x90,
-  /* 000000D6 nop                            */ 0x90,
-  /* 000000D7 nop                            */ 0x90,
-  /* 000000D8 nop                            */ 0x90,
-  /* 000000D9 nop                            */ 0x90,
-  /* 000000DA nop                            */ 0x90,
-  /* 000000DB nop                            */ 0x90,
-  /* 000000DC nop                            */ 0x90,
-  /* 000000DD nop                            */ 0x90,
-  /* 000000DE nop                            */ 0x90,
-  /* 000000DF nop                            */ 0x90,
-  /* 000000E0 nop                            */ 0x90,
-  /* 000000E1 nop                            */ 0x90,
-  /* 000000E2 nop                            */ 0x90,
-  /* 000000E3 nop                            */ 0x90,
-  /* 000000E4 nop                            */ 0x90,
-  /* 000000E5 nop                            */ 0x90,
-  /* 000000E6 nop                            */ 0x90,
-  /* 000000E7 nop                            */ 0x90,
-  /* 000000E8 nop                            */ 0x90,
-  /* 000000E9 nop                            */ 0x90,
-  /* 000000EA nop                            */ 0x90,
-  /* 000000EB nop                            */ 0x90,
-  /* 000000EC nop                            */ 0x90,
-  /* 000000ED nop                            */ 0x90,
-  /* 000000EE nop                            */ 0x90,
-  /* 000000EF nop                            */ 0x90,
-  /* 000000F0 nop                            */ 0x90,
-  /* 000000F1 nop                            */ 0x90,
-  /* 000000F2 nop                            */ 0x90,
-  /* 000000F3 nop                            */ 0x90,
-  /* 000000F4 nop                            */ 0x90,
-  /* 000000F5 nop                            */ 0x90,
-  /* 000000F6 nop                            */ 0x90,
-  /* 000000F7 nop                            */ 0x90,
-  /* 000000F8 nop                            */ 0x90,
-  /* 000000F9 nop                            */ 0x90,
-  /* 000000FA nop                            */ 0x90,
-  /* 000000FB nop                            */ 0x90,
-  /* 000000FC nop                            */ 0x90,
-  /* 000000FD nop                            */ 0x90,
-  /* 000000FE nop                            */ 0x90,
-  /* 000000FF nop                            */ 0x90,
-  /* 00000100 nop                            */ 0x90,
-  /* 00000101 nop                            */ 0x90,
-  /* 00000102 nop                            */ 0x90,
-  /* 00000103 nop                            */ 0x90,
-  /* 00000104 nop                            */ 0x90,
-  /* 00000105 nop                            */ 0x90,
-  /* 00000106 nop                            */ 0x90,
-  /* 00000107 nop                            */ 0x90,
-  /* 00000108 nop                            */ 0x90,
-  /* 00000109 nop                            */ 0x90,
-  /* 0000010A nop                            */ 0x90,
-  /* 0000010B nop                            */ 0x90,
-  /* 0000010C nop                            */ 0x90,
-  /* 0000010D nop                            */ 0x90,
-  /* 0000010E nop                            */ 0x90,
-  /* 0000010F nop                            */ 0x90,
-  /* 00000110 nop                            */ 0x90,
-  /* 00000111 nop                            */ 0x90,
-  /* 00000112 nop                            */ 0x90,
-  /* 00000113 nop                            */ 0x90,
-  /* 00000114 nop                            */ 0x90,
-  /* 00000115 nop                            */ 0x90,
-  /* 00000116 nop                            */ 0x90,
-  /* 00000117 nop                            */ 0x90,
-  /* 00000118 nop                            */ 0x90,
-  /* 00000119 nop                            */ 0x90,
-  /* 0000011A nop                            */ 0x90,
-  /* 0000011B nop                            */ 0x90,
-  /* 0000011C nop                            */ 0x90,
-  /* 0000011D nop                            */ 0x90,
-  /* 0000011E nop                            */ 0x90,
-  /* 0000011F nop                            */ 0x90,
-  /* 00000120 nop                            */ 0x90,
-  /* 00000121 nop                            */ 0x90,
-  /* 00000122 nop                            */ 0x90,
-  /* 00000123 nop                            */ 0x90,
-  /* 00000124 nop                            */ 0x90,
-  /* 00000125 nop                            */ 0x90,
-  /* 00000126 nop                            */ 0x90,
-  /* 00000127 nop                            */ 0x90,
-  /* 00000128 nop                            */ 0x90,
-  /* 00000129 nop                            */ 0x90,
-  /* 0000012A nop                            */ 0x90,
-  /* 0000012B nop                            */ 0x90,
-  /* 0000012C nop                            */ 0x90,
-  /* 0000012D nop                            */ 0x90,
-  /* 0000012E nop                            */ 0x90,
-  /* 0000012F nop                            */ 0x90,
-  /* 00000130 nop                            */ 0x90,
-  /* 00000131 nop                            */ 0x90,
-  /* 00000132 nop                            */ 0x90,
-  /* 00000133 nop                            */ 0x90,
-  /* 00000134 nop                            */ 0x90,
-  /* 00000135 nop                            */ 0x90,
-  /* 00000136 nop                            */ 0x90,
-  /* 00000137 nop                            */ 0x90,
-  /* 00000138 nop                            */ 0x90,
-  /* 00000139 nop                            */ 0x90,
-  /* 0000013A nop                            */ 0x90,
-  /* 0000013B nop                            */ 0x90,
-  /* 0000013C nop                            */ 0x90,
-  /* 0000013D nop                            */ 0x90,
-  /* 0000013E nop                            */ 0x90,
-  /* 0000013F nop                            */ 0x90,
-  /* 00000140 nop                            */ 0x90,
-  /* 00000141 nop                            */ 0x90,
-  /* 00000142 nop                            */ 0x90,
-  /* 00000143 nop                            */ 0x90,
-  /* 00000144 nop                            */ 0x90,
-  /* 00000145 nop                            */ 0x90,
-  /* 00000146 nop                            */ 0x90,
-  /* 00000147 nop                            */ 0x90,
-  /* 00000148 nop                            */ 0x90,
-  /* 00000149 nop                            */ 0x90,
-  /* 0000014A nop                            */ 0x90,
-  /* 0000014B nop                            */ 0x90,
-  /* 0000014C nop                            */ 0x90,
-  /* 0000014D nop                            */ 0x90,
-  /* 0000014E nop                            */ 0x90,
-  /* 0000014F nop                            */ 0x90,
-  /* 00000150 nop                            */ 0x90,
-  /* 00000151 nop                            */ 0x90,
-  /* 00000152 nop                            */ 0x90,
-  /* 00000153 nop                            */ 0x90,
-  /* 00000154 nop                            */ 0x90,
-  /* 00000155 nop                            */ 0x90,
-  /* 00000156 nop                            */ 0x90,
-  /* 00000157 nop                            */ 0x90,
-  /* 00000158 nop                            */ 0x90,
-  /* 00000159 nop                            */ 0x90,
-  /* 0000015A nop                            */ 0x90,
-  /* 0000015B nop                            */ 0x90,
-  /* 0000015C nop                            */ 0x90,
-  /* 0000015D nop                            */ 0x90,
-  /* 0000015E nop                            */ 0x90,
-  /* 0000015F nop                            */ 0x90,
-  /* 00000160 nop                            */ 0x90,
-  /* 00000161 nop                            */ 0x90,
-  /* 00000162 nop                            */ 0x90,
-  /* 00000163 nop                            */ 0x90,
-  /* 00000164 nop                            */ 0x90,
-  /* 00000165 nop                            */ 0x90,
-  /* 00000166 nop                            */ 0x90,
-  /* 00000167 nop                            */ 0x90,
-  /* 00000168 nop                            */ 0x90,
-  /* 00000169 nop                            */ 0x90,
-  /* 0000016A nop                            */ 0x90,
-  /* 0000016B nop                            */ 0x90,
-  /* 0000016C nop                            */ 0x90,
-  /* 0000016D nop                            */ 0x90,
-  /* 0000016E nop                            */ 0x90,
-  /* 0000016F nop                            */ 0x90,
-  /* 00000170 nop                            */ 0x90,
-  /* 00000171 nop                            */ 0x90,
-  /* 00000172 nop                            */ 0x90,
-  /* 00000173 nop                            */ 0x90,
-  /* 00000174 nop                            */ 0x90,
-  /* 00000175 nop                            */ 0x90,
-  /* 00000176 nop                            */ 0x90,
-  /* 00000177 nop                            */ 0x90,
-  /* 00000178 nop                            */ 0x90,
-  /* 00000179 nop                            */ 0x90,
-  /* 0000017A nop                            */ 0x90,
-  /* 0000017B nop                            */ 0x90,
-  /* 0000017C nop                            */ 0x90,
-  /* 0000017D nop                            */ 0x90,
-  /* 0000017E nop                            */ 0x90,
-  /* 0000017F nop                            */ 0x90,
-  /* 00000180 nop                            */ 0x90,
-  /* 00000181 nop                            */ 0x90,
-  /* 00000182 nop                            */ 0x90,
-  /* 00000183 nop                            */ 0x90,
-  /* 00000184 nop                            */ 0x90,
-  /* 00000185 nop                            */ 0x90,
-  /* 00000186 nop                            */ 0x90,
-  /* 00000187 nop                            */ 0x90,
-  /* 00000188 nop                            */ 0x90,
-  /* 00000189 nop                            */ 0x90,
-  /* 0000018A nop                            */ 0x90,
-  /* 0000018B nop                            */ 0x90,
-  /* 0000018C nop                            */ 0x90,
-  /* 0000018D nop                            */ 0x90,
-  /* 0000018E nop                            */ 0x90,
-  /* 0000018F nop                            */ 0x90,
-  /* 00000190 nop                            */ 0x90,
-  /* 00000191 nop                            */ 0x90,
-  /* 00000192 nop                            */ 0x90,
-  /* 00000193 nop                            */ 0x90,
-  /* 00000194 nop                            */ 0x90,
-  /* 00000195 nop                            */ 0x90,
-  /* 00000196 nop                            */ 0x90,
-  /* 00000197 nop                            */ 0x90,
-  /* 00000198 nop                            */ 0x90,
-  /* 00000199 nop                            */ 0x90,
-  /* 0000019A nop                            */ 0x90,
-  /* 0000019B nop                            */ 0x90,
-  /* 0000019C nop                            */ 0x90,
-  /* 0000019D nop                            */ 0x90,
-  /* 0000019E nop                            */ 0x90,
-  /* 0000019F nop                            */ 0x90,
-  /* 000001A0 nop                            */ 0x90,
-  /* 000001A1 nop                            */ 0x90,
-  /* 000001A2 nop                            */ 0x90,
-  /* 000001A3 nop                            */ 0x90,
-  /* 000001A4 nop                            */ 0x90,
-  /* 000001A5 nop                            */ 0x90,
-  /* 000001A6 nop                            */ 0x90,
-  /* 000001A7 nop                            */ 0x90,
-  /* 000001A8 nop                            */ 0x90,
-  /* 000001A9 nop                            */ 0x90,
-  /* 000001AA nop                            */ 0x90,
-  /* 000001AB nop                            */ 0x90,
-  /* 000001AC nop                            */ 0x90,
-  /* 000001AD nop                            */ 0x90,
-  /* 000001AE nop                            */ 0x90,
-  /* 000001AF nop                            */ 0x90,
-  /* 000001B0 nop                            */ 0x90,
-  /* 000001B1 nop                            */ 0x90,
-  /* 000001B2 nop                            */ 0x90,
-  /* 000001B3 nop                            */ 0x90,
-  /* 000001B4 nop                            */ 0x90,
-  /* 000001B5 nop                            */ 0x90,
-  /* 000001B6 nop                            */ 0x90,
-  /* 000001B7 nop                            */ 0x90,
-  /* 000001B8 nop                            */ 0x90,
-  /* 000001B9 nop                            */ 0x90,
-  /* 000001BA nop                            */ 0x90,
-  /* 000001BB nop                            */ 0x90,
-  /* 000001BC nop                            */ 0x90,
-  /* 000001BD nop                            */ 0x90,
-  /* 000001BE nop                            */ 0x90,
-  /* 000001BF nop                            */ 0x90,
-  /* 000001C0 nop                            */ 0x90,
-  /* 000001C1 nop                            */ 0x90,
-  /* 000001C2 nop                            */ 0x90,
-  /* 000001C3 nop                            */ 0x90,
-  /* 000001C4 nop                            */ 0x90,
-  /* 000001C5 nop                            */ 0x90,
-  /* 000001C6 nop                            */ 0x90,
-  /* 000001C7 nop                            */ 0x90,
-  /* 000001C8 nop                            */ 0x90,
-  /* 000001C9 nop                            */ 0x90,
-  /* 000001CA nop                            */ 0x90,
-  /* 000001CB nop                            */ 0x90,
-  /* 000001CC nop                            */ 0x90,
-  /* 000001CD nop                            */ 0x90,
-  /* 000001CE nop                            */ 0x90,
-  /* 000001CF nop                            */ 0x90,
-  /* 000001D0 nop                            */ 0x90,
-  /* 000001D1 nop                            */ 0x90,
-  /* 000001D2 nop                            */ 0x90,
-  /* 000001D3 nop                            */ 0x90,
-  /* 000001D4 nop                            */ 0x90,
-  /* 000001D5 nop                            */ 0x90,
-  /* 000001D6 nop                            */ 0x90,
-  /* 000001D7 nop                            */ 0x90,
-  /* 000001D8 nop                            */ 0x90,
-  /* 000001D9 nop                            */ 0x90,
-  /* 000001DA nop                            */ 0x90,
-  /* 000001DB nop                            */ 0x90,
-  /* 000001DC nop                            */ 0x90,
-  /* 000001DD nop                            */ 0x90,
-  /* 000001DE nop                            */ 0x90,
-  /* 000001DF nop                            */ 0x90,
-  /* 000001E0 nop                            */ 0x90,
-  /* 000001E1 nop                            */ 0x90,
-  /* 000001E2 nop                            */ 0x90,
-  /* 000001E3 nop                            */ 0x90,
-  /* 000001E4 nop                            */ 0x90,
-  /* 000001E5 nop                            */ 0x90,
-  /* 000001E6 nop                            */ 0x90,
-  /* 000001E7 nop                            */ 0x90,
-  /* 000001E8 nop                            */ 0x90,
-  /* 000001E9 nop                            */ 0x90,
-  /* 000001EA nop                            */ 0x90,
-  /* 000001EB nop                            */ 0x90,
-  /* 000001EC nop                            */ 0x90,
-  /* 000001ED nop                            */ 0x90,
-  /* 000001EE nop                            */ 0x90,
-  /* 000001EF nop                            */ 0x90,
-  /* 000001F0 nop                            */ 0x90,
-  /* 000001F1 nop                            */ 0x90,
-  /* 000001F2 nop                            */ 0x90,
-  /* 000001F3 nop                            */ 0x90,
-  /* 000001F4 nop                            */ 0x90,
-  /* 000001F5 nop                            */ 0x90,
-  /* 000001F6 nop                            */ 0x90,
-  /* 000001F7 nop                            */ 0x90,
-  /* 000001F8 nop                            */ 0x90,
-  /* 000001F9 nop                            */ 0x90,
-  /* 000001FA nop                            */ 0x90,
-  /* 000001FB nop                            */ 0x90,
-  /* 000001FC nop                            */ 0x90,
-  /* 000001FD nop                            */ 0x90,
-  /* 000001FE nop                            */ 0x90,
-  /* 000001FF nop                            */ 0x90,
-  /* 00000200 cmp ax,0x4f00                  */ 0x3D,0x00,  0x4F,
-  /* 00000203 jz 0x237                       */ 0x74,0x32,
-  /* 00000205 cmp ax,0x4f01                  */ 0x3D,0x01,  0x4F,
-  /* 00000208 jz 0x257                       */ 0x74,0x4D,
-  /* 0000020A cmp ax,0x4f02                  */ 0x3D,0x02,  0x4F,
-  /* 0000020D jz word 0x2c8                  */ 0x0F,0x84,  0xB7,0x00,
-  /* 00000211 cmp ax,0x4f03                  */ 0x3D,0x03,  0x4F,
-  /* 00000214 jz word 0x325                  */ 0x0F,0x84,  0x0D,0x01,
-  /* 00000218 cmp ax,0x4f10                  */ 0x3D,0x10,  0x4F,
-  /* 0000021B jz word 0x337                  */ 0x0F,0x84,  0x18,0x01,
-  /* 0000021F cmp ax,0x4f15                  */ 0x3D,0x15,  0x4F,
-  /* 00000222 jz word 0x344                  */ 0x0F,0x84,  0x1E,0x01,
-  /* 00000226 cmp ah,0x0                     */ 0x80,0xFC,  0x00,
-  /* 00000229 jz word 0x363                  */ 0x0F,0x84,  0x36,0x01,
-  /* 0000022D push si                        */ 0x56,
-  /* 0000022E mov si,0x3d7                   */ 0xBE,0xD7,  0x03,
-  /* 00000231 call word 0x3ad                */ 0xE8,0x79,  0x01,
-  /* 00000234 pop si                         */ 0x5E,
-  /* 00000235 jmp short 0x235                */ 0xEB,0xFE,
-  /* 00000237 push es                        */ 0x06,
-  /* 00000238 push di                        */ 0x57,
-  /* 00000239 push ds                        */ 0x1E,
-  /* 0000023A push si                        */ 0x56,
-  /* 0000023B push cx                        */ 0x51,
-  /* 0000023C push si                        */ 0x56,
-  /* 0000023D mov si,0x3eb                   */ 0xBE,0xEB,  0x03,
-  /* 00000240 call word 0x3ad                */ 0xE8,0x6A,  0x01,
-  /* 00000243 pop si                         */ 0x5E,
-  /* 00000244 push cs                        */ 0x0E,
-  /* 00000245 pop ds                         */ 0x1F,
-  /* 00000246 mov si,0x0                     */ 0xBE,0x00,  0x00,
-  /* 00000249 mov cx,0x100                   */ 0xB9,0x00,  0x01,
-  /* 0000024C cld                            */ 0xFC,
-  /* 0000024D rep movsb                      */ 0xF3,0xA4,
-  /* 0000024F pop cx                         */ 0x59,
-  /* 00000250 pop si                         */ 0x5E,
-  /* 00000251 pop ds                         */ 0x1F,
-  /* 00000252 pop di                         */ 0x5F,
-  /* 00000253 pop es                         */ 0x07,
-  /* 00000254 jmp word 0x395                 */ 0xE9,0x3E,  0x01,
-  /* 00000257 push es                        */ 0x06,
-  /* 00000258 push di                        */ 0x57,
-  /* 00000259 push ds                        */ 0x1E,
-  /* 0000025A push si                        */ 0x56,
-  /* 0000025B push cx                        */ 0x51,
-  /* 0000025C push si                        */ 0x56,
-  /* 0000025D mov si,0x3f6                   */ 0xBE,0xF6,  0x03,
-  /* 00000260 call word 0x3ad                */ 0xE8,0x4A,  0x01,
-  /* 00000263 pop si                         */ 0x5E,
-  /* 00000264 and cx,0xbfff                  */ 0x81,0xE1,  0xFF,0xBF,
-  /* 00000268 cmp cx,0x13f                   */ 0x81,0xF9,  0x3F,0x01,
-  /* 0000026C jz 0x284                       */ 0x74,0x16,
-  /* 0000026E cmp cx,0x140                   */ 0x81,0xF9,  0x40,0x01,
-  /* 00000272 jz 0x291                       */ 0x74,0x1D,
-  /* 00000274 cmp cx,0x141                   */ 0x81,0xF9,  0x41,0x01,
-  /* 00000278 jz 0x29e                       */ 0x74,0x24,
-  /* 0000027A push si                        */ 0x56,
-  /* 0000027B mov si,0x42c                   */ 0xBE,0x2C,  0x04,
-  /* 0000027E call word 0x3ad                */ 0xE8,0x2C,  0x01,
-  /* 00000281 pop si                         */ 0x5E,
-  /* 00000282 jmp short 0x235                */ 0xEB,0xB1,
-  /* 00000284 push si                        */ 0x56,
-  /* 00000285 mov si,0x46b                   */ 0xBE,0x6B,  0x04,
-  /* 00000288 call word 0x3ad                */ 0xE8,0x22,  0x01,
-  /* 0000028B pop si                         */ 0x5E,
-  /* 0000028C mov si,0x100                   */ 0xBE,0x00,  0x01,
-  /* 0000028F jmp short 0x2b8                */ 0xEB,0x27,
-  /* 00000291 push si                        */ 0x56,
-  /* 00000292 mov si,0x47d                   */ 0xBE,0x7D,  0x04,
-  /* 00000295 call word 0x3ad                */ 0xE8,0x15,  0x01,
-  /* 00000298 pop si                         */ 0x5E,
-  /* 00000299 mov si,0x132                   */ 0xBE,0x32,  0x01,
-  /* 0000029C jmp short 0x2b8                */ 0xEB,0x1A,
-  /* 0000029E push si                        */ 0x56,
-  /* 0000029F mov si,0x48f                   */ 0xBE,0x8F,  0x04,
-  /* 000002A2 call word 0x3ad                */ 0xE8,0x08,  0x01,
-  /* 000002A5 pop si                         */ 0x5E,
-  /* 000002A6 mov si,0x164                   */ 0xBE,0x64,  0x01,
-  /* 000002A9 jmp short 0x2b8                */ 0xEB,0x0D,
-  /* 000002AB push si                        */ 0x56,
-  /* 000002AC mov si,0x4a2                   */ 0xBE,0xA2,  0x04,
-  /* 000002AF call word 0x3ad                */ 0xE8,0xFB,  0x00,
-  /* 000002B2 pop si                         */ 0x5E,
-  /* 000002B3 mov si,0x196                   */ 0xBE,0x96,  0x01,
-  /* 000002B6 jmp short 0x2b8                */ 0xEB,0x00,
-  /* 000002B8 push cs                        */ 0x0E,
-  /* 000002B9 pop ds                         */ 0x1F,
-  /* 000002BA mov cx,0x32                    */ 0xB9,0x32,  0x00,
-  /* 000002BD cld                            */ 0xFC,
-  /* 000002BE rep movsb                      */ 0xF3,0xA4,
-  /* 000002C0 pop cx                         */ 0x59,
-  /* 000002C1 pop si                         */ 0x5E,
-  /* 000002C2 pop ds                         */ 0x1F,
-  /* 000002C3 pop di                         */ 0x5F,
-  /* 000002C4 pop es                         */ 0x07,
-  /* 000002C5 jmp word 0x395                 */ 0xE9,0xCD,  0x00,
-  /* 000002C8 push dx                        */ 0x52,
-  /* 000002C9 push ax                        */ 0x50,
-  /* 000002CA push si                        */ 0x56,
-  /* 000002CB mov si,0x410                   */ 0xBE,0x10,  0x04,
-  /* 000002CE call word 0x3ad                */ 0xE8,0xDC,  0x00,
-  /* 000002D1 pop si                         */ 0x5E,
-  /* 000002D2 and bx,0xbfff                  */ 0x81,0xE3,  0xFF,0xBF,
-  /* 000002D6 cmp bx,0x13f                   */ 0x81,0xFB,  0x3F,0x01,
-  /* 000002DA jz 0x2f3                       */ 0x74,0x17,
-  /* 000002DC cmp bx,0x140                   */ 0x81,0xFB,  0x40,0x01,
-  /* 000002E0 jz 0x2fd                       */ 0x74,0x1B,
-  /* 000002E2 cmp bx,0x141                   */ 0x81,0xFB,  0x41,0x01,
-  /* 000002E6 jz 0x307                       */ 0x74,0x1F,
-  /* 000002E8 push si                        */ 0x56,
-  /* 000002E9 mov si,0x42c                   */ 0xBE,0x2C,  0x04,
-  /* 000002EC call word 0x3ad                */ 0xE8,0xBE,  0x00,
-  /* 000002EF pop si                         */ 0x5E,
-  /* 000002F0 jmp word 0x235                 */ 0xE9,0x42,  0xFF,
-  /* 000002F3 push si                        */ 0x56,
-  /* 000002F4 mov si,0x46b                   */ 0xBE,0x6B,  0x04,
-  /* 000002F7 call word 0x3ad                */ 0xE8,0xB3,  0x00,
-  /* 000002FA pop si                         */ 0x5E,
-  /* 000002FB jmp short 0x319                */ 0xEB,0x1C,
-  /* 000002FD push si                        */ 0x56,
-  /* 000002FE mov si,0x47d                   */ 0xBE,0x7D,  0x04,
-  /* 00000301 call word 0x3ad                */ 0xE8,0xA9,  0x00,
-  /* 00000304 pop si                         */ 0x5E,
-  /* 00000305 jmp short 0x319                */ 0xEB,0x12,
-  /* 00000307 push si                        */ 0x56,
-  /* 00000308 mov si,0x48f                   */ 0xBE,0x8F,  0x04,
-  /* 0000030B call word 0x3ad                */ 0xE8,0x9F,  0x00,
-  /* 0000030E pop si                         */ 0x5E,
-  /* 0000030F jmp short 0x319                */ 0xEB,0x08,
-  /* 00000311 push si                        */ 0x56,
-  /* 00000312 mov si,0x4a2                   */ 0xBE,0xA2,  0x04,
-  /* 00000315 call word 0x3ad                */ 0xE8,0x95,  0x00,
-  /* 00000318 pop si                         */ 0x5E,
-  /* 00000319 mov [0x4b0],bl                 */ 0x88,0x1E,  0xB0,0x04,
-  /* 0000031D mov [0x4b1],bh                 */ 0x88,0x3E,  0xB1,0x04,
-  /* 00000321 pop ax                         */ 0x58,
-  /* 00000322 pop dx                         */ 0x5A,
-  /* 00000323 jmp short 0x395                */ 0xEB,0x70,
-  /* 00000325 push si                        */ 0x56,
-  /* 00000326 mov si,0x405                   */ 0xBE,0x05,  0x04,
-  /* 00000329 call word 0x3ad                */ 0xE8,0x81,  0x00,
-  /* 0000032C pop si                         */ 0x5E,
-  /* 0000032D mov bl,[0x4b0]                 */ 0x8A,0x1E,  0xB0,0x04,
-  /* 00000331 mov bh,[0x4b1]                 */ 0x8A,0x3E,  0xB1,0x04,
-  /* 00000335 jmp short 0x395                */ 0xEB,0x5E,
-  /* 00000337 push si                        */ 0x56,
-  /* 00000338 mov si,0x43b                   */ 0xBE,0x3B,  0x04,
-  /* 0000033B call word 0x3ad                */ 0xE8,0x6F,  0x00,
-  /* 0000033E pop si                         */ 0x5E,
-  /* 0000033F mov bx,0x80                    */ 0xBB,0x80,  0x00,
-  /* 00000342 jmp short 0x395                */ 0xEB,0x51,
-  /* 00000344 push es                        */ 0x06,
-  /* 00000345 push di                        */ 0x57,
-  /* 00000346 push ds                        */ 0x1E,
-  /* 00000347 push si                        */ 0x56,
-  /* 00000348 push cx                        */ 0x51,
-  /* 00000349 push si                        */ 0x56,
-  /* 0000034A mov si,0x450                   */ 0xBE,0x50,  0x04,
-  /* 0000034D call word 0x3ad                */ 0xE8,0x5D,  0x00,
-  /* 00000350 pop si                         */ 0x5E,
-  /* 00000351 push cs                        */ 0x0E,
-  /* 00000352 pop ds                         */ 0x1F,
-  /* 00000353 mov si,0x4b2                   */ 0xBE,0xB2,  0x04,
-  /* 00000356 mov cx,0x80                    */ 0xB9,0x80,  0x00,
-  /* 00000359 cld                            */ 0xFC,
-  /* 0000035A rep movsb                      */ 0xF3,0xA4,
-  /* 0000035C pop cx                         */ 0x59,
-  /* 0000035D pop si                         */ 0x5E,
-  /* 0000035E pop ds                         */ 0x1F,
-  /* 0000035F pop di                         */ 0x5F,
-  /* 00000360 pop es                         */ 0x07,
-  /* 00000361 jmp short 0x395                */ 0xEB,0x32,
-  /* 00000363 push si                        */ 0x56,
-  /* 00000364 mov si,0x41b                   */ 0xBE,0x1B,  0x04,
-  /* 00000367 call word 0x3ad                */ 0xE8,0x43,  0x00,
-  /* 0000036A pop si                         */ 0x5E,
-  /* 0000036B cmp al,0x3                     */ 0x3C,0x03,
-  /* 0000036D jz 0x37e                       */ 0x74,0x0F,
-  /* 0000036F cmp al,0x12                    */ 0x3C,0x12,
-  /* 00000371 jz 0x38a                       */ 0x74,0x17,
-  /* 00000373 push si                        */ 0x56,
-  /* 00000374 mov si,0x42c                   */ 0xBE,0x2C,  0x04,
-  /* 00000377 call word 0x3ad                */ 0xE8,0x33,  0x00,
-  /* 0000037A pop si                         */ 0x5E,
-  /* 0000037B jmp word 0x235                 */ 0xE9,0xB7,  0xFE,
-  /* 0000037E push si                        */ 0x56,
-  /* 0000037F mov si,0x45c                   */ 0xBE,0x5C,  0x04,
-  /* 00000382 call word 0x3ad                */ 0xE8,0x28,  0x00,
-  /* 00000385 pop si                         */ 0x5E,
-  /* 00000386 mov al,0x0                     */ 0xB0,0x00,
-  /* 00000388 jmp short 0x38c                */ 0xEB,0x02,
-  /* 0000038A mov al,0x0                     */ 0xB0,0x00,
-  /* 0000038C push si                        */ 0x56,
-  /* 0000038D mov si,0x3c2                   */ 0xBE,0xC2,  0x03,
-  /* 00000390 call word 0x3ad                */ 0xE8,0x1A,  0x00,
-  /* 00000393 pop si                         */ 0x5E,
-  /* 00000394 iretw                          */ 0xCF,
-  /* 00000395 push si                        */ 0x56,
-  /* 00000396 mov si,0x3c2                   */ 0xBE,0xC2,  0x03,
-  /* 00000399 call word 0x3ad                */ 0xE8,0x11,  0x00,
-  /* 0000039C pop si                         */ 0x5E,
-  /* 0000039D mov ax,0x4f                    */ 0xB8,0x4F,  0x00,
-  /* 000003A0 iretw                          */ 0xCF,
-  /* 000003A1 push si                        */ 0x56,
-  /* 000003A2 mov si,0x3c8                   */ 0xBE,0xC8,  0x03,
-  /* 000003A5 call word 0x3ad                */ 0xE8,0x05,  0x00,
-  /* 000003A8 pop si                         */ 0x5E,
-  /* 000003A9 mov ax,0x24f                   */ 0xB8,0x4F,  0x02,
-  /* 000003AC iretw                          */ 0xCF,
-  /* 000003AD pushaw                         */ 0x60,
-  /* 000003AE push ds                        */ 0x1E,
-  /* 000003AF push cs                        */ 0x0E,
-  /* 000003B0 pop ds                         */ 0x1F,
-  /* 000003B1 mov dx,0x220                   */ 0xBA,0x20,  0x02,
-  /* 000003B4 mov ax,0x0                     */ 0xB8,0x00,  0x00,
-  /* 000003B7 lodsb                          */ 0xAC,
-  /* 000003B8 cmp al,0x0                     */ 0x3C,0x00,
-  /* 000003BA jz 0x3bf                       */ 0x74,0x03,
-  /* 000003BC out dx,al                      */ 0xEE,
-  /* 000003BD jmp short 0x3b7                */ 0xEB,0xF8,
-  /* 000003BF pop ds                         */ 0x1F,
-  /* 000003C0 popaw                          */ 0x61,
-  /* 000003C1 ret                            */ 0xC3,
-  /* 000003C2 jna 0x413                      */ 0x76,0x4F,
-  /* 000003C4 imul cx,[di],byte +0xa         */ 0x6B,0x0D,  0x0A,
-  /* 000003C7 add [bp+0x55],dh               */ 0x00,0x76,  0x55,
-  /* 000003CA outsb                          */ 0x6E,
-  /* 000003CB jnc 0x442                      */ 0x73,0x75,
-  /* 000003CD jo 0x43f                       */ 0x70,0x70,
-  /* 000003CF outsw                          */ 0x6F,
-  /* 000003D0 jc 0x446                       */ 0x72,0x74,
-  /* 000003D2 fs or ax,0xa                   */ 0x65,0x64,  0x0D,0x0A, 0x00,
-  /* 000003D7 jna 0x42e                      */ 0x76,0x55,
-  /* 000003D9 outsb                          */ 0x6E,
-  /* 000003DA imul bp,[bp+0x6f],byte +0x77   */ 0x6B,0x6E,  0x6F,0x77,
-  /* 000003DE outsb                          */ 0x6E,
-  /* 000003DF and [bp+0x75],al               */ 0x20,0x46,  0x75,
-  /* 000003E2 outsb                          */ 0x6E,
-  /* 000003E3 arpl [si+0x69],si              */ 0x63,0x74,  0x69,
-  /* 000003E6 outsw                          */ 0x6F,
-  /* 000003E7 outsb                          */ 0x6E,
-  /* 000003E8 or ax,0xa                      */ 0x0D,0x0A,  0x00,
-  /* 000003EB jna 0x434                      */ 0x76,0x47,
-  /* 000003ED gs jz 0x439                    */ 0x65,0x74,  0x49,
-  /* 000003F0 outsb                          */ 0x6E,
-  /* 000003F1 outsd                          */ 0x66,0x6F,
-  /* 000003F3 or ax,0xa                      */ 0x0D,0x0A,  0x00,
-  /* 000003F6 jna 0x43f                      */ 0x76,0x47,
-  /* 000003F8 gs jz 0x448                    */ 0x65,0x74,  0x4D,
-  /* 000003FB outsw                          */ 0x6F,
-  /* 000003FC gs dec cx                      */ 0x64,0x65,  0x49,
-  /* 000003FF outsb                          */ 0x6E,
-  /* 00000400 outsd                          */ 0x66,0x6F,
-  /* 00000402 or ax,0xa                      */ 0x0D,0x0A,  0x00,
-  /* 00000405 jna 0x44e                      */ 0x76,0x47,
-  /* 00000407 gs jz 0x457                    */ 0x65,0x74,  0x4D,
-  /* 0000040A outsw                          */ 0x6F,
-  /* 0000040B gs or ax,0xa                   */ 0x64,0x65,  0x0D,0x0A, 0x00,
-  /* 00000410 jna 0x465                      */ 0x76,0x53,
-  /* 00000412 gs jz 0x462                    */ 0x65,0x74,  0x4D,
-  /* 00000415 outsw                          */ 0x6F,
-  /* 00000416 gs or ax,0xa                   */ 0x64,0x65,  0x0D,0x0A, 0x00,
-  /* 0000041B jna 0x470                      */ 0x76,0x53,
-  /* 0000041D gs jz 0x46d                    */ 0x65,0x74,  0x4D,
-  /* 00000420 outsw                          */ 0x6F,
-  /* 00000421 gs dec sp                      */ 0x64,0x65,  0x4C,
-  /* 00000424 gs a32 popaw                   */ 0x65,0x67,  0x61,
-  /* 00000427 arpl [bx+di+0xd],di            */ 0x63,0x79,  0x0D,
-  /* 0000042A or al,[bx+si]                  */ 0x0A,0x00,
-  /* 0000042C jna 0x483                      */ 0x76,0x55,
-  /* 0000042E outsb                          */ 0x6E,
-  /* 0000042F imul bp,[bx+0x77],byte +0x6e   */ 0x6B,0x6F,  0x77,0x6E,
-  /* 00000433 and [di+0x6f],cl               */ 0x20,0x4D,  0x6F,
-  /* 00000436 gs or ax,0xa                   */ 0x64,0x65,  0x0D,0x0A, 0x00,
-  /* 0000043B jna 0x484                      */ 0x76,0x47,
-  /* 0000043D gs jz 0x490                    */ 0x65,0x74,  0x50,
-  /* 00000440 insw                           */ 0x6D,
-  /* 00000441 inc bx                         */ 0x43,
-  /* 00000442 popaw                          */ 0x61,
-  /* 00000443 jo 0x4a6                       */ 0x70,0x61,
-  /* 00000445 bound bp,[bx+di+0x6c]          */ 0x62,0x69,  0x6C,
-  /* 00000448 imul si,[si+0x69],word 0x7365  */ 0x69,0x74,  0x69,0x65, 0x73,
-  /* 0000044D or ax,0xa                      */ 0x0D,0x0A,  0x00,
-  /* 00000450 jna 0x4a4                      */ 0x76,0x52,
-  /* 00000452 gs popaw                       */ 0x65,0x61,
-  /* 00000454 fs inc bp                      */ 0x64,0x45,
-  /* 00000456 imul sp,[fs:si+0xd],word 0xa   */ 0x64,0x69,  0x64,0x0D, 0x0A, 0x00,
-  /* 0000045C jna 0x4aa                      */ 0x76,0x4C,
-  /* 0000045E gs a32 popaw                   */ 0x65,0x67,  0x61,
-  /* 00000461 arpl [bx+di+0x4d],di           */ 0x63,0x79,  0x4D,
-  /* 00000464 outsw                          */ 0x6F,
-  /* 00000465 xor cx,[gs:di]                 */ 0x64,0x65,  0x33,0x0D,
-  /* 00000469 or al,[bx+si]                  */ 0x0A,0x00,
-  /* 0000046B insw                           */ 0x6D,
-  /* 0000046C outsw                          */ 0x6F,
-  /* 0000046D gs pop di                      */ 0x64,0x65,  0x5F,
-  /* 00000470 ss xor al,0x30                 */ 0x36,0x34,  0x30,
-  /* 00000473 js 0x4a9                       */ 0x78,0x34,
-  /* 00000475 cmp [bx+si],dh                 */ 0x38,0x30,
-  /* 00000477 js 0x4ac                       */ 0x78,0x33,
-  /* 00000479 xor cl,[di]                    */ 0x32,0x0D,
-  /* 0000047B or al,[bx+si]                  */ 0x0A,0x00,
-  /* 0000047D insw                           */ 0x6D,
-  /* 0000047E outsw                          */ 0x6F,
-  /* 0000047F gs pop di                      */ 0x64,0x65,  0x5F,
-  /* 00000482 cmp [bx+si],dh                 */ 0x38,0x30,
-  /* 00000484 xor [bx+si+0x36],bh            */ 0x30,0x78,  0x36,
-  /* 00000487 xor [bx+si],dh                 */ 0x30,0x30,
-  /* 00000489 js 0x4be                       */ 0x78,0x33,
-  /* 0000048B xor cl,[di]                    */ 0x32,0x0D,
-  /* 0000048D or al,[bx+si]                  */ 0x0A,0x00,
-  /* 0000048F insw                           */ 0x6D,
-  /* 00000490 outsw                          */ 0x6F,
-  /* 00000491 gs pop di                      */ 0x64,0x65,  0x5F,
-  /* 00000494 xor [bx+si],si                 */ 0x31,0x30,
-  /* 00000496 xor dh,[si]                    */ 0x32,0x34,
-  /* 00000498 js 0x4d1                       */ 0x78,0x37,
-  /* 0000049A cmp [ss:bx+si+0x33],bh         */ 0x36,0x38,  0x78,0x33,
-  /* 0000049E xor cl,[di]                    */ 0x32,0x0D,
-  /* 000004A0 or al,[bx+si]                  */ 0x0A,0x00,
-  /* 000004A2 insw                           */ 0x6D,
-  /* 000004A3 outsw                          */ 0x6F,
-  /* 000004A4 gs pop di                      */ 0x64,0x65,  0x5F,
-  /* 000004A7 jnz 0x517                      */ 0x75,0x6E,
-  /* 000004A9 jnz 0x51e                      */ 0x75,0x73,
-  /* 000004AB fs or ax,0xa                   */ 0x65,0x64,  0x0D,0x0A, 0x00,
-  /* 000004B0 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004B2 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004B4 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004B6 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004B8 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004BA add [bx+si],al                 */ 0x00,0x00,
-  /* 000004BC add [bx+si],al                 */ 0x00,0x00,
-  /* 000004BE add [bx+si],al                 */ 0x00,0x00,
-  /* 000004C0 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004C2 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004C4 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004C6 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004C8 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004CA add [bx+si],al                 */ 0x00,0x00,
-  /* 000004CC add [bx+si],al                 */ 0x00,0x00,
-  /* 000004CE add [bx+si],al                 */ 0x00,0x00,
-  /* 000004D0 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004D2 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004D4 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004D6 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004D8 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004DA add [bx+si],al                 */ 0x00,0x00,
-  /* 000004DC add [bx+si],al                 */ 0x00,0x00,
-  /* 000004DE add [bx+si],al                 */ 0x00,0x00,
-  /* 000004E0 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004E2 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004E4 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004E6 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004E8 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004EA add [bx+si],al                 */ 0x00,0x00,
-  /* 000004EC add [bx+si],al                 */ 0x00,0x00,
-  /* 000004EE add [bx+si],al                 */ 0x00,0x00,
-  /* 000004F0 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004F2 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004F4 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004F6 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004F8 add [bx+si],al                 */ 0x00,0x00,
-  /* 000004FA add [bx+si],al                 */ 0x00,0x00,
-  /* 000004FC add [bx+si],al                 */ 0x00,0x00,
-  /* 000004FE add [bx+si],al                 */ 0x00,0x00,
-  /* 00000500 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000502 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000504 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000506 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000508 add [bx+si],al                 */ 0x00,0x00,
-  /* 0000050A add [bx+si],al                 */ 0x00,0x00,
-  /* 0000050C add [bx+si],al                 */ 0x00,0x00,
-  /* 0000050E add [bx+si],al                 */ 0x00,0x00,
-  /* 00000510 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000512 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000514 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000516 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000518 add [bx+si],al                 */ 0x00,0x00,
-  /* 0000051A add [bx+si],al                 */ 0x00,0x00,
-  /* 0000051C add [bx+si],al                 */ 0x00,0x00,
-  /* 0000051E add [bx+si],al                 */ 0x00,0x00,
-  /* 00000520 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000522 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000524 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000526 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000528 add [bx+si],al                 */ 0x00,0x00,
-  /* 0000052A add [bx+si],al                 */ 0x00,0x00,
-  /* 0000052C add [bx+si],al                 */ 0x00,0x00,
-  /* 0000052E add [bx+si],al                 */ 0x00,0x00,
-  /* 00000530 add [bx+si],al                 */ 0x00,0x00,
-  /* 00000532 add [bx+si],al                 */ 0x00,0x00,
+STATIC CONST UINT8 mVbeShim[] = {
+  /* 00000000 nop                            */  0x90,
+  /* 00000001 nop                            */  0x90,
+  /* 00000002 nop                            */  0x90,
+  /* 00000003 nop                            */  0x90,
+  /* 00000004 nop                            */  0x90,
+  /* 00000005 nop                            */  0x90,
+  /* 00000006 nop                            */  0x90,
+  /* 00000007 nop                            */  0x90,
+  /* 00000008 nop                            */  0x90,
+  /* 00000009 nop                            */  0x90,
+  /* 0000000A nop                            */  0x90,
+  /* 0000000B nop                            */  0x90,
+  /* 0000000C nop                            */  0x90,
+  /* 0000000D nop                            */  0x90,
+  /* 0000000E nop                            */  0x90,
+  /* 0000000F nop                            */  0x90,
+  /* 00000010 nop                            */  0x90,
+  /* 00000011 nop                            */  0x90,
+  /* 00000012 nop                            */  0x90,
+  /* 00000013 nop                            */  0x90,
+  /* 00000014 nop                            */  0x90,
+  /* 00000015 nop                            */  0x90,
+  /* 00000016 nop                            */  0x90,
+  /* 00000017 nop                            */  0x90,
+  /* 00000018 nop                            */  0x90,
+  /* 00000019 nop                            */  0x90,
+  /* 0000001A nop                            */  0x90,
+  /* 0000001B nop                            */  0x90,
+  /* 0000001C nop                            */  0x90,
+  /* 0000001D nop                            */  0x90,
+  /* 0000001E nop                            */  0x90,
+  /* 0000001F nop                            */  0x90,
+  /* 00000020 nop                            */  0x90,
+  /* 00000021 nop                            */  0x90,
+  /* 00000022 nop                            */  0x90,
+  /* 00000023 nop                            */  0x90,
+  /* 00000024 nop                            */  0x90,
+  /* 00000025 nop                            */  0x90,
+  /* 00000026 nop                            */  0x90,
+  /* 00000027 nop                            */  0x90,
+  /* 00000028 nop                            */  0x90,
+  /* 00000029 nop                            */  0x90,
+  /* 0000002A nop                            */  0x90,
+  /* 0000002B nop                            */  0x90,
+  /* 0000002C nop                            */  0x90,
+  /* 0000002D nop                            */  0x90,
+  /* 0000002E nop                            */  0x90,
+  /* 0000002F nop                            */  0x90,
+  /* 00000030 nop                            */  0x90,
+  /* 00000031 nop                            */  0x90,
+  /* 00000032 nop                            */  0x90,
+  /* 00000033 nop                            */  0x90,
+  /* 00000034 nop                            */  0x90,
+  /* 00000035 nop                            */  0x90,
+  /* 00000036 nop                            */  0x90,
+  /* 00000037 nop                            */  0x90,
+  /* 00000038 nop                            */  0x90,
+  /* 00000039 nop                            */  0x90,
+  /* 0000003A nop                            */  0x90,
+  /* 0000003B nop                            */  0x90,
+  /* 0000003C nop                            */  0x90,
+  /* 0000003D nop                            */  0x90,
+  /* 0000003E nop                            */  0x90,
+  /* 0000003F nop                            */  0x90,
+  /* 00000040 nop                            */  0x90,
+  /* 00000041 nop                            */  0x90,
+  /* 00000042 nop                            */  0x90,
+  /* 00000043 nop                            */  0x90,
+  /* 00000044 nop                            */  0x90,
+  /* 00000045 nop                            */  0x90,
+  /* 00000046 nop                            */  0x90,
+  /* 00000047 nop                            */  0x90,
+  /* 00000048 nop                            */  0x90,
+  /* 00000049 nop                            */  0x90,
+  /* 0000004A nop                            */  0x90,
+  /* 0000004B nop                            */  0x90,
+  /* 0000004C nop                            */  0x90,
+  /* 0000004D nop                            */  0x90,
+  /* 0000004E nop                            */  0x90,
+  /* 0000004F nop                            */  0x90,
+  /* 00000050 nop                            */  0x90,
+  /* 00000051 nop                            */  0x90,
+  /* 00000052 nop                            */  0x90,
+  /* 00000053 nop                            */  0x90,
+  /* 00000054 nop                            */  0x90,
+  /* 00000055 nop                            */  0x90,
+  /* 00000056 nop                            */  0x90,
+  /* 00000057 nop                            */  0x90,
+  /* 00000058 nop                            */  0x90,
+  /* 00000059 nop                            */  0x90,
+  /* 0000005A nop                            */  0x90,
+  /* 0000005B nop                            */  0x90,
+  /* 0000005C nop                            */  0x90,
+  /* 0000005D nop                            */  0x90,
+  /* 0000005E nop                            */  0x90,
+  /* 0000005F nop                            */  0x90,
+  /* 00000060 nop                            */  0x90,
+  /* 00000061 nop                            */  0x90,
+  /* 00000062 nop                            */  0x90,
+  /* 00000063 nop                            */  0x90,
+  /* 00000064 nop                            */  0x90,
+  /* 00000065 nop                            */  0x90,
+  /* 00000066 nop                            */  0x90,
+  /* 00000067 nop                            */  0x90,
+  /* 00000068 nop                            */  0x90,
+  /* 00000069 nop                            */  0x90,
+  /* 0000006A nop                            */  0x90,
+  /* 0000006B nop                            */  0x90,
+  /* 0000006C nop                            */  0x90,
+  /* 0000006D nop                            */  0x90,
+  /* 0000006E nop                            */  0x90,
+  /* 0000006F nop                            */  0x90,
+  /* 00000070 nop                            */  0x90,
+  /* 00000071 nop                            */  0x90,
+  /* 00000072 nop                            */  0x90,
+  /* 00000073 nop                            */  0x90,
+  /* 00000074 nop                            */  0x90,
+  /* 00000075 nop                            */  0x90,
+  /* 00000076 nop                            */  0x90,
+  /* 00000077 nop                            */  0x90,
+  /* 00000078 nop                            */  0x90,
+  /* 00000079 nop                            */  0x90,
+  /* 0000007A nop                            */  0x90,
+  /* 0000007B nop                            */  0x90,
+  /* 0000007C nop                            */  0x90,
+  /* 0000007D nop                            */  0x90,
+  /* 0000007E nop                            */  0x90,
+  /* 0000007F nop                            */  0x90,
+  /* 00000080 nop                            */  0x90,
+  /* 00000081 nop                            */  0x90,
+  /* 00000082 nop                            */  0x90,
+  /* 00000083 nop                            */  0x90,
+  /* 00000084 nop                            */  0x90,
+  /* 00000085 nop                            */  0x90,
+  /* 00000086 nop                            */  0x90,
+  /* 00000087 nop                            */  0x90,
+  /* 00000088 nop                            */  0x90,
+  /* 00000089 nop                            */  0x90,
+  /* 0000008A nop                            */  0x90,
+  /* 0000008B nop                            */  0x90,
+  /* 0000008C nop                            */  0x90,
+  /* 0000008D nop                            */  0x90,
+  /* 0000008E nop                            */  0x90,
+  /* 0000008F nop                            */  0x90,
+  /* 00000090 nop                            */  0x90,
+  /* 00000091 nop                            */  0x90,
+  /* 00000092 nop                            */  0x90,
+  /* 00000093 nop                            */  0x90,
+  /* 00000094 nop                            */  0x90,
+  /* 00000095 nop                            */  0x90,
+  /* 00000096 nop                            */  0x90,
+  /* 00000097 nop                            */  0x90,
+  /* 00000098 nop                            */  0x90,
+  /* 00000099 nop                            */  0x90,
+  /* 0000009A nop                            */  0x90,
+  /* 0000009B nop                            */  0x90,
+  /* 0000009C nop                            */  0x90,
+  /* 0000009D nop                            */  0x90,
+  /* 0000009E nop                            */  0x90,
+  /* 0000009F nop                            */  0x90,
+  /* 000000A0 nop                            */  0x90,
+  /* 000000A1 nop                            */  0x90,
+  /* 000000A2 nop                            */  0x90,
+  /* 000000A3 nop                            */  0x90,
+  /* 000000A4 nop                            */  0x90,
+  /* 000000A5 nop                            */  0x90,
+  /* 000000A6 nop                            */  0x90,
+  /* 000000A7 nop                            */  0x90,
+  /* 000000A8 nop                            */  0x90,
+  /* 000000A9 nop                            */  0x90,
+  /* 000000AA nop                            */  0x90,
+  /* 000000AB nop                            */  0x90,
+  /* 000000AC nop                            */  0x90,
+  /* 000000AD nop                            */  0x90,
+  /* 000000AE nop                            */  0x90,
+  /* 000000AF nop                            */  0x90,
+  /* 000000B0 nop                            */  0x90,
+  /* 000000B1 nop                            */  0x90,
+  /* 000000B2 nop                            */  0x90,
+  /* 000000B3 nop                            */  0x90,
+  /* 000000B4 nop                            */  0x90,
+  /* 000000B5 nop                            */  0x90,
+  /* 000000B6 nop                            */  0x90,
+  /* 000000B7 nop                            */  0x90,
+  /* 000000B8 nop                            */  0x90,
+  /* 000000B9 nop                            */  0x90,
+  /* 000000BA nop                            */  0x90,
+  /* 000000BB nop                            */  0x90,
+  /* 000000BC nop                            */  0x90,
+  /* 000000BD nop                            */  0x90,
+  /* 000000BE nop                            */  0x90,
+  /* 000000BF nop                            */  0x90,
+  /* 000000C0 nop                            */  0x90,
+  /* 000000C1 nop                            */  0x90,
+  /* 000000C2 nop                            */  0x90,
+  /* 000000C3 nop                            */  0x90,
+  /* 000000C4 nop                            */  0x90,
+  /* 000000C5 nop                            */  0x90,
+  /* 000000C6 nop                            */  0x90,
+  /* 000000C7 nop                            */  0x90,
+  /* 000000C8 nop                            */  0x90,
+  /* 000000C9 nop                            */  0x90,
+  /* 000000CA nop                            */  0x90,
+  /* 000000CB nop                            */  0x90,
+  /* 000000CC nop                            */  0x90,
+  /* 000000CD nop                            */  0x90,
+  /* 000000CE nop                            */  0x90,
+  /* 000000CF nop                            */  0x90,
+  /* 000000D0 nop                            */  0x90,
+  /* 000000D1 nop                            */  0x90,
+  /* 000000D2 nop                            */  0x90,
+  /* 000000D3 nop                            */  0x90,
+  /* 000000D4 nop                            */  0x90,
+  /* 000000D5 nop                            */  0x90,
+  /* 000000D6 nop                            */  0x90,
+  /* 000000D7 nop                            */  0x90,
+  /* 000000D8 nop                            */  0x90,
+  /* 000000D9 nop                            */  0x90,
+  /* 000000DA nop                            */  0x90,
+  /* 000000DB nop                            */  0x90,
+  /* 000000DC nop                            */  0x90,
+  /* 000000DD nop                            */  0x90,
+  /* 000000DE nop                            */  0x90,
+  /* 000000DF nop                            */  0x90,
+  /* 000000E0 nop                            */  0x90,
+  /* 000000E1 nop                            */  0x90,
+  /* 000000E2 nop                            */  0x90,
+  /* 000000E3 nop                            */  0x90,
+  /* 000000E4 nop                            */  0x90,
+  /* 000000E5 nop                            */  0x90,
+  /* 000000E6 nop                            */  0x90,
+  /* 000000E7 nop                            */  0x90,
+  /* 000000E8 nop                            */  0x90,
+  /* 000000E9 nop                            */  0x90,
+  /* 000000EA nop                            */  0x90,
+  /* 000000EB nop                            */  0x90,
+  /* 000000EC nop                            */  0x90,
+  /* 000000ED nop                            */  0x90,
+  /* 000000EE nop                            */  0x90,
+  /* 000000EF nop                            */  0x90,
+  /* 000000F0 nop                            */  0x90,
+  /* 000000F1 nop                            */  0x90,
+  /* 000000F2 nop                            */  0x90,
+  /* 000000F3 nop                            */  0x90,
+  /* 000000F4 nop                            */  0x90,
+  /* 000000F5 nop                            */  0x90,
+  /* 000000F6 nop                            */  0x90,
+  /* 000000F7 nop                            */  0x90,
+  /* 000000F8 nop                            */  0x90,
+  /* 000000F9 nop                            */  0x90,
+  /* 000000FA nop                            */  0x90,
+  /* 000000FB nop                            */  0x90,
+  /* 000000FC nop                            */  0x90,
+  /* 000000FD nop                            */  0x90,
+  /* 000000FE nop                            */  0x90,
+  /* 000000FF nop                            */  0x90,
+  /* 00000100 nop                            */  0x90,
+  /* 00000101 nop                            */  0x90,
+  /* 00000102 nop                            */  0x90,
+  /* 00000103 nop                            */  0x90,
+  /* 00000104 nop                            */  0x90,
+  /* 00000105 nop                            */  0x90,
+  /* 00000106 nop                            */  0x90,
+  /* 00000107 nop                            */  0x90,
+  /* 00000108 nop                            */  0x90,
+  /* 00000109 nop                            */  0x90,
+  /* 0000010A nop                            */  0x90,
+  /* 0000010B nop                            */  0x90,
+  /* 0000010C nop                            */  0x90,
+  /* 0000010D nop                            */  0x90,
+  /* 0000010E nop                            */  0x90,
+  /* 0000010F nop                            */  0x90,
+  /* 00000110 nop                            */  0x90,
+  /* 00000111 nop                            */  0x90,
+  /* 00000112 nop                            */  0x90,
+  /* 00000113 nop                            */  0x90,
+  /* 00000114 nop                            */  0x90,
+  /* 00000115 nop                            */  0x90,
+  /* 00000116 nop                            */  0x90,
+  /* 00000117 nop                            */  0x90,
+  /* 00000118 nop                            */  0x90,
+  /* 00000119 nop                            */  0x90,
+  /* 0000011A nop                            */  0x90,
+  /* 0000011B nop                            */  0x90,
+  /* 0000011C nop                            */  0x90,
+  /* 0000011D nop                            */  0x90,
+  /* 0000011E nop                            */  0x90,
+  /* 0000011F nop                            */  0x90,
+  /* 00000120 nop                            */  0x90,
+  /* 00000121 nop                            */  0x90,
+  /* 00000122 nop                            */  0x90,
+  /* 00000123 nop                            */  0x90,
+  /* 00000124 nop                            */  0x90,
+  /* 00000125 nop                            */  0x90,
+  /* 00000126 nop                            */  0x90,
+  /* 00000127 nop                            */  0x90,
+  /* 00000128 nop                            */  0x90,
+  /* 00000129 nop                            */  0x90,
+  /* 0000012A nop                            */  0x90,
+  /* 0000012B nop                            */  0x90,
+  /* 0000012C nop                            */  0x90,
+  /* 0000012D nop                            */  0x90,
+  /* 0000012E nop                            */  0x90,
+  /* 0000012F nop                            */  0x90,
+  /* 00000130 nop                            */  0x90,
+  /* 00000131 nop                            */  0x90,
+  /* 00000132 nop                            */  0x90,
+  /* 00000133 nop                            */  0x90,
+  /* 00000134 nop                            */  0x90,
+  /* 00000135 nop                            */  0x90,
+  /* 00000136 nop                            */  0x90,
+  /* 00000137 nop                            */  0x90,
+  /* 00000138 nop                            */  0x90,
+  /* 00000139 nop                            */  0x90,
+  /* 0000013A nop                            */  0x90,
+  /* 0000013B nop                            */  0x90,
+  /* 0000013C nop                            */  0x90,
+  /* 0000013D nop                            */  0x90,
+  /* 0000013E nop                            */  0x90,
+  /* 0000013F nop                            */  0x90,
+  /* 00000140 nop                            */  0x90,
+  /* 00000141 nop                            */  0x90,
+  /* 00000142 nop                            */  0x90,
+  /* 00000143 nop                            */  0x90,
+  /* 00000144 nop                            */  0x90,
+  /* 00000145 nop                            */  0x90,
+  /* 00000146 nop                            */  0x90,
+  /* 00000147 nop                            */  0x90,
+  /* 00000148 nop                            */  0x90,
+  /* 00000149 nop                            */  0x90,
+  /* 0000014A nop                            */  0x90,
+  /* 0000014B nop                            */  0x90,
+  /* 0000014C nop                            */  0x90,
+  /* 0000014D nop                            */  0x90,
+  /* 0000014E nop                            */  0x90,
+  /* 0000014F nop                            */  0x90,
+  /* 00000150 nop                            */  0x90,
+  /* 00000151 nop                            */  0x90,
+  /* 00000152 nop                            */  0x90,
+  /* 00000153 nop                            */  0x90,
+  /* 00000154 nop                            */  0x90,
+  /* 00000155 nop                            */  0x90,
+  /* 00000156 nop                            */  0x90,
+  /* 00000157 nop                            */  0x90,
+  /* 00000158 nop                            */  0x90,
+  /* 00000159 nop                            */  0x90,
+  /* 0000015A nop                            */  0x90,
+  /* 0000015B nop                            */  0x90,
+  /* 0000015C nop                            */  0x90,
+  /* 0000015D nop                            */  0x90,
+  /* 0000015E nop                            */  0x90,
+  /* 0000015F nop                            */  0x90,
+  /* 00000160 nop                            */  0x90,
+  /* 00000161 nop                            */  0x90,
+  /* 00000162 nop                            */  0x90,
+  /* 00000163 nop                            */  0x90,
+  /* 00000164 nop                            */  0x90,
+  /* 00000165 nop                            */  0x90,
+  /* 00000166 nop                            */  0x90,
+  /* 00000167 nop                            */  0x90,
+  /* 00000168 nop                            */  0x90,
+  /* 00000169 nop                            */  0x90,
+  /* 0000016A nop                            */  0x90,
+  /* 0000016B nop                            */  0x90,
+  /* 0000016C nop                            */  0x90,
+  /* 0000016D nop                            */  0x90,
+  /* 0000016E nop                            */  0x90,
+  /* 0000016F nop                            */  0x90,
+  /* 00000170 nop                            */  0x90,
+  /* 00000171 nop                            */  0x90,
+  /* 00000172 nop                            */  0x90,
+  /* 00000173 nop                            */  0x90,
+  /* 00000174 nop                            */  0x90,
+  /* 00000175 nop                            */  0x90,
+  /* 00000176 nop                            */  0x90,
+  /* 00000177 nop                            */  0x90,
+  /* 00000178 nop                            */  0x90,
+  /* 00000179 nop                            */  0x90,
+  /* 0000017A nop                            */  0x90,
+  /* 0000017B nop                            */  0x90,
+  /* 0000017C nop                            */  0x90,
+  /* 0000017D nop                            */  0x90,
+  /* 0000017E nop                            */  0x90,
+  /* 0000017F nop                            */  0x90,
+  /* 00000180 nop                            */  0x90,
+  /* 00000181 nop                            */  0x90,
+  /* 00000182 nop                            */  0x90,
+  /* 00000183 nop                            */  0x90,
+  /* 00000184 nop                            */  0x90,
+  /* 00000185 nop                            */  0x90,
+  /* 00000186 nop                            */  0x90,
+  /* 00000187 nop                            */  0x90,
+  /* 00000188 nop                            */  0x90,
+  /* 00000189 nop                            */  0x90,
+  /* 0000018A nop                            */  0x90,
+  /* 0000018B nop                            */  0x90,
+  /* 0000018C nop                            */  0x90,
+  /* 0000018D nop                            */  0x90,
+  /* 0000018E nop                            */  0x90,
+  /* 0000018F nop                            */  0x90,
+  /* 00000190 nop                            */  0x90,
+  /* 00000191 nop                            */  0x90,
+  /* 00000192 nop                            */  0x90,
+  /* 00000193 nop                            */  0x90,
+  /* 00000194 nop                            */  0x90,
+  /* 00000195 nop                            */  0x90,
+  /* 00000196 nop                            */  0x90,
+  /* 00000197 nop                            */  0x90,
+  /* 00000198 nop                            */  0x90,
+  /* 00000199 nop                            */  0x90,
+  /* 0000019A nop                            */  0x90,
+  /* 0000019B nop                            */  0x90,
+  /* 0000019C nop                            */  0x90,
+  /* 0000019D nop                            */  0x90,
+  /* 0000019E nop                            */  0x90,
+  /* 0000019F nop                            */  0x90,
+  /* 000001A0 nop                            */  0x90,
+  /* 000001A1 nop                            */  0x90,
+  /* 000001A2 nop                            */  0x90,
+  /* 000001A3 nop                            */  0x90,
+  /* 000001A4 nop                            */  0x90,
+  /* 000001A5 nop                            */  0x90,
+  /* 000001A6 nop                            */  0x90,
+  /* 000001A7 nop                            */  0x90,
+  /* 000001A8 nop                            */  0x90,
+  /* 000001A9 nop                            */  0x90,
+  /* 000001AA nop                            */  0x90,
+  /* 000001AB nop                            */  0x90,
+  /* 000001AC nop                            */  0x90,
+  /* 000001AD nop                            */  0x90,
+  /* 000001AE nop                            */  0x90,
+  /* 000001AF nop                            */  0x90,
+  /* 000001B0 nop                            */  0x90,
+  /* 000001B1 nop                            */  0x90,
+  /* 000001B2 nop                            */  0x90,
+  /* 000001B3 nop                            */  0x90,
+  /* 000001B4 nop                            */  0x90,
+  /* 000001B5 nop                            */  0x90,
+  /* 000001B6 nop                            */  0x90,
+  /* 000001B7 nop                            */  0x90,
+  /* 000001B8 nop                            */  0x90,
+  /* 000001B9 nop                            */  0x90,
+  /* 000001BA nop                            */  0x90,
+  /* 000001BB nop                            */  0x90,
+  /* 000001BC nop                            */  0x90,
+  /* 000001BD nop                            */  0x90,
+  /* 000001BE nop                            */  0x90,
+  /* 000001BF nop                            */  0x90,
+  /* 000001C0 nop                            */  0x90,
+  /* 000001C1 nop                            */  0x90,
+  /* 000001C2 nop                            */  0x90,
+  /* 000001C3 nop                            */  0x90,
+  /* 000001C4 nop                            */  0x90,
+  /* 000001C5 nop                            */  0x90,
+  /* 000001C6 nop                            */  0x90,
+  /* 000001C7 nop                            */  0x90,
+  /* 000001C8 nop                            */  0x90,
+  /* 000001C9 nop                            */  0x90,
+  /* 000001CA nop                            */  0x90,
+  /* 000001CB nop                            */  0x90,
+  /* 000001CC nop                            */  0x90,
+  /* 000001CD nop                            */  0x90,
+  /* 000001CE nop                            */  0x90,
+  /* 000001CF nop                            */  0x90,
+  /* 000001D0 nop                            */  0x90,
+  /* 000001D1 nop                            */  0x90,
+  /* 000001D2 nop                            */  0x90,
+  /* 000001D3 nop                            */  0x90,
+  /* 000001D4 nop                            */  0x90,
+  /* 000001D5 nop                            */  0x90,
+  /* 000001D6 nop                            */  0x90,
+  /* 000001D7 nop                            */  0x90,
+  /* 000001D8 nop                            */  0x90,
+  /* 000001D9 nop                            */  0x90,
+  /* 000001DA nop                            */  0x90,
+  /* 000001DB nop                            */  0x90,
+  /* 000001DC nop                            */  0x90,
+  /* 000001DD nop                            */  0x90,
+  /* 000001DE nop                            */  0x90,
+  /* 000001DF nop                            */  0x90,
+  /* 000001E0 nop                            */  0x90,
+  /* 000001E1 nop                            */  0x90,
+  /* 000001E2 nop                            */  0x90,
+  /* 000001E3 nop                            */  0x90,
+  /* 000001E4 nop                            */  0x90,
+  /* 000001E5 nop                            */  0x90,
+  /* 000001E6 nop                            */  0x90,
+  /* 000001E7 nop                            */  0x90,
+  /* 000001E8 nop                            */  0x90,
+  /* 000001E9 nop                            */  0x90,
+  /* 000001EA nop                            */  0x90,
+  /* 000001EB nop                            */  0x90,
+  /* 000001EC nop                            */  0x90,
+  /* 000001ED nop                            */  0x90,
+  /* 000001EE nop                            */  0x90,
+  /* 000001EF nop                            */  0x90,
+  /* 000001F0 nop                            */  0x90,
+  /* 000001F1 nop                            */  0x90,
+  /* 000001F2 nop                            */  0x90,
+  /* 000001F3 nop                            */  0x90,
+  /* 000001F4 nop                            */  0x90,
+  /* 000001F5 nop                            */  0x90,
+  /* 000001F6 nop                            */  0x90,
+  /* 000001F7 nop                            */  0x90,
+  /* 000001F8 nop                            */  0x90,
+  /* 000001F9 nop                            */  0x90,
+  /* 000001FA nop                            */  0x90,
+  /* 000001FB nop                            */  0x90,
+  /* 000001FC nop                            */  0x90,
+  /* 000001FD nop                            */  0x90,
+  /* 000001FE nop                            */  0x90,
+  /* 000001FF nop                            */  0x90,
+  /* 00000200 cmp ax,0x4f00                  */  0x3D, 0x00, 0x4F,
+  /* 00000203 jz 0x237                       */  0x74, 0x32,
+  /* 00000205 cmp ax,0x4f01                  */  0x3D, 0x01, 0x4F,
+  /* 00000208 jz 0x257                       */  0x74, 0x4D,
+  /* 0000020A cmp ax,0x4f02                  */  0x3D, 0x02, 0x4F,
+  /* 0000020D jz word 0x2c8                  */  0x0F, 0x84, 0xB7, 0x00,
+  /* 00000211 cmp ax,0x4f03                  */  0x3D, 0x03, 0x4F,
+  /* 00000214 jz word 0x325                  */  0x0F, 0x84, 0x0D, 0x01,
+  /* 00000218 cmp ax,0x4f10                  */  0x3D, 0x10, 0x4F,
+  /* 0000021B jz word 0x337                  */  0x0F, 0x84, 0x18, 0x01,
+  /* 0000021F cmp ax,0x4f15                  */  0x3D, 0x15, 0x4F,
+  /* 00000222 jz word 0x344                  */  0x0F, 0x84, 0x1E, 0x01,
+  /* 00000226 cmp ah,0x0                     */  0x80, 0xFC, 0x00,
+  /* 00000229 jz word 0x363                  */  0x0F, 0x84, 0x36, 0x01,
+  /* 0000022D push si                        */  0x56,
+  /* 0000022E mov si,0x3d7                   */  0xBE, 0xD7, 0x03,
+  /* 00000231 call word 0x3ad                */  0xE8, 0x79, 0x01,
+  /* 00000234 pop si                         */  0x5E,
+  /* 00000235 jmp short 0x235                */  0xEB, 0xFE,
+  /* 00000237 push es                        */  0x06,
+  /* 00000238 push di                        */  0x57,
+  /* 00000239 push ds                        */  0x1E,
+  /* 0000023A push si                        */  0x56,
+  /* 0000023B push cx                        */  0x51,
+  /* 0000023C push si                        */  0x56,
+  /* 0000023D mov si,0x3eb                   */  0xBE, 0xEB, 0x03,
+  /* 00000240 call word 0x3ad                */  0xE8, 0x6A, 0x01,
+  /* 00000243 pop si                         */  0x5E,
+  /* 00000244 push cs                        */  0x0E,
+  /* 00000245 pop ds                         */  0x1F,
+  /* 00000246 mov si,0x0                     */  0xBE, 0x00, 0x00,
+  /* 00000249 mov cx,0x100                   */  0xB9, 0x00, 0x01,
+  /* 0000024C cld                            */  0xFC,
+  /* 0000024D rep movsb                      */  0xF3, 0xA4,
+  /* 0000024F pop cx                         */  0x59,
+  /* 00000250 pop si                         */  0x5E,
+  /* 00000251 pop ds                         */  0x1F,
+  /* 00000252 pop di                         */  0x5F,
+  /* 00000253 pop es                         */  0x07,
+  /* 00000254 jmp word 0x395                 */  0xE9, 0x3E, 0x01,
+  /* 00000257 push es                        */  0x06,
+  /* 00000258 push di                        */  0x57,
+  /* 00000259 push ds                        */  0x1E,
+  /* 0000025A push si                        */  0x56,
+  /* 0000025B push cx                        */  0x51,
+  /* 0000025C push si                        */  0x56,
+  /* 0000025D mov si,0x3f6                   */  0xBE, 0xF6, 0x03,
+  /* 00000260 call word 0x3ad                */  0xE8, 0x4A, 0x01,
+  /* 00000263 pop si                         */  0x5E,
+  /* 00000264 and cx,0xbfff                  */  0x81, 0xE1, 0xFF, 0xBF,
+  /* 00000268 cmp cx,0x13f                   */  0x81, 0xF9, 0x3F, 0x01,
+  /* 0000026C jz 0x284                       */  0x74, 0x16,
+  /* 0000026E cmp cx,0x140                   */  0x81, 0xF9, 0x40, 0x01,
+  /* 00000272 jz 0x291                       */  0x74, 0x1D,
+  /* 00000274 cmp cx,0x141                   */  0x81, 0xF9, 0x41, 0x01,
+  /* 00000278 jz 0x29e                       */  0x74, 0x24,
+  /* 0000027A push si                        */  0x56,
+  /* 0000027B mov si,0x42c                   */  0xBE, 0x2C, 0x04,
+  /* 0000027E call word 0x3ad                */  0xE8, 0x2C, 0x01,
+  /* 00000281 pop si                         */  0x5E,
+  /* 00000282 jmp short 0x235                */  0xEB, 0xB1,
+  /* 00000284 push si                        */  0x56,
+  /* 00000285 mov si,0x46b                   */  0xBE, 0x6B, 0x04,
+  /* 00000288 call word 0x3ad                */  0xE8, 0x22, 0x01,
+  /* 0000028B pop si                         */  0x5E,
+  /* 0000028C mov si,0x100                   */  0xBE, 0x00, 0x01,
+  /* 0000028F jmp short 0x2b8                */  0xEB, 0x27,
+  /* 00000291 push si                        */  0x56,
+  /* 00000292 mov si,0x47d                   */  0xBE, 0x7D, 0x04,
+  /* 00000295 call word 0x3ad                */  0xE8, 0x15, 0x01,
+  /* 00000298 pop si                         */  0x5E,
+  /* 00000299 mov si,0x132                   */  0xBE, 0x32, 0x01,
+  /* 0000029C jmp short 0x2b8                */  0xEB, 0x1A,
+  /* 0000029E push si                        */  0x56,
+  /* 0000029F mov si,0x48f                   */  0xBE, 0x8F, 0x04,
+  /* 000002A2 call word 0x3ad                */  0xE8, 0x08, 0x01,
+  /* 000002A5 pop si                         */  0x5E,
+  /* 000002A6 mov si,0x164                   */  0xBE, 0x64, 0x01,
+  /* 000002A9 jmp short 0x2b8                */  0xEB, 0x0D,
+  /* 000002AB push si                        */  0x56,
+  /* 000002AC mov si,0x4a2                   */  0xBE, 0xA2, 0x04,
+  /* 000002AF call word 0x3ad                */  0xE8, 0xFB, 0x00,
+  /* 000002B2 pop si                         */  0x5E,
+  /* 000002B3 mov si,0x196                   */  0xBE, 0x96, 0x01,
+  /* 000002B6 jmp short 0x2b8                */  0xEB, 0x00,
+  /* 000002B8 push cs                        */  0x0E,
+  /* 000002B9 pop ds                         */  0x1F,
+  /* 000002BA mov cx,0x32                    */  0xB9, 0x32, 0x00,
+  /* 000002BD cld                            */  0xFC,
+  /* 000002BE rep movsb                      */  0xF3, 0xA4,
+  /* 000002C0 pop cx                         */  0x59,
+  /* 000002C1 pop si                         */  0x5E,
+  /* 000002C2 pop ds                         */  0x1F,
+  /* 000002C3 pop di                         */  0x5F,
+  /* 000002C4 pop es                         */  0x07,
+  /* 000002C5 jmp word 0x395                 */  0xE9, 0xCD, 0x00,
+  /* 000002C8 push dx                        */  0x52,
+  /* 000002C9 push ax                        */  0x50,
+  /* 000002CA push si                        */  0x56,
+  /* 000002CB mov si,0x410                   */  0xBE, 0x10, 0x04,
+  /* 000002CE call word 0x3ad                */  0xE8, 0xDC, 0x00,
+  /* 000002D1 pop si                         */  0x5E,
+  /* 000002D2 and bx,0xbfff                  */  0x81, 0xE3, 0xFF, 0xBF,
+  /* 000002D6 cmp bx,0x13f                   */  0x81, 0xFB, 0x3F, 0x01,
+  /* 000002DA jz 0x2f3                       */  0x74, 0x17,
+  /* 000002DC cmp bx,0x140                   */  0x81, 0xFB, 0x40, 0x01,
+  /* 000002E0 jz 0x2fd                       */  0x74, 0x1B,
+  /* 000002E2 cmp bx,0x141                   */  0x81, 0xFB, 0x41, 0x01,
+  /* 000002E6 jz 0x307                       */  0x74, 0x1F,
+  /* 000002E8 push si                        */  0x56,
+  /* 000002E9 mov si,0x42c                   */  0xBE, 0x2C, 0x04,
+  /* 000002EC call word 0x3ad                */  0xE8, 0xBE, 0x00,
+  /* 000002EF pop si                         */  0x5E,
+  /* 000002F0 jmp word 0x235                 */  0xE9, 0x42, 0xFF,
+  /* 000002F3 push si                        */  0x56,
+  /* 000002F4 mov si,0x46b                   */  0xBE, 0x6B, 0x04,
+  /* 000002F7 call word 0x3ad                */  0xE8, 0xB3, 0x00,
+  /* 000002FA pop si                         */  0x5E,
+  /* 000002FB jmp short 0x319                */  0xEB, 0x1C,
+  /* 000002FD push si                        */  0x56,
+  /* 000002FE mov si,0x47d                   */  0xBE, 0x7D, 0x04,
+  /* 00000301 call word 0x3ad                */  0xE8, 0xA9, 0x00,
+  /* 00000304 pop si                         */  0x5E,
+  /* 00000305 jmp short 0x319                */  0xEB, 0x12,
+  /* 00000307 push si                        */  0x56,
+  /* 00000308 mov si,0x48f                   */  0xBE, 0x8F, 0x04,
+  /* 0000030B call word 0x3ad                */  0xE8, 0x9F, 0x00,
+  /* 0000030E pop si                         */  0x5E,
+  /* 0000030F jmp short 0x319                */  0xEB, 0x08,
+  /* 00000311 push si                        */  0x56,
+  /* 00000312 mov si,0x4a2                   */  0xBE, 0xA2, 0x04,
+  /* 00000315 call word 0x3ad                */  0xE8, 0x95, 0x00,
+  /* 00000318 pop si                         */  0x5E,
+  /* 00000319 mov [0x4b0],bl                 */  0x88, 0x1E, 0xB0, 0x04,
+  /* 0000031D mov [0x4b1],bh                 */  0x88, 0x3E, 0xB1, 0x04,
+  /* 00000321 pop ax                         */  0x58,
+  /* 00000322 pop dx                         */  0x5A,
+  /* 00000323 jmp short 0x395                */  0xEB, 0x70,
+  /* 00000325 push si                        */  0x56,
+  /* 00000326 mov si,0x405                   */  0xBE, 0x05, 0x04,
+  /* 00000329 call word 0x3ad                */  0xE8, 0x81, 0x00,
+  /* 0000032C pop si                         */  0x5E,
+  /* 0000032D mov bl,[0x4b0]                 */  0x8A, 0x1E, 0xB0, 0x04,
+  /* 00000331 mov bh,[0x4b1]                 */  0x8A, 0x3E, 0xB1, 0x04,
+  /* 00000335 jmp short 0x395                */  0xEB, 0x5E,
+  /* 00000337 push si                        */  0x56,
+  /* 00000338 mov si,0x43b                   */  0xBE, 0x3B, 0x04,
+  /* 0000033B call word 0x3ad                */  0xE8, 0x6F, 0x00,
+  /* 0000033E pop si                         */  0x5E,
+  /* 0000033F mov bx,0x80                    */  0xBB, 0x80, 0x00,
+  /* 00000342 jmp short 0x395                */  0xEB, 0x51,
+  /* 00000344 push es                        */  0x06,
+  /* 00000345 push di                        */  0x57,
+  /* 00000346 push ds                        */  0x1E,
+  /* 00000347 push si                        */  0x56,
+  /* 00000348 push cx                        */  0x51,
+  /* 00000349 push si                        */  0x56,
+  /* 0000034A mov si,0x450                   */  0xBE, 0x50, 0x04,
+  /* 0000034D call word 0x3ad                */  0xE8, 0x5D, 0x00,
+  /* 00000350 pop si                         */  0x5E,
+  /* 00000351 push cs                        */  0x0E,
+  /* 00000352 pop ds                         */  0x1F,
+  /* 00000353 mov si,0x4b2                   */  0xBE, 0xB2, 0x04,
+  /* 00000356 mov cx,0x80                    */  0xB9, 0x80, 0x00,
+  /* 00000359 cld                            */  0xFC,
+  /* 0000035A rep movsb                      */  0xF3, 0xA4,
+  /* 0000035C pop cx                         */  0x59,
+  /* 0000035D pop si                         */  0x5E,
+  /* 0000035E pop ds                         */  0x1F,
+  /* 0000035F pop di                         */  0x5F,
+  /* 00000360 pop es                         */  0x07,
+  /* 00000361 jmp short 0x395                */  0xEB, 0x32,
+  /* 00000363 push si                        */  0x56,
+  /* 00000364 mov si,0x41b                   */  0xBE, 0x1B, 0x04,
+  /* 00000367 call word 0x3ad                */  0xE8, 0x43, 0x00,
+  /* 0000036A pop si                         */  0x5E,
+  /* 0000036B cmp al,0x3                     */  0x3C, 0x03,
+  /* 0000036D jz 0x37e                       */  0x74, 0x0F,
+  /* 0000036F cmp al,0x12                    */  0x3C, 0x12,
+  /* 00000371 jz 0x38a                       */  0x74, 0x17,
+  /* 00000373 push si                        */  0x56,
+  /* 00000374 mov si,0x42c                   */  0xBE, 0x2C, 0x04,
+  /* 00000377 call word 0x3ad                */  0xE8, 0x33, 0x00,
+  /* 0000037A pop si                         */  0x5E,
+  /* 0000037B jmp word 0x235                 */  0xE9, 0xB7, 0xFE,
+  /* 0000037E push si                        */  0x56,
+  /* 0000037F mov si,0x45c                   */  0xBE, 0x5C, 0x04,
+  /* 00000382 call word 0x3ad                */  0xE8, 0x28, 0x00,
+  /* 00000385 pop si                         */  0x5E,
+  /* 00000386 mov al,0x0                     */  0xB0, 0x00,
+  /* 00000388 jmp short 0x38c                */  0xEB, 0x02,
+  /* 0000038A mov al,0x0                     */  0xB0, 0x00,
+  /* 0000038C push si                        */  0x56,
+  /* 0000038D mov si,0x3c2                   */  0xBE, 0xC2, 0x03,
+  /* 00000390 call word 0x3ad                */  0xE8, 0x1A, 0x00,
+  /* 00000393 pop si                         */  0x5E,
+  /* 00000394 iretw                          */  0xCF,
+  /* 00000395 push si                        */  0x56,
+  /* 00000396 mov si,0x3c2                   */  0xBE, 0xC2, 0x03,
+  /* 00000399 call word 0x3ad                */  0xE8, 0x11, 0x00,
+  /* 0000039C pop si                         */  0x5E,
+  /* 0000039D mov ax,0x4f                    */  0xB8, 0x4F, 0x00,
+  /* 000003A0 iretw                          */  0xCF,
+  /* 000003A1 push si                        */  0x56,
+  /* 000003A2 mov si,0x3c8                   */  0xBE, 0xC8, 0x03,
+  /* 000003A5 call word 0x3ad                */  0xE8, 0x05, 0x00,
+  /* 000003A8 pop si                         */  0x5E,
+  /* 000003A9 mov ax,0x24f                   */  0xB8, 0x4F, 0x02,
+  /* 000003AC iretw                          */  0xCF,
+  /* 000003AD pushaw                         */  0x60,
+  /* 000003AE push ds                        */  0x1E,
+  /* 000003AF push cs                        */  0x0E,
+  /* 000003B0 pop ds                         */  0x1F,
+  /* 000003B1 mov dx,0x220                   */  0xBA, 0x20, 0x02,
+  /* 000003B4 mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 000003B7 lodsb                          */  0xAC,
+  /* 000003B8 cmp al,0x0                     */  0x3C, 0x00,
+  /* 000003BA jz 0x3bf                       */  0x74, 0x03,
+  /* 000003BC out dx,al                      */  0xEE,
+  /* 000003BD jmp short 0x3b7                */  0xEB, 0xF8,
+  /* 000003BF pop ds                         */  0x1F,
+  /* 000003C0 popaw                          */  0x61,
+  /* 000003C1 ret                            */  0xC3,
+  /* 000003C2 jna 0x413                      */  0x76, 0x4F,
+  /* 000003C4 imul cx,[di],byte +0xa         */  0x6B, 0x0D, 0x0A,
+  /* 000003C7 add [bp+0x55],dh               */  0x00, 0x76, 0x55,
+  /* 000003CA outsb                          */  0x6E,
+  /* 000003CB jnc 0x442                      */  0x73, 0x75,
+  /* 000003CD jo 0x43f                       */  0x70, 0x70,
+  /* 000003CF outsw                          */  0x6F,
+  /* 000003D0 jc 0x446                       */  0x72, 0x74,
+  /* 000003D2 fs or ax,0xa                   */  0x65, 0x64, 0x0D, 0x0A, 0x00,
+  /* 000003D7 jna 0x42e                      */  0x76, 0x55,
+  /* 000003D9 outsb                          */  0x6E,
+  /* 000003DA imul bp,[bp+0x6f],byte +0x77   */  0x6B, 0x6E, 0x6F, 0x77,
+  /* 000003DE outsb                          */  0x6E,
+  /* 000003DF and [bp+0x75],al               */  0x20, 0x46, 0x75,
+  /* 000003E2 outsb                          */  0x6E,
+  /* 000003E3 arpl [si+0x69],si              */  0x63, 0x74, 0x69,
+  /* 000003E6 outsw                          */  0x6F,
+  /* 000003E7 outsb                          */  0x6E,
+  /* 000003E8 or ax,0xa                      */  0x0D, 0x0A, 0x00,
+  /* 000003EB jna 0x434                      */  0x76, 0x47,
+  /* 000003ED gs jz 0x439                    */  0x65, 0x74, 0x49,
+  /* 000003F0 outsb                          */  0x6E,
+  /* 000003F1 outsd                          */  0x66, 0x6F,
+  /* 000003F3 or ax,0xa                      */  0x0D, 0x0A, 0x00,
+  /* 000003F6 jna 0x43f                      */  0x76, 0x47,
+  /* 000003F8 gs jz 0x448                    */  0x65, 0x74, 0x4D,
+  /* 000003FB outsw                          */  0x6F,
+  /* 000003FC gs dec cx                      */  0x64, 0x65, 0x49,
+  /* 000003FF outsb                          */  0x6E,
+  /* 00000400 outsd                          */  0x66, 0x6F,
+  /* 00000402 or ax,0xa                      */  0x0D, 0x0A, 0x00,
+  /* 00000405 jna 0x44e                      */  0x76, 0x47,
+  /* 00000407 gs jz 0x457                    */  0x65, 0x74, 0x4D,
+  /* 0000040A outsw                          */  0x6F,
+  /* 0000040B gs or ax,0xa                   */  0x64, 0x65, 0x0D, 0x0A, 0x00,
+  /* 00000410 jna 0x465                      */  0x76, 0x53,
+  /* 00000412 gs jz 0x462                    */  0x65, 0x74, 0x4D,
+  /* 00000415 outsw                          */  0x6F,
+  /* 00000416 gs or ax,0xa                   */  0x64, 0x65, 0x0D, 0x0A, 0x00,
+  /* 0000041B jna 0x470                      */  0x76, 0x53,
+  /* 0000041D gs jz 0x46d                    */  0x65, 0x74, 0x4D,
+  /* 00000420 outsw                          */  0x6F,
+  /* 00000421 gs dec sp                      */  0x64, 0x65, 0x4C,
+  /* 00000424 gs a32 popaw                   */  0x65, 0x67, 0x61,
+  /* 00000427 arpl [bx+di+0xd],di            */  0x63, 0x79, 0x0D,
+  /* 0000042A or al,[bx+si]                  */  0x0A, 0x00,
+  /* 0000042C jna 0x483                      */  0x76, 0x55,
+  /* 0000042E outsb                          */  0x6E,
+  /* 0000042F imul bp,[bx+0x77],byte +0x6e   */  0x6B, 0x6F, 0x77, 0x6E,
+  /* 00000433 and [di+0x6f],cl               */  0x20, 0x4D, 0x6F,
+  /* 00000436 gs or ax,0xa                   */  0x64, 0x65, 0x0D, 0x0A, 0x00,
+  /* 0000043B jna 0x484                      */  0x76, 0x47,
+  /* 0000043D gs jz 0x490                    */  0x65, 0x74, 0x50,
+  /* 00000440 insw                           */  0x6D,
+  /* 00000441 inc bx                         */  0x43,
+  /* 00000442 popaw                          */  0x61,
+  /* 00000443 jo 0x4a6                       */  0x70, 0x61,
+  /* 00000445 bound bp,[bx+di+0x6c]          */  0x62, 0x69, 0x6C,
+  /* 00000448 imul si,[si+0x69],word 0x7365  */  0x69, 0x74, 0x69, 0x65, 0x73,
+  /* 0000044D or ax,0xa                      */  0x0D, 0x0A, 0x00,
+  /* 00000450 jna 0x4a4                      */  0x76, 0x52,
+  /* 00000452 gs popaw                       */  0x65, 0x61,
+  /* 00000454 fs inc bp                      */  0x64, 0x45,
+  /* 00000456 imul sp,[fs:si+0xd],word 0xa   */  0x64, 0x69, 0x64, 0x0D, 0x0A, 0x00,
+  /* 0000045C jna 0x4aa                      */  0x76, 0x4C,
+  /* 0000045E gs a32 popaw                   */  0x65, 0x67, 0x61,
+  /* 00000461 arpl [bx+di+0x4d],di           */  0x63, 0x79, 0x4D,
+  /* 00000464 outsw                          */  0x6F,
+  /* 00000465 xor cx,[gs:di]                 */  0x64, 0x65, 0x33, 0x0D,
+  /* 00000469 or al,[bx+si]                  */  0x0A, 0x00,
+  /* 0000046B insw                           */  0x6D,
+  /* 0000046C outsw                          */  0x6F,
+  /* 0000046D gs pop di                      */  0x64, 0x65, 0x5F,
+  /* 00000470 ss xor al,0x30                 */  0x36, 0x34, 0x30,
+  /* 00000473 js 0x4a9                       */  0x78, 0x34,
+  /* 00000475 cmp [bx+si],dh                 */  0x38, 0x30,
+  /* 00000477 js 0x4ac                       */  0x78, 0x33,
+  /* 00000479 xor cl,[di]                    */  0x32, 0x0D,
+  /* 0000047B or al,[bx+si]                  */  0x0A, 0x00,
+  /* 0000047D insw                           */  0x6D,
+  /* 0000047E outsw                          */  0x6F,
+  /* 0000047F gs pop di                      */  0x64, 0x65, 0x5F,
+  /* 00000482 cmp [bx+si],dh                 */  0x38, 0x30,
+  /* 00000484 xor [bx+si+0x36],bh            */  0x30, 0x78, 0x36,
+  /* 00000487 xor [bx+si],dh                 */  0x30, 0x30,
+  /* 00000489 js 0x4be                       */  0x78, 0x33,
+  /* 0000048B xor cl,[di]                    */  0x32, 0x0D,
+  /* 0000048D or al,[bx+si]                  */  0x0A, 0x00,
+  /* 0000048F insw                           */  0x6D,
+  /* 00000490 outsw                          */  0x6F,
+  /* 00000491 gs pop di                      */  0x64, 0x65, 0x5F,
+  /* 00000494 xor [bx+si],si                 */  0x31, 0x30,
+  /* 00000496 xor dh,[si]                    */  0x32, 0x34,
+  /* 00000498 js 0x4d1                       */  0x78, 0x37,
+  /* 0000049A cmp [ss:bx+si+0x33],bh         */  0x36, 0x38, 0x78, 0x33,
+  /* 0000049E xor cl,[di]                    */  0x32, 0x0D,
+  /* 000004A0 or al,[bx+si]                  */  0x0A, 0x00,
+  /* 000004A2 insw                           */  0x6D,
+  /* 000004A3 outsw                          */  0x6F,
+  /* 000004A4 gs pop di                      */  0x64, 0x65, 0x5F,
+  /* 000004A7 jnz 0x517                      */  0x75, 0x6E,
+  /* 000004A9 jnz 0x51e                      */  0x75, 0x73,
+  /* 000004AB fs or ax,0xa                   */  0x65, 0x64, 0x0D, 0x0A, 0x00,
+  /* 000004B0 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004B2 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004B4 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004B6 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004B8 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004BA add [bx+si],al                 */  0x00, 0x00,
+  /* 000004BC add [bx+si],al                 */  0x00, 0x00,
+  /* 000004BE add [bx+si],al                 */  0x00, 0x00,
+  /* 000004C0 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004C2 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004C4 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004C6 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004C8 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004CA add [bx+si],al                 */  0x00, 0x00,
+  /* 000004CC add [bx+si],al                 */  0x00, 0x00,
+  /* 000004CE add [bx+si],al                 */  0x00, 0x00,
+  /* 000004D0 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004D2 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004D4 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004D6 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004D8 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004DA add [bx+si],al                 */  0x00, 0x00,
+  /* 000004DC add [bx+si],al                 */  0x00, 0x00,
+  /* 000004DE add [bx+si],al                 */  0x00, 0x00,
+  /* 000004E0 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004E2 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004E4 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004E6 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004E8 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004EA add [bx+si],al                 */  0x00, 0x00,
+  /* 000004EC add [bx+si],al                 */  0x00, 0x00,
+  /* 000004EE add [bx+si],al                 */  0x00, 0x00,
+  /* 000004F0 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004F2 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004F4 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004F6 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004F8 add [bx+si],al                 */  0x00, 0x00,
+  /* 000004FA add [bx+si],al                 */  0x00, 0x00,
+  /* 000004FC add [bx+si],al                 */  0x00, 0x00,
+  /* 000004FE add [bx+si],al                 */  0x00, 0x00,
+  /* 00000500 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000502 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000504 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000506 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000508 add [bx+si],al                 */  0x00, 0x00,
+  /* 0000050A add [bx+si],al                 */  0x00, 0x00,
+  /* 0000050C add [bx+si],al                 */  0x00, 0x00,
+  /* 0000050E add [bx+si],al                 */  0x00, 0x00,
+  /* 00000510 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000512 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000514 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000516 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000518 add [bx+si],al                 */  0x00, 0x00,
+  /* 0000051A add [bx+si],al                 */  0x00, 0x00,
+  /* 0000051C add [bx+si],al                 */  0x00, 0x00,
+  /* 0000051E add [bx+si],al                 */  0x00, 0x00,
+  /* 00000520 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000522 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000524 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000526 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000528 add [bx+si],al                 */  0x00, 0x00,
+  /* 0000052A add [bx+si],al                 */  0x00, 0x00,
+  /* 0000052C add [bx+si],al                 */  0x00, 0x00,
+  /* 0000052E add [bx+si],al                 */  0x00, 0x00,
+  /* 00000530 add [bx+si],al                 */  0x00, 0x00,
+  /* 00000532 add [bx+si],al                 */  0x00, 0x00,
 };
 #endif
diff --git a/OvmfPkg/QemuVideoDxe/VbeShim.h b/OvmfPkg/QemuVideoDxe/VbeShim.h
index f72e18843fd3..cc9b6e14cdcd 100644
--- a/OvmfPkg/QemuVideoDxe/VbeShim.h
+++ b/OvmfPkg/QemuVideoDxe/VbeShim.h
@@ -1,702 +1,701 @@
 //
 // THIS FILE WAS GENERATED BY "VbeShim.sh". DO NOT EDIT.
 //
-
 #ifndef _VBE_SHIM_H_
 #define _VBE_SHIM_H_
-STATIC CONST UINT8  mVbeShim[] = {
-  /* 00000000 nop                            */ 0x90,
-  /* 00000001 nop                            */ 0x90,
-  /* 00000002 nop                            */ 0x90,
-  /* 00000003 nop                            */ 0x90,
-  /* 00000004 nop                            */ 0x90,
-  /* 00000005 nop                            */ 0x90,
-  /* 00000006 nop                            */ 0x90,
-  /* 00000007 nop                            */ 0x90,
-  /* 00000008 nop                            */ 0x90,
-  /* 00000009 nop                            */ 0x90,
-  /* 0000000A nop                            */ 0x90,
-  /* 0000000B nop                            */ 0x90,
-  /* 0000000C nop                            */ 0x90,
-  /* 0000000D nop                            */ 0x90,
-  /* 0000000E nop                            */ 0x90,
-  /* 0000000F nop                            */ 0x90,
-  /* 00000010 nop                            */ 0x90,
-  /* 00000011 nop                            */ 0x90,
-  /* 00000012 nop                            */ 0x90,
-  /* 00000013 nop                            */ 0x90,
-  /* 00000014 nop                            */ 0x90,
-  /* 00000015 nop                            */ 0x90,
-  /* 00000016 nop                            */ 0x90,
-  /* 00000017 nop                            */ 0x90,
-  /* 00000018 nop                            */ 0x90,
-  /* 00000019 nop                            */ 0x90,
-  /* 0000001A nop                            */ 0x90,
-  /* 0000001B nop                            */ 0x90,
-  /* 0000001C nop                            */ 0x90,
-  /* 0000001D nop                            */ 0x90,
-  /* 0000001E nop                            */ 0x90,
-  /* 0000001F nop                            */ 0x90,
-  /* 00000020 nop                            */ 0x90,
-  /* 00000021 nop                            */ 0x90,
-  /* 00000022 nop                            */ 0x90,
-  /* 00000023 nop                            */ 0x90,
-  /* 00000024 nop                            */ 0x90,
-  /* 00000025 nop                            */ 0x90,
-  /* 00000026 nop                            */ 0x90,
-  /* 00000027 nop                            */ 0x90,
-  /* 00000028 nop                            */ 0x90,
-  /* 00000029 nop                            */ 0x90,
-  /* 0000002A nop                            */ 0x90,
-  /* 0000002B nop                            */ 0x90,
-  /* 0000002C nop                            */ 0x90,
-  /* 0000002D nop                            */ 0x90,
-  /* 0000002E nop                            */ 0x90,
-  /* 0000002F nop                            */ 0x90,
-  /* 00000030 nop                            */ 0x90,
-  /* 00000031 nop                            */ 0x90,
-  /* 00000032 nop                            */ 0x90,
-  /* 00000033 nop                            */ 0x90,
-  /* 00000034 nop                            */ 0x90,
-  /* 00000035 nop                            */ 0x90,
-  /* 00000036 nop                            */ 0x90,
-  /* 00000037 nop                            */ 0x90,
-  /* 00000038 nop                            */ 0x90,
-  /* 00000039 nop                            */ 0x90,
-  /* 0000003A nop                            */ 0x90,
-  /* 0000003B nop                            */ 0x90,
-  /* 0000003C nop                            */ 0x90,
-  /* 0000003D nop                            */ 0x90,
-  /* 0000003E nop                            */ 0x90,
-  /* 0000003F nop                            */ 0x90,
-  /* 00000040 nop                            */ 0x90,
-  /* 00000041 nop                            */ 0x90,
-  /* 00000042 nop                            */ 0x90,
-  /* 00000043 nop                            */ 0x90,
-  /* 00000044 nop                            */ 0x90,
-  /* 00000045 nop                            */ 0x90,
-  /* 00000046 nop                            */ 0x90,
-  /* 00000047 nop                            */ 0x90,
-  /* 00000048 nop                            */ 0x90,
-  /* 00000049 nop                            */ 0x90,
-  /* 0000004A nop                            */ 0x90,
-  /* 0000004B nop                            */ 0x90,
-  /* 0000004C nop                            */ 0x90,
-  /* 0000004D nop                            */ 0x90,
-  /* 0000004E nop                            */ 0x90,
-  /* 0000004F nop                            */ 0x90,
-  /* 00000050 nop                            */ 0x90,
-  /* 00000051 nop                            */ 0x90,
-  /* 00000052 nop                            */ 0x90,
-  /* 00000053 nop                            */ 0x90,
-  /* 00000054 nop                            */ 0x90,
-  /* 00000055 nop                            */ 0x90,
-  /* 00000056 nop                            */ 0x90,
-  /* 00000057 nop                            */ 0x90,
-  /* 00000058 nop                            */ 0x90,
-  /* 00000059 nop                            */ 0x90,
-  /* 0000005A nop                            */ 0x90,
-  /* 0000005B nop                            */ 0x90,
-  /* 0000005C nop                            */ 0x90,
-  /* 0000005D nop                            */ 0x90,
-  /* 0000005E nop                            */ 0x90,
-  /* 0000005F nop                            */ 0x90,
-  /* 00000060 nop                            */ 0x90,
-  /* 00000061 nop                            */ 0x90,
-  /* 00000062 nop                            */ 0x90,
-  /* 00000063 nop                            */ 0x90,
-  /* 00000064 nop                            */ 0x90,
-  /* 00000065 nop                            */ 0x90,
-  /* 00000066 nop                            */ 0x90,
-  /* 00000067 nop                            */ 0x90,
-  /* 00000068 nop                            */ 0x90,
-  /* 00000069 nop                            */ 0x90,
-  /* 0000006A nop                            */ 0x90,
-  /* 0000006B nop                            */ 0x90,
-  /* 0000006C nop                            */ 0x90,
-  /* 0000006D nop                            */ 0x90,
-  /* 0000006E nop                            */ 0x90,
-  /* 0000006F nop                            */ 0x90,
-  /* 00000070 nop                            */ 0x90,
-  /* 00000071 nop                            */ 0x90,
-  /* 00000072 nop                            */ 0x90,
-  /* 00000073 nop                            */ 0x90,
-  /* 00000074 nop                            */ 0x90,
-  /* 00000075 nop                            */ 0x90,
-  /* 00000076 nop                            */ 0x90,
-  /* 00000077 nop                            */ 0x90,
-  /* 00000078 nop                            */ 0x90,
-  /* 00000079 nop                            */ 0x90,
-  /* 0000007A nop                            */ 0x90,
-  /* 0000007B nop                            */ 0x90,
-  /* 0000007C nop                            */ 0x90,
-  /* 0000007D nop                            */ 0x90,
-  /* 0000007E nop                            */ 0x90,
-  /* 0000007F nop                            */ 0x90,
-  /* 00000080 nop                            */ 0x90,
-  /* 00000081 nop                            */ 0x90,
-  /* 00000082 nop                            */ 0x90,
-  /* 00000083 nop                            */ 0x90,
-  /* 00000084 nop                            */ 0x90,
-  /* 00000085 nop                            */ 0x90,
-  /* 00000086 nop                            */ 0x90,
-  /* 00000087 nop                            */ 0x90,
-  /* 00000088 nop                            */ 0x90,
-  /* 00000089 nop                            */ 0x90,
-  /* 0000008A nop                            */ 0x90,
-  /* 0000008B nop                            */ 0x90,
-  /* 0000008C nop                            */ 0x90,
-  /* 0000008D nop                            */ 0x90,
-  /* 0000008E nop                            */ 0x90,
-  /* 0000008F nop                            */ 0x90,
-  /* 00000090 nop                            */ 0x90,
-  /* 00000091 nop                            */ 0x90,
-  /* 00000092 nop                            */ 0x90,
-  /* 00000093 nop                            */ 0x90,
-  /* 00000094 nop                            */ 0x90,
-  /* 00000095 nop                            */ 0x90,
-  /* 00000096 nop                            */ 0x90,
-  /* 00000097 nop                            */ 0x90,
-  /* 00000098 nop                            */ 0x90,
-  /* 00000099 nop                            */ 0x90,
-  /* 0000009A nop                            */ 0x90,
-  /* 0000009B nop                            */ 0x90,
-  /* 0000009C nop                            */ 0x90,
-  /* 0000009D nop                            */ 0x90,
-  /* 0000009E nop                            */ 0x90,
-  /* 0000009F nop                            */ 0x90,
-  /* 000000A0 nop                            */ 0x90,
-  /* 000000A1 nop                            */ 0x90,
-  /* 000000A2 nop                            */ 0x90,
-  /* 000000A3 nop                            */ 0x90,
-  /* 000000A4 nop                            */ 0x90,
-  /* 000000A5 nop                            */ 0x90,
-  /* 000000A6 nop                            */ 0x90,
-  /* 000000A7 nop                            */ 0x90,
-  /* 000000A8 nop                            */ 0x90,
-  /* 000000A9 nop                            */ 0x90,
-  /* 000000AA nop                            */ 0x90,
-  /* 000000AB nop                            */ 0x90,
-  /* 000000AC nop                            */ 0x90,
-  /* 000000AD nop                            */ 0x90,
-  /* 000000AE nop                            */ 0x90,
-  /* 000000AF nop                            */ 0x90,
-  /* 000000B0 nop                            */ 0x90,
-  /* 000000B1 nop                            */ 0x90,
-  /* 000000B2 nop                            */ 0x90,
-  /* 000000B3 nop                            */ 0x90,
-  /* 000000B4 nop                            */ 0x90,
-  /* 000000B5 nop                            */ 0x90,
-  /* 000000B6 nop                            */ 0x90,
-  /* 000000B7 nop                            */ 0x90,
-  /* 000000B8 nop                            */ 0x90,
-  /* 000000B9 nop                            */ 0x90,
-  /* 000000BA nop                            */ 0x90,
-  /* 000000BB nop                            */ 0x90,
-  /* 000000BC nop                            */ 0x90,
-  /* 000000BD nop                            */ 0x90,
-  /* 000000BE nop                            */ 0x90,
-  /* 000000BF nop                            */ 0x90,
-  /* 000000C0 nop                            */ 0x90,
-  /* 000000C1 nop                            */ 0x90,
-  /* 000000C2 nop                            */ 0x90,
-  /* 000000C3 nop                            */ 0x90,
-  /* 000000C4 nop                            */ 0x90,
-  /* 000000C5 nop                            */ 0x90,
-  /* 000000C6 nop                            */ 0x90,
-  /* 000000C7 nop                            */ 0x90,
-  /* 000000C8 nop                            */ 0x90,
-  /* 000000C9 nop                            */ 0x90,
-  /* 000000CA nop                            */ 0x90,
-  /* 000000CB nop                            */ 0x90,
-  /* 000000CC nop                            */ 0x90,
-  /* 000000CD nop                            */ 0x90,
-  /* 000000CE nop                            */ 0x90,
-  /* 000000CF nop                            */ 0x90,
-  /* 000000D0 nop                            */ 0x90,
-  /* 000000D1 nop                            */ 0x90,
-  /* 000000D2 nop                            */ 0x90,
-  /* 000000D3 nop                            */ 0x90,
-  /* 000000D4 nop                            */ 0x90,
-  /* 000000D5 nop                            */ 0x90,
-  /* 000000D6 nop                            */ 0x90,
-  /* 000000D7 nop                            */ 0x90,
-  /* 000000D8 nop                            */ 0x90,
-  /* 000000D9 nop                            */ 0x90,
-  /* 000000DA nop                            */ 0x90,
-  /* 000000DB nop                            */ 0x90,
-  /* 000000DC nop                            */ 0x90,
-  /* 000000DD nop                            */ 0x90,
-  /* 000000DE nop                            */ 0x90,
-  /* 000000DF nop                            */ 0x90,
-  /* 000000E0 nop                            */ 0x90,
-  /* 000000E1 nop                            */ 0x90,
-  /* 000000E2 nop                            */ 0x90,
-  /* 000000E3 nop                            */ 0x90,
-  /* 000000E4 nop                            */ 0x90,
-  /* 000000E5 nop                            */ 0x90,
-  /* 000000E6 nop                            */ 0x90,
-  /* 000000E7 nop                            */ 0x90,
-  /* 000000E8 nop                            */ 0x90,
-  /* 000000E9 nop                            */ 0x90,
-  /* 000000EA nop                            */ 0x90,
-  /* 000000EB nop                            */ 0x90,
-  /* 000000EC nop                            */ 0x90,
-  /* 000000ED nop                            */ 0x90,
-  /* 000000EE nop                            */ 0x90,
-  /* 000000EF nop                            */ 0x90,
-  /* 000000F0 nop                            */ 0x90,
-  /* 000000F1 nop                            */ 0x90,
-  /* 000000F2 nop                            */ 0x90,
-  /* 000000F3 nop                            */ 0x90,
-  /* 000000F4 nop                            */ 0x90,
-  /* 000000F5 nop                            */ 0x90,
-  /* 000000F6 nop                            */ 0x90,
-  /* 000000F7 nop                            */ 0x90,
-  /* 000000F8 nop                            */ 0x90,
-  /* 000000F9 nop                            */ 0x90,
-  /* 000000FA nop                            */ 0x90,
-  /* 000000FB nop                            */ 0x90,
-  /* 000000FC nop                            */ 0x90,
-  /* 000000FD nop                            */ 0x90,
-  /* 000000FE nop                            */ 0x90,
-  /* 000000FF nop                            */ 0x90,
-  /* 00000100 nop                            */ 0x90,
-  /* 00000101 nop                            */ 0x90,
-  /* 00000102 nop                            */ 0x90,
-  /* 00000103 nop                            */ 0x90,
-  /* 00000104 nop                            */ 0x90,
-  /* 00000105 nop                            */ 0x90,
-  /* 00000106 nop                            */ 0x90,
-  /* 00000107 nop                            */ 0x90,
-  /* 00000108 nop                            */ 0x90,
-  /* 00000109 nop                            */ 0x90,
-  /* 0000010A nop                            */ 0x90,
-  /* 0000010B nop                            */ 0x90,
-  /* 0000010C nop                            */ 0x90,
-  /* 0000010D nop                            */ 0x90,
-  /* 0000010E nop                            */ 0x90,
-  /* 0000010F nop                            */ 0x90,
-  /* 00000110 nop                            */ 0x90,
-  /* 00000111 nop                            */ 0x90,
-  /* 00000112 nop                            */ 0x90,
-  /* 00000113 nop                            */ 0x90,
-  /* 00000114 nop                            */ 0x90,
-  /* 00000115 nop                            */ 0x90,
-  /* 00000116 nop                            */ 0x90,
-  /* 00000117 nop                            */ 0x90,
-  /* 00000118 nop                            */ 0x90,
-  /* 00000119 nop                            */ 0x90,
-  /* 0000011A nop                            */ 0x90,
-  /* 0000011B nop                            */ 0x90,
-  /* 0000011C nop                            */ 0x90,
-  /* 0000011D nop                            */ 0x90,
-  /* 0000011E nop                            */ 0x90,
-  /* 0000011F nop                            */ 0x90,
-  /* 00000120 nop                            */ 0x90,
-  /* 00000121 nop                            */ 0x90,
-  /* 00000122 nop                            */ 0x90,
-  /* 00000123 nop                            */ 0x90,
-  /* 00000124 nop                            */ 0x90,
-  /* 00000125 nop                            */ 0x90,
-  /* 00000126 nop                            */ 0x90,
-  /* 00000127 nop                            */ 0x90,
-  /* 00000128 nop                            */ 0x90,
-  /* 00000129 nop                            */ 0x90,
-  /* 0000012A nop                            */ 0x90,
-  /* 0000012B nop                            */ 0x90,
-  /* 0000012C nop                            */ 0x90,
-  /* 0000012D nop                            */ 0x90,
-  /* 0000012E nop                            */ 0x90,
-  /* 0000012F nop                            */ 0x90,
-  /* 00000130 nop                            */ 0x90,
-  /* 00000131 nop                            */ 0x90,
-  /* 00000132 nop                            */ 0x90,
-  /* 00000133 nop                            */ 0x90,
-  /* 00000134 nop                            */ 0x90,
-  /* 00000135 nop                            */ 0x90,
-  /* 00000136 nop                            */ 0x90,
-  /* 00000137 nop                            */ 0x90,
-  /* 00000138 nop                            */ 0x90,
-  /* 00000139 nop                            */ 0x90,
-  /* 0000013A nop                            */ 0x90,
-  /* 0000013B nop                            */ 0x90,
-  /* 0000013C nop                            */ 0x90,
-  /* 0000013D nop                            */ 0x90,
-  /* 0000013E nop                            */ 0x90,
-  /* 0000013F nop                            */ 0x90,
-  /* 00000140 nop                            */ 0x90,
-  /* 00000141 nop                            */ 0x90,
-  /* 00000142 nop                            */ 0x90,
-  /* 00000143 nop                            */ 0x90,
-  /* 00000144 nop                            */ 0x90,
-  /* 00000145 nop                            */ 0x90,
-  /* 00000146 nop                            */ 0x90,
-  /* 00000147 nop                            */ 0x90,
-  /* 00000148 nop                            */ 0x90,
-  /* 00000149 nop                            */ 0x90,
-  /* 0000014A nop                            */ 0x90,
-  /* 0000014B nop                            */ 0x90,
-  /* 0000014C nop                            */ 0x90,
-  /* 0000014D nop                            */ 0x90,
-  /* 0000014E nop                            */ 0x90,
-  /* 0000014F nop                            */ 0x90,
-  /* 00000150 nop                            */ 0x90,
-  /* 00000151 nop                            */ 0x90,
-  /* 00000152 nop                            */ 0x90,
-  /* 00000153 nop                            */ 0x90,
-  /* 00000154 nop                            */ 0x90,
-  /* 00000155 nop                            */ 0x90,
-  /* 00000156 nop                            */ 0x90,
-  /* 00000157 nop                            */ 0x90,
-  /* 00000158 nop                            */ 0x90,
-  /* 00000159 nop                            */ 0x90,
-  /* 0000015A nop                            */ 0x90,
-  /* 0000015B nop                            */ 0x90,
-  /* 0000015C nop                            */ 0x90,
-  /* 0000015D nop                            */ 0x90,
-  /* 0000015E nop                            */ 0x90,
-  /* 0000015F nop                            */ 0x90,
-  /* 00000160 nop                            */ 0x90,
-  /* 00000161 nop                            */ 0x90,
-  /* 00000162 nop                            */ 0x90,
-  /* 00000163 nop                            */ 0x90,
-  /* 00000164 nop                            */ 0x90,
-  /* 00000165 nop                            */ 0x90,
-  /* 00000166 nop                            */ 0x90,
-  /* 00000167 nop                            */ 0x90,
-  /* 00000168 nop                            */ 0x90,
-  /* 00000169 nop                            */ 0x90,
-  /* 0000016A nop                            */ 0x90,
-  /* 0000016B nop                            */ 0x90,
-  /* 0000016C nop                            */ 0x90,
-  /* 0000016D nop                            */ 0x90,
-  /* 0000016E nop                            */ 0x90,
-  /* 0000016F nop                            */ 0x90,
-  /* 00000170 nop                            */ 0x90,
-  /* 00000171 nop                            */ 0x90,
-  /* 00000172 nop                            */ 0x90,
-  /* 00000173 nop                            */ 0x90,
-  /* 00000174 nop                            */ 0x90,
-  /* 00000175 nop                            */ 0x90,
-  /* 00000176 nop                            */ 0x90,
-  /* 00000177 nop                            */ 0x90,
-  /* 00000178 nop                            */ 0x90,
-  /* 00000179 nop                            */ 0x90,
-  /* 0000017A nop                            */ 0x90,
-  /* 0000017B nop                            */ 0x90,
-  /* 0000017C nop                            */ 0x90,
-  /* 0000017D nop                            */ 0x90,
-  /* 0000017E nop                            */ 0x90,
-  /* 0000017F nop                            */ 0x90,
-  /* 00000180 nop                            */ 0x90,
-  /* 00000181 nop                            */ 0x90,
-  /* 00000182 nop                            */ 0x90,
-  /* 00000183 nop                            */ 0x90,
-  /* 00000184 nop                            */ 0x90,
-  /* 00000185 nop                            */ 0x90,
-  /* 00000186 nop                            */ 0x90,
-  /* 00000187 nop                            */ 0x90,
-  /* 00000188 nop                            */ 0x90,
-  /* 00000189 nop                            */ 0x90,
-  /* 0000018A nop                            */ 0x90,
-  /* 0000018B nop                            */ 0x90,
-  /* 0000018C nop                            */ 0x90,
-  /* 0000018D nop                            */ 0x90,
-  /* 0000018E nop                            */ 0x90,
-  /* 0000018F nop                            */ 0x90,
-  /* 00000190 nop                            */ 0x90,
-  /* 00000191 nop                            */ 0x90,
-  /* 00000192 nop                            */ 0x90,
-  /* 00000193 nop                            */ 0x90,
-  /* 00000194 nop                            */ 0x90,
-  /* 00000195 nop                            */ 0x90,
-  /* 00000196 nop                            */ 0x90,
-  /* 00000197 nop                            */ 0x90,
-  /* 00000198 nop                            */ 0x90,
-  /* 00000199 nop                            */ 0x90,
-  /* 0000019A nop                            */ 0x90,
-  /* 0000019B nop                            */ 0x90,
-  /* 0000019C nop                            */ 0x90,
-  /* 0000019D nop                            */ 0x90,
-  /* 0000019E nop                            */ 0x90,
-  /* 0000019F nop                            */ 0x90,
-  /* 000001A0 nop                            */ 0x90,
-  /* 000001A1 nop                            */ 0x90,
-  /* 000001A2 nop                            */ 0x90,
-  /* 000001A3 nop                            */ 0x90,
-  /* 000001A4 nop                            */ 0x90,
-  /* 000001A5 nop                            */ 0x90,
-  /* 000001A6 nop                            */ 0x90,
-  /* 000001A7 nop                            */ 0x90,
-  /* 000001A8 nop                            */ 0x90,
-  /* 000001A9 nop                            */ 0x90,
-  /* 000001AA nop                            */ 0x90,
-  /* 000001AB nop                            */ 0x90,
-  /* 000001AC nop                            */ 0x90,
-  /* 000001AD nop                            */ 0x90,
-  /* 000001AE nop                            */ 0x90,
-  /* 000001AF nop                            */ 0x90,
-  /* 000001B0 nop                            */ 0x90,
-  /* 000001B1 nop                            */ 0x90,
-  /* 000001B2 nop                            */ 0x90,
-  /* 000001B3 nop                            */ 0x90,
-  /* 000001B4 nop                            */ 0x90,
-  /* 000001B5 nop                            */ 0x90,
-  /* 000001B6 nop                            */ 0x90,
-  /* 000001B7 nop                            */ 0x90,
-  /* 000001B8 nop                            */ 0x90,
-  /* 000001B9 nop                            */ 0x90,
-  /* 000001BA nop                            */ 0x90,
-  /* 000001BB nop                            */ 0x90,
-  /* 000001BC nop                            */ 0x90,
-  /* 000001BD nop                            */ 0x90,
-  /* 000001BE nop                            */ 0x90,
-  /* 000001BF nop                            */ 0x90,
-  /* 000001C0 nop                            */ 0x90,
-  /* 000001C1 nop                            */ 0x90,
-  /* 000001C2 nop                            */ 0x90,
-  /* 000001C3 nop                            */ 0x90,
-  /* 000001C4 nop                            */ 0x90,
-  /* 000001C5 nop                            */ 0x90,
-  /* 000001C6 nop                            */ 0x90,
-  /* 000001C7 nop                            */ 0x90,
-  /* 000001C8 nop                            */ 0x90,
-  /* 000001C9 nop                            */ 0x90,
-  /* 000001CA nop                            */ 0x90,
-  /* 000001CB nop                            */ 0x90,
-  /* 000001CC nop                            */ 0x90,
-  /* 000001CD nop                            */ 0x90,
-  /* 000001CE nop                            */ 0x90,
-  /* 000001CF nop                            */ 0x90,
-  /* 000001D0 nop                            */ 0x90,
-  /* 000001D1 nop                            */ 0x90,
-  /* 000001D2 nop                            */ 0x90,
-  /* 000001D3 nop                            */ 0x90,
-  /* 000001D4 nop                            */ 0x90,
-  /* 000001D5 nop                            */ 0x90,
-  /* 000001D6 nop                            */ 0x90,
-  /* 000001D7 nop                            */ 0x90,
-  /* 000001D8 nop                            */ 0x90,
-  /* 000001D9 nop                            */ 0x90,
-  /* 000001DA nop                            */ 0x90,
-  /* 000001DB nop                            */ 0x90,
-  /* 000001DC nop                            */ 0x90,
-  /* 000001DD nop                            */ 0x90,
-  /* 000001DE nop                            */ 0x90,
-  /* 000001DF nop                            */ 0x90,
-  /* 000001E0 nop                            */ 0x90,
-  /* 000001E1 nop                            */ 0x90,
-  /* 000001E2 nop                            */ 0x90,
-  /* 000001E3 nop                            */ 0x90,
-  /* 000001E4 nop                            */ 0x90,
-  /* 000001E5 nop                            */ 0x90,
-  /* 000001E6 nop                            */ 0x90,
-  /* 000001E7 nop                            */ 0x90,
-  /* 000001E8 nop                            */ 0x90,
-  /* 000001E9 nop                            */ 0x90,
-  /* 000001EA nop                            */ 0x90,
-  /* 000001EB nop                            */ 0x90,
-  /* 000001EC nop                            */ 0x90,
-  /* 000001ED nop                            */ 0x90,
-  /* 000001EE nop                            */ 0x90,
-  /* 000001EF nop                            */ 0x90,
-  /* 000001F0 nop                            */ 0x90,
-  /* 000001F1 nop                            */ 0x90,
-  /* 000001F2 nop                            */ 0x90,
-  /* 000001F3 nop                            */ 0x90,
-  /* 000001F4 nop                            */ 0x90,
-  /* 000001F5 nop                            */ 0x90,
-  /* 000001F6 nop                            */ 0x90,
-  /* 000001F7 nop                            */ 0x90,
-  /* 000001F8 nop                            */ 0x90,
-  /* 000001F9 nop                            */ 0x90,
-  /* 000001FA nop                            */ 0x90,
-  /* 000001FB nop                            */ 0x90,
-  /* 000001FC nop                            */ 0x90,
-  /* 000001FD nop                            */ 0x90,
-  /* 000001FE nop                            */ 0x90,
-  /* 000001FF nop                            */ 0x90,
-  /* 00000200 cmp ax,0x4f00                  */ 0x3D,0x00,  0x4F,
-  /* 00000203 jz 0x22d                       */ 0x74,0x28,
-  /* 00000205 cmp ax,0x4f01                  */ 0x3D,0x01,  0x4F,
-  /* 00000208 jz 0x245                       */ 0x74,0x3B,
-  /* 0000020A cmp ax,0x4f02                  */ 0x3D,0x02,  0x4F,
-  /* 0000020D jz 0x269                       */ 0x74,0x5A,
-  /* 0000020F cmp ax,0x4f03                  */ 0x3D,0x03,  0x4F,
-  /* 00000212 jz word 0x331                  */ 0x0F,0x84,  0x1B,0x01,
-  /* 00000216 cmp ax,0x4f10                  */ 0x3D,0x10,  0x4F,
-  /* 00000219 jz word 0x336                  */ 0x0F,0x84,  0x19,0x01,
-  /* 0000021D cmp ax,0x4f15                  */ 0x3D,0x15,  0x4F,
-  /* 00000220 jz word 0x338                  */ 0x0F,0x84,  0x14,0x01,
-  /* 00000224 cmp ah,0x0                     */ 0x80,0xFC,  0x00,
-  /* 00000227 jz word 0x33a                  */ 0x0F,0x84,  0x0F,0x01,
-  /* 0000022B jmp short 0x22b                */ 0xEB,0xFE,
-  /* 0000022D push es                        */ 0x06,
-  /* 0000022E push di                        */ 0x57,
-  /* 0000022F push ds                        */ 0x1E,
-  /* 00000230 push si                        */ 0x56,
-  /* 00000231 push cx                        */ 0x51,
-  /* 00000232 push cs                        */ 0x0E,
-  /* 00000233 pop ds                         */ 0x1F,
-  /* 00000234 mov si,0x0                     */ 0xBE,0x00,  0x00,
-  /* 00000237 mov cx,0x100                   */ 0xB9,0x00,  0x01,
-  /* 0000023A cld                            */ 0xFC,
-  /* 0000023B rep movsb                      */ 0xF3,0xA4,
-  /* 0000023D pop cx                         */ 0x59,
-  /* 0000023E pop si                         */ 0x5E,
-  /* 0000023F pop ds                         */ 0x1F,
-  /* 00000240 pop di                         */ 0x5F,
-  /* 00000241 pop es                         */ 0x07,
-  /* 00000242 jmp word 0x34c                 */ 0xE9,0x07,  0x01,
-  /* 00000245 push es                        */ 0x06,
-  /* 00000246 push di                        */ 0x57,
-  /* 00000247 push ds                        */ 0x1E,
-  /* 00000248 push si                        */ 0x56,
-  /* 00000249 push cx                        */ 0x51,
-  /* 0000024A and cx,0xbfff                  */ 0x81,0xE1,  0xFF,0xBF,
-  /* 0000024E cmp cx,0xf1                    */ 0x81,0xF9,  0xF1,0x00,
-  /* 00000252 jz 0x256                       */ 0x74,0x02,
-  /* 00000254 jmp short 0x22b                */ 0xEB,0xD5,
-  /* 00000256 push cs                        */ 0x0E,
-  /* 00000257 pop ds                         */ 0x1F,
-  /* 00000258 mov si,0x100                   */ 0xBE,0x00,  0x01,
-  /* 0000025B mov cx,0x100                   */ 0xB9,0x00,  0x01,
-  /* 0000025E cld                            */ 0xFC,
-  /* 0000025F rep movsb                      */ 0xF3,0xA4,
-  /* 00000261 pop cx                         */ 0x59,
-  /* 00000262 pop si                         */ 0x5E,
-  /* 00000263 pop ds                         */ 0x1F,
-  /* 00000264 pop di                         */ 0x5F,
-  /* 00000265 pop es                         */ 0x07,
-  /* 00000266 jmp word 0x34c                 */ 0xE9,0xE3,  0x00,
-  /* 00000269 push dx                        */ 0x52,
-  /* 0000026A push ax                        */ 0x50,
-  /* 0000026B cmp bx,0x40f1                  */ 0x81,0xFB,  0xF1,0x40,
-  /* 0000026F jz 0x273                       */ 0x74,0x02,
-  /* 00000271 jmp short 0x22b                */ 0xEB,0xB8,
-  /* 00000273 mov dx,0x3c0                   */ 0xBA,0xC0,  0x03,
-  /* 00000276 mov al,0x20                    */ 0xB0,0x20,
-  /* 00000278 out dx,al                      */ 0xEE,
-  /* 00000279 push dx                        */ 0x52,
-  /* 0000027A push ax                        */ 0x50,
-  /* 0000027B mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 0000027E mov ax,0x4                     */ 0xB8,0x04,  0x00,
-  /* 00000281 out dx,ax                      */ 0xEF,
-  /* 00000282 mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 00000285 mov ax,0x0                     */ 0xB8,0x00,  0x00,
-  /* 00000288 out dx,ax                      */ 0xEF,
-  /* 00000289 pop ax                         */ 0x58,
-  /* 0000028A pop dx                         */ 0x5A,
-  /* 0000028B push dx                        */ 0x52,
-  /* 0000028C push ax                        */ 0x50,
-  /* 0000028D mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 00000290 mov ax,0x5                     */ 0xB8,0x05,  0x00,
-  /* 00000293 out dx,ax                      */ 0xEF,
-  /* 00000294 mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 00000297 mov ax,0x0                     */ 0xB8,0x00,  0x00,
-  /* 0000029A out dx,ax                      */ 0xEF,
-  /* 0000029B pop ax                         */ 0x58,
-  /* 0000029C pop dx                         */ 0x5A,
-  /* 0000029D push dx                        */ 0x52,
-  /* 0000029E push ax                        */ 0x50,
-  /* 0000029F mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 000002A2 mov ax,0x8                     */ 0xB8,0x08,  0x00,
-  /* 000002A5 out dx,ax                      */ 0xEF,
-  /* 000002A6 mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 000002A9 mov ax,0x0                     */ 0xB8,0x00,  0x00,
-  /* 000002AC out dx,ax                      */ 0xEF,
-  /* 000002AD pop ax                         */ 0x58,
-  /* 000002AE pop dx                         */ 0x5A,
-  /* 000002AF push dx                        */ 0x52,
-  /* 000002B0 push ax                        */ 0x50,
-  /* 000002B1 mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 000002B4 mov ax,0x9                     */ 0xB8,0x09,  0x00,
-  /* 000002B7 out dx,ax                      */ 0xEF,
-  /* 000002B8 mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 000002BB mov ax,0x0                     */ 0xB8,0x00,  0x00,
-  /* 000002BE out dx,ax                      */ 0xEF,
-  /* 000002BF pop ax                         */ 0x58,
-  /* 000002C0 pop dx                         */ 0x5A,
-  /* 000002C1 push dx                        */ 0x52,
-  /* 000002C2 push ax                        */ 0x50,
-  /* 000002C3 mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 000002C6 mov ax,0x3                     */ 0xB8,0x03,  0x00,
-  /* 000002C9 out dx,ax                      */ 0xEF,
-  /* 000002CA mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 000002CD mov ax,0x20                    */ 0xB8,0x20,  0x00,
-  /* 000002D0 out dx,ax                      */ 0xEF,
-  /* 000002D1 pop ax                         */ 0x58,
-  /* 000002D2 pop dx                         */ 0x5A,
-  /* 000002D3 push dx                        */ 0x52,
-  /* 000002D4 push ax                        */ 0x50,
-  /* 000002D5 mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 000002D8 mov ax,0x1                     */ 0xB8,0x01,  0x00,
-  /* 000002DB out dx,ax                      */ 0xEF,
-  /* 000002DC mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 000002DF mov ax,0x400                   */ 0xB8,0x00,  0x04,
-  /* 000002E2 out dx,ax                      */ 0xEF,
-  /* 000002E3 pop ax                         */ 0x58,
-  /* 000002E4 pop dx                         */ 0x5A,
-  /* 000002E5 push dx                        */ 0x52,
-  /* 000002E6 push ax                        */ 0x50,
-  /* 000002E7 mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 000002EA mov ax,0x6                     */ 0xB8,0x06,  0x00,
-  /* 000002ED out dx,ax                      */ 0xEF,
-  /* 000002EE mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 000002F1 mov ax,0x400                   */ 0xB8,0x00,  0x04,
-  /* 000002F4 out dx,ax                      */ 0xEF,
-  /* 000002F5 pop ax                         */ 0x58,
-  /* 000002F6 pop dx                         */ 0x5A,
-  /* 000002F7 push dx                        */ 0x52,
-  /* 000002F8 push ax                        */ 0x50,
-  /* 000002F9 mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 000002FC mov ax,0x2                     */ 0xB8,0x02,  0x00,
-  /* 000002FF out dx,ax                      */ 0xEF,
-  /* 00000300 mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 00000303 mov ax,0x300                   */ 0xB8,0x00,  0x03,
-  /* 00000306 out dx,ax                      */ 0xEF,
-  /* 00000307 pop ax                         */ 0x58,
-  /* 00000308 pop dx                         */ 0x5A,
-  /* 00000309 push dx                        */ 0x52,
-  /* 0000030A push ax                        */ 0x50,
-  /* 0000030B mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 0000030E mov ax,0x7                     */ 0xB8,0x07,  0x00,
-  /* 00000311 out dx,ax                      */ 0xEF,
-  /* 00000312 mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 00000315 mov ax,0x300                   */ 0xB8,0x00,  0x03,
-  /* 00000318 out dx,ax                      */ 0xEF,
-  /* 00000319 pop ax                         */ 0x58,
-  /* 0000031A pop dx                         */ 0x5A,
-  /* 0000031B push dx                        */ 0x52,
-  /* 0000031C push ax                        */ 0x50,
-  /* 0000031D mov dx,0x1ce                   */ 0xBA,0xCE,  0x01,
-  /* 00000320 mov ax,0x4                     */ 0xB8,0x04,  0x00,
-  /* 00000323 out dx,ax                      */ 0xEF,
-  /* 00000324 mov dx,0x1d0                   */ 0xBA,0xD0,  0x01,
-  /* 00000327 mov ax,0x41                    */ 0xB8,0x41,  0x00,
-  /* 0000032A out dx,ax                      */ 0xEF,
-  /* 0000032B pop ax                         */ 0x58,
-  /* 0000032C pop dx                         */ 0x5A,
-  /* 0000032D pop ax                         */ 0x58,
-  /* 0000032E pop dx                         */ 0x5A,
-  /* 0000032F jmp short 0x34c                */ 0xEB,0x1B,
-  /* 00000331 mov bx,0x40f1                  */ 0xBB,0xF1,  0x40,
-  /* 00000334 jmp short 0x34c                */ 0xEB,0x16,
-  /* 00000336 jmp short 0x350                */ 0xEB,0x18,
-  /* 00000338 jmp short 0x350                */ 0xEB,0x16,
-  /* 0000033A cmp al,0x3                     */ 0x3C,0x03,
-  /* 0000033C jz 0x345                       */ 0x74,0x07,
-  /* 0000033E cmp al,0x12                    */ 0x3C,0x12,
-  /* 00000340 jz 0x349                       */ 0x74,0x07,
-  /* 00000342 jmp word 0x22b                 */ 0xE9,0xE6,  0xFE,
-  /* 00000345 mov al,0x30                    */ 0xB0,0x30,
-  /* 00000347 jmp short 0x34b                */ 0xEB,0x02,
-  /* 00000349 mov al,0x20                    */ 0xB0,0x20,
-  /* 0000034B iretw                          */ 0xCF,
-  /* 0000034C mov ax,0x4f                    */ 0xB8,0x4F,  0x00,
-  /* 0000034F iretw                          */ 0xCF,
-  /* 00000350 mov ax,0x14f                   */ 0xB8,0x4F,  0x01,
-  /* 00000353 iretw                          */ 0xCF,
+STATIC CONST UINT8 mVbeShim[] = {
+  /* 00000000 nop                            */  0x90,
+  /* 00000001 nop                            */  0x90,
+  /* 00000002 nop                            */  0x90,
+  /* 00000003 nop                            */  0x90,
+  /* 00000004 nop                            */  0x90,
+  /* 00000005 nop                            */  0x90,
+  /* 00000006 nop                            */  0x90,
+  /* 00000007 nop                            */  0x90,
+  /* 00000008 nop                            */  0x90,
+  /* 00000009 nop                            */  0x90,
+  /* 0000000A nop                            */  0x90,
+  /* 0000000B nop                            */  0x90,
+  /* 0000000C nop                            */  0x90,
+  /* 0000000D nop                            */  0x90,
+  /* 0000000E nop                            */  0x90,
+  /* 0000000F nop                            */  0x90,
+  /* 00000010 nop                            */  0x90,
+  /* 00000011 nop                            */  0x90,
+  /* 00000012 nop                            */  0x90,
+  /* 00000013 nop                            */  0x90,
+  /* 00000014 nop                            */  0x90,
+  /* 00000015 nop                            */  0x90,
+  /* 00000016 nop                            */  0x90,
+  /* 00000017 nop                            */  0x90,
+  /* 00000018 nop                            */  0x90,
+  /* 00000019 nop                            */  0x90,
+  /* 0000001A nop                            */  0x90,
+  /* 0000001B nop                            */  0x90,
+  /* 0000001C nop                            */  0x90,
+  /* 0000001D nop                            */  0x90,
+  /* 0000001E nop                            */  0x90,
+  /* 0000001F nop                            */  0x90,
+  /* 00000020 nop                            */  0x90,
+  /* 00000021 nop                            */  0x90,
+  /* 00000022 nop                            */  0x90,
+  /* 00000023 nop                            */  0x90,
+  /* 00000024 nop                            */  0x90,
+  /* 00000025 nop                            */  0x90,
+  /* 00000026 nop                            */  0x90,
+  /* 00000027 nop                            */  0x90,
+  /* 00000028 nop                            */  0x90,
+  /* 00000029 nop                            */  0x90,
+  /* 0000002A nop                            */  0x90,
+  /* 0000002B nop                            */  0x90,
+  /* 0000002C nop                            */  0x90,
+  /* 0000002D nop                            */  0x90,
+  /* 0000002E nop                            */  0x90,
+  /* 0000002F nop                            */  0x90,
+  /* 00000030 nop                            */  0x90,
+  /* 00000031 nop                            */  0x90,
+  /* 00000032 nop                            */  0x90,
+  /* 00000033 nop                            */  0x90,
+  /* 00000034 nop                            */  0x90,
+  /* 00000035 nop                            */  0x90,
+  /* 00000036 nop                            */  0x90,
+  /* 00000037 nop                            */  0x90,
+  /* 00000038 nop                            */  0x90,
+  /* 00000039 nop                            */  0x90,
+  /* 0000003A nop                            */  0x90,
+  /* 0000003B nop                            */  0x90,
+  /* 0000003C nop                            */  0x90,
+  /* 0000003D nop                            */  0x90,
+  /* 0000003E nop                            */  0x90,
+  /* 0000003F nop                            */  0x90,
+  /* 00000040 nop                            */  0x90,
+  /* 00000041 nop                            */  0x90,
+  /* 00000042 nop                            */  0x90,
+  /* 00000043 nop                            */  0x90,
+  /* 00000044 nop                            */  0x90,
+  /* 00000045 nop                            */  0x90,
+  /* 00000046 nop                            */  0x90,
+  /* 00000047 nop                            */  0x90,
+  /* 00000048 nop                            */  0x90,
+  /* 00000049 nop                            */  0x90,
+  /* 0000004A nop                            */  0x90,
+  /* 0000004B nop                            */  0x90,
+  /* 0000004C nop                            */  0x90,
+  /* 0000004D nop                            */  0x90,
+  /* 0000004E nop                            */  0x90,
+  /* 0000004F nop                            */  0x90,
+  /* 00000050 nop                            */  0x90,
+  /* 00000051 nop                            */  0x90,
+  /* 00000052 nop                            */  0x90,
+  /* 00000053 nop                            */  0x90,
+  /* 00000054 nop                            */  0x90,
+  /* 00000055 nop                            */  0x90,
+  /* 00000056 nop                            */  0x90,
+  /* 00000057 nop                            */  0x90,
+  /* 00000058 nop                            */  0x90,
+  /* 00000059 nop                            */  0x90,
+  /* 0000005A nop                            */  0x90,
+  /* 0000005B nop                            */  0x90,
+  /* 0000005C nop                            */  0x90,
+  /* 0000005D nop                            */  0x90,
+  /* 0000005E nop                            */  0x90,
+  /* 0000005F nop                            */  0x90,
+  /* 00000060 nop                            */  0x90,
+  /* 00000061 nop                            */  0x90,
+  /* 00000062 nop                            */  0x90,
+  /* 00000063 nop                            */  0x90,
+  /* 00000064 nop                            */  0x90,
+  /* 00000065 nop                            */  0x90,
+  /* 00000066 nop                            */  0x90,
+  /* 00000067 nop                            */  0x90,
+  /* 00000068 nop                            */  0x90,
+  /* 00000069 nop                            */  0x90,
+  /* 0000006A nop                            */  0x90,
+  /* 0000006B nop                            */  0x90,
+  /* 0000006C nop                            */  0x90,
+  /* 0000006D nop                            */  0x90,
+  /* 0000006E nop                            */  0x90,
+  /* 0000006F nop                            */  0x90,
+  /* 00000070 nop                            */  0x90,
+  /* 00000071 nop                            */  0x90,
+  /* 00000072 nop                            */  0x90,
+  /* 00000073 nop                            */  0x90,
+  /* 00000074 nop                            */  0x90,
+  /* 00000075 nop                            */  0x90,
+  /* 00000076 nop                            */  0x90,
+  /* 00000077 nop                            */  0x90,
+  /* 00000078 nop                            */  0x90,
+  /* 00000079 nop                            */  0x90,
+  /* 0000007A nop                            */  0x90,
+  /* 0000007B nop                            */  0x90,
+  /* 0000007C nop                            */  0x90,
+  /* 0000007D nop                            */  0x90,
+  /* 0000007E nop                            */  0x90,
+  /* 0000007F nop                            */  0x90,
+  /* 00000080 nop                            */  0x90,
+  /* 00000081 nop                            */  0x90,
+  /* 00000082 nop                            */  0x90,
+  /* 00000083 nop                            */  0x90,
+  /* 00000084 nop                            */  0x90,
+  /* 00000085 nop                            */  0x90,
+  /* 00000086 nop                            */  0x90,
+  /* 00000087 nop                            */  0x90,
+  /* 00000088 nop                            */  0x90,
+  /* 00000089 nop                            */  0x90,
+  /* 0000008A nop                            */  0x90,
+  /* 0000008B nop                            */  0x90,
+  /* 0000008C nop                            */  0x90,
+  /* 0000008D nop                            */  0x90,
+  /* 0000008E nop                            */  0x90,
+  /* 0000008F nop                            */  0x90,
+  /* 00000090 nop                            */  0x90,
+  /* 00000091 nop                            */  0x90,
+  /* 00000092 nop                            */  0x90,
+  /* 00000093 nop                            */  0x90,
+  /* 00000094 nop                            */  0x90,
+  /* 00000095 nop                            */  0x90,
+  /* 00000096 nop                            */  0x90,
+  /* 00000097 nop                            */  0x90,
+  /* 00000098 nop                            */  0x90,
+  /* 00000099 nop                            */  0x90,
+  /* 0000009A nop                            */  0x90,
+  /* 0000009B nop                            */  0x90,
+  /* 0000009C nop                            */  0x90,
+  /* 0000009D nop                            */  0x90,
+  /* 0000009E nop                            */  0x90,
+  /* 0000009F nop                            */  0x90,
+  /* 000000A0 nop                            */  0x90,
+  /* 000000A1 nop                            */  0x90,
+  /* 000000A2 nop                            */  0x90,
+  /* 000000A3 nop                            */  0x90,
+  /* 000000A4 nop                            */  0x90,
+  /* 000000A5 nop                            */  0x90,
+  /* 000000A6 nop                            */  0x90,
+  /* 000000A7 nop                            */  0x90,
+  /* 000000A8 nop                            */  0x90,
+  /* 000000A9 nop                            */  0x90,
+  /* 000000AA nop                            */  0x90,
+  /* 000000AB nop                            */  0x90,
+  /* 000000AC nop                            */  0x90,
+  /* 000000AD nop                            */  0x90,
+  /* 000000AE nop                            */  0x90,
+  /* 000000AF nop                            */  0x90,
+  /* 000000B0 nop                            */  0x90,
+  /* 000000B1 nop                            */  0x90,
+  /* 000000B2 nop                            */  0x90,
+  /* 000000B3 nop                            */  0x90,
+  /* 000000B4 nop                            */  0x90,
+  /* 000000B5 nop                            */  0x90,
+  /* 000000B6 nop                            */  0x90,
+  /* 000000B7 nop                            */  0x90,
+  /* 000000B8 nop                            */  0x90,
+  /* 000000B9 nop                            */  0x90,
+  /* 000000BA nop                            */  0x90,
+  /* 000000BB nop                            */  0x90,
+  /* 000000BC nop                            */  0x90,
+  /* 000000BD nop                            */  0x90,
+  /* 000000BE nop                            */  0x90,
+  /* 000000BF nop                            */  0x90,
+  /* 000000C0 nop                            */  0x90,
+  /* 000000C1 nop                            */  0x90,
+  /* 000000C2 nop                            */  0x90,
+  /* 000000C3 nop                            */  0x90,
+  /* 000000C4 nop                            */  0x90,
+  /* 000000C5 nop                            */  0x90,
+  /* 000000C6 nop                            */  0x90,
+  /* 000000C7 nop                            */  0x90,
+  /* 000000C8 nop                            */  0x90,
+  /* 000000C9 nop                            */  0x90,
+  /* 000000CA nop                            */  0x90,
+  /* 000000CB nop                            */  0x90,
+  /* 000000CC nop                            */  0x90,
+  /* 000000CD nop                            */  0x90,
+  /* 000000CE nop                            */  0x90,
+  /* 000000CF nop                            */  0x90,
+  /* 000000D0 nop                            */  0x90,
+  /* 000000D1 nop                            */  0x90,
+  /* 000000D2 nop                            */  0x90,
+  /* 000000D3 nop                            */  0x90,
+  /* 000000D4 nop                            */  0x90,
+  /* 000000D5 nop                            */  0x90,
+  /* 000000D6 nop                            */  0x90,
+  /* 000000D7 nop                            */  0x90,
+  /* 000000D8 nop                            */  0x90,
+  /* 000000D9 nop                            */  0x90,
+  /* 000000DA nop                            */  0x90,
+  /* 000000DB nop                            */  0x90,
+  /* 000000DC nop                            */  0x90,
+  /* 000000DD nop                            */  0x90,
+  /* 000000DE nop                            */  0x90,
+  /* 000000DF nop                            */  0x90,
+  /* 000000E0 nop                            */  0x90,
+  /* 000000E1 nop                            */  0x90,
+  /* 000000E2 nop                            */  0x90,
+  /* 000000E3 nop                            */  0x90,
+  /* 000000E4 nop                            */  0x90,
+  /* 000000E5 nop                            */  0x90,
+  /* 000000E6 nop                            */  0x90,
+  /* 000000E7 nop                            */  0x90,
+  /* 000000E8 nop                            */  0x90,
+  /* 000000E9 nop                            */  0x90,
+  /* 000000EA nop                            */  0x90,
+  /* 000000EB nop                            */  0x90,
+  /* 000000EC nop                            */  0x90,
+  /* 000000ED nop                            */  0x90,
+  /* 000000EE nop                            */  0x90,
+  /* 000000EF nop                            */  0x90,
+  /* 000000F0 nop                            */  0x90,
+  /* 000000F1 nop                            */  0x90,
+  /* 000000F2 nop                            */  0x90,
+  /* 000000F3 nop                            */  0x90,
+  /* 000000F4 nop                            */  0x90,
+  /* 000000F5 nop                            */  0x90,
+  /* 000000F6 nop                            */  0x90,
+  /* 000000F7 nop                            */  0x90,
+  /* 000000F8 nop                            */  0x90,
+  /* 000000F9 nop                            */  0x90,
+  /* 000000FA nop                            */  0x90,
+  /* 000000FB nop                            */  0x90,
+  /* 000000FC nop                            */  0x90,
+  /* 000000FD nop                            */  0x90,
+  /* 000000FE nop                            */  0x90,
+  /* 000000FF nop                            */  0x90,
+  /* 00000100 nop                            */  0x90,
+  /* 00000101 nop                            */  0x90,
+  /* 00000102 nop                            */  0x90,
+  /* 00000103 nop                            */  0x90,
+  /* 00000104 nop                            */  0x90,
+  /* 00000105 nop                            */  0x90,
+  /* 00000106 nop                            */  0x90,
+  /* 00000107 nop                            */  0x90,
+  /* 00000108 nop                            */  0x90,
+  /* 00000109 nop                            */  0x90,
+  /* 0000010A nop                            */  0x90,
+  /* 0000010B nop                            */  0x90,
+  /* 0000010C nop                            */  0x90,
+  /* 0000010D nop                            */  0x90,
+  /* 0000010E nop                            */  0x90,
+  /* 0000010F nop                            */  0x90,
+  /* 00000110 nop                            */  0x90,
+  /* 00000111 nop                            */  0x90,
+  /* 00000112 nop                            */  0x90,
+  /* 00000113 nop                            */  0x90,
+  /* 00000114 nop                            */  0x90,
+  /* 00000115 nop                            */  0x90,
+  /* 00000116 nop                            */  0x90,
+  /* 00000117 nop                            */  0x90,
+  /* 00000118 nop                            */  0x90,
+  /* 00000119 nop                            */  0x90,
+  /* 0000011A nop                            */  0x90,
+  /* 0000011B nop                            */  0x90,
+  /* 0000011C nop                            */  0x90,
+  /* 0000011D nop                            */  0x90,
+  /* 0000011E nop                            */  0x90,
+  /* 0000011F nop                            */  0x90,
+  /* 00000120 nop                            */  0x90,
+  /* 00000121 nop                            */  0x90,
+  /* 00000122 nop                            */  0x90,
+  /* 00000123 nop                            */  0x90,
+  /* 00000124 nop                            */  0x90,
+  /* 00000125 nop                            */  0x90,
+  /* 00000126 nop                            */  0x90,
+  /* 00000127 nop                            */  0x90,
+  /* 00000128 nop                            */  0x90,
+  /* 00000129 nop                            */  0x90,
+  /* 0000012A nop                            */  0x90,
+  /* 0000012B nop                            */  0x90,
+  /* 0000012C nop                            */  0x90,
+  /* 0000012D nop                            */  0x90,
+  /* 0000012E nop                            */  0x90,
+  /* 0000012F nop                            */  0x90,
+  /* 00000130 nop                            */  0x90,
+  /* 00000131 nop                            */  0x90,
+  /* 00000132 nop                            */  0x90,
+  /* 00000133 nop                            */  0x90,
+  /* 00000134 nop                            */  0x90,
+  /* 00000135 nop                            */  0x90,
+  /* 00000136 nop                            */  0x90,
+  /* 00000137 nop                            */  0x90,
+  /* 00000138 nop                            */  0x90,
+  /* 00000139 nop                            */  0x90,
+  /* 0000013A nop                            */  0x90,
+  /* 0000013B nop                            */  0x90,
+  /* 0000013C nop                            */  0x90,
+  /* 0000013D nop                            */  0x90,
+  /* 0000013E nop                            */  0x90,
+  /* 0000013F nop                            */  0x90,
+  /* 00000140 nop                            */  0x90,
+  /* 00000141 nop                            */  0x90,
+  /* 00000142 nop                            */  0x90,
+  /* 00000143 nop                            */  0x90,
+  /* 00000144 nop                            */  0x90,
+  /* 00000145 nop                            */  0x90,
+  /* 00000146 nop                            */  0x90,
+  /* 00000147 nop                            */  0x90,
+  /* 00000148 nop                            */  0x90,
+  /* 00000149 nop                            */  0x90,
+  /* 0000014A nop                            */  0x90,
+  /* 0000014B nop                            */  0x90,
+  /* 0000014C nop                            */  0x90,
+  /* 0000014D nop                            */  0x90,
+  /* 0000014E nop                            */  0x90,
+  /* 0000014F nop                            */  0x90,
+  /* 00000150 nop                            */  0x90,
+  /* 00000151 nop                            */  0x90,
+  /* 00000152 nop                            */  0x90,
+  /* 00000153 nop                            */  0x90,
+  /* 00000154 nop                            */  0x90,
+  /* 00000155 nop                            */  0x90,
+  /* 00000156 nop                            */  0x90,
+  /* 00000157 nop                            */  0x90,
+  /* 00000158 nop                            */  0x90,
+  /* 00000159 nop                            */  0x90,
+  /* 0000015A nop                            */  0x90,
+  /* 0000015B nop                            */  0x90,
+  /* 0000015C nop                            */  0x90,
+  /* 0000015D nop                            */  0x90,
+  /* 0000015E nop                            */  0x90,
+  /* 0000015F nop                            */  0x90,
+  /* 00000160 nop                            */  0x90,
+  /* 00000161 nop                            */  0x90,
+  /* 00000162 nop                            */  0x90,
+  /* 00000163 nop                            */  0x90,
+  /* 00000164 nop                            */  0x90,
+  /* 00000165 nop                            */  0x90,
+  /* 00000166 nop                            */  0x90,
+  /* 00000167 nop                            */  0x90,
+  /* 00000168 nop                            */  0x90,
+  /* 00000169 nop                            */  0x90,
+  /* 0000016A nop                            */  0x90,
+  /* 0000016B nop                            */  0x90,
+  /* 0000016C nop                            */  0x90,
+  /* 0000016D nop                            */  0x90,
+  /* 0000016E nop                            */  0x90,
+  /* 0000016F nop                            */  0x90,
+  /* 00000170 nop                            */  0x90,
+  /* 00000171 nop                            */  0x90,
+  /* 00000172 nop                            */  0x90,
+  /* 00000173 nop                            */  0x90,
+  /* 00000174 nop                            */  0x90,
+  /* 00000175 nop                            */  0x90,
+  /* 00000176 nop                            */  0x90,
+  /* 00000177 nop                            */  0x90,
+  /* 00000178 nop                            */  0x90,
+  /* 00000179 nop                            */  0x90,
+  /* 0000017A nop                            */  0x90,
+  /* 0000017B nop                            */  0x90,
+  /* 0000017C nop                            */  0x90,
+  /* 0000017D nop                            */  0x90,
+  /* 0000017E nop                            */  0x90,
+  /* 0000017F nop                            */  0x90,
+  /* 00000180 nop                            */  0x90,
+  /* 00000181 nop                            */  0x90,
+  /* 00000182 nop                            */  0x90,
+  /* 00000183 nop                            */  0x90,
+  /* 00000184 nop                            */  0x90,
+  /* 00000185 nop                            */  0x90,
+  /* 00000186 nop                            */  0x90,
+  /* 00000187 nop                            */  0x90,
+  /* 00000188 nop                            */  0x90,
+  /* 00000189 nop                            */  0x90,
+  /* 0000018A nop                            */  0x90,
+  /* 0000018B nop                            */  0x90,
+  /* 0000018C nop                            */  0x90,
+  /* 0000018D nop                            */  0x90,
+  /* 0000018E nop                            */  0x90,
+  /* 0000018F nop                            */  0x90,
+  /* 00000190 nop                            */  0x90,
+  /* 00000191 nop                            */  0x90,
+  /* 00000192 nop                            */  0x90,
+  /* 00000193 nop                            */  0x90,
+  /* 00000194 nop                            */  0x90,
+  /* 00000195 nop                            */  0x90,
+  /* 00000196 nop                            */  0x90,
+  /* 00000197 nop                            */  0x90,
+  /* 00000198 nop                            */  0x90,
+  /* 00000199 nop                            */  0x90,
+  /* 0000019A nop                            */  0x90,
+  /* 0000019B nop                            */  0x90,
+  /* 0000019C nop                            */  0x90,
+  /* 0000019D nop                            */  0x90,
+  /* 0000019E nop                            */  0x90,
+  /* 0000019F nop                            */  0x90,
+  /* 000001A0 nop                            */  0x90,
+  /* 000001A1 nop                            */  0x90,
+  /* 000001A2 nop                            */  0x90,
+  /* 000001A3 nop                            */  0x90,
+  /* 000001A4 nop                            */  0x90,
+  /* 000001A5 nop                            */  0x90,
+  /* 000001A6 nop                            */  0x90,
+  /* 000001A7 nop                            */  0x90,
+  /* 000001A8 nop                            */  0x90,
+  /* 000001A9 nop                            */  0x90,
+  /* 000001AA nop                            */  0x90,
+  /* 000001AB nop                            */  0x90,
+  /* 000001AC nop                            */  0x90,
+  /* 000001AD nop                            */  0x90,
+  /* 000001AE nop                            */  0x90,
+  /* 000001AF nop                            */  0x90,
+  /* 000001B0 nop                            */  0x90,
+  /* 000001B1 nop                            */  0x90,
+  /* 000001B2 nop                            */  0x90,
+  /* 000001B3 nop                            */  0x90,
+  /* 000001B4 nop                            */  0x90,
+  /* 000001B5 nop                            */  0x90,
+  /* 000001B6 nop                            */  0x90,
+  /* 000001B7 nop                            */  0x90,
+  /* 000001B8 nop                            */  0x90,
+  /* 000001B9 nop                            */  0x90,
+  /* 000001BA nop                            */  0x90,
+  /* 000001BB nop                            */  0x90,
+  /* 000001BC nop                            */  0x90,
+  /* 000001BD nop                            */  0x90,
+  /* 000001BE nop                            */  0x90,
+  /* 000001BF nop                            */  0x90,
+  /* 000001C0 nop                            */  0x90,
+  /* 000001C1 nop                            */  0x90,
+  /* 000001C2 nop                            */  0x90,
+  /* 000001C3 nop                            */  0x90,
+  /* 000001C4 nop                            */  0x90,
+  /* 000001C5 nop                            */  0x90,
+  /* 000001C6 nop                            */  0x90,
+  /* 000001C7 nop                            */  0x90,
+  /* 000001C8 nop                            */  0x90,
+  /* 000001C9 nop                            */  0x90,
+  /* 000001CA nop                            */  0x90,
+  /* 000001CB nop                            */  0x90,
+  /* 000001CC nop                            */  0x90,
+  /* 000001CD nop                            */  0x90,
+  /* 000001CE nop                            */  0x90,
+  /* 000001CF nop                            */  0x90,
+  /* 000001D0 nop                            */  0x90,
+  /* 000001D1 nop                            */  0x90,
+  /* 000001D2 nop                            */  0x90,
+  /* 000001D3 nop                            */  0x90,
+  /* 000001D4 nop                            */  0x90,
+  /* 000001D5 nop                            */  0x90,
+  /* 000001D6 nop                            */  0x90,
+  /* 000001D7 nop                            */  0x90,
+  /* 000001D8 nop                            */  0x90,
+  /* 000001D9 nop                            */  0x90,
+  /* 000001DA nop                            */  0x90,
+  /* 000001DB nop                            */  0x90,
+  /* 000001DC nop                            */  0x90,
+  /* 000001DD nop                            */  0x90,
+  /* 000001DE nop                            */  0x90,
+  /* 000001DF nop                            */  0x90,
+  /* 000001E0 nop                            */  0x90,
+  /* 000001E1 nop                            */  0x90,
+  /* 000001E2 nop                            */  0x90,
+  /* 000001E3 nop                            */  0x90,
+  /* 000001E4 nop                            */  0x90,
+  /* 000001E5 nop                            */  0x90,
+  /* 000001E6 nop                            */  0x90,
+  /* 000001E7 nop                            */  0x90,
+  /* 000001E8 nop                            */  0x90,
+  /* 000001E9 nop                            */  0x90,
+  /* 000001EA nop                            */  0x90,
+  /* 000001EB nop                            */  0x90,
+  /* 000001EC nop                            */  0x90,
+  /* 000001ED nop                            */  0x90,
+  /* 000001EE nop                            */  0x90,
+  /* 000001EF nop                            */  0x90,
+  /* 000001F0 nop                            */  0x90,
+  /* 000001F1 nop                            */  0x90,
+  /* 000001F2 nop                            */  0x90,
+  /* 000001F3 nop                            */  0x90,
+  /* 000001F4 nop                            */  0x90,
+  /* 000001F5 nop                            */  0x90,
+  /* 000001F6 nop                            */  0x90,
+  /* 000001F7 nop                            */  0x90,
+  /* 000001F8 nop                            */  0x90,
+  /* 000001F9 nop                            */  0x90,
+  /* 000001FA nop                            */  0x90,
+  /* 000001FB nop                            */  0x90,
+  /* 000001FC nop                            */  0x90,
+  /* 000001FD nop                            */  0x90,
+  /* 000001FE nop                            */  0x90,
+  /* 000001FF nop                            */  0x90,
+  /* 00000200 cmp ax,0x4f00                  */  0x3D, 0x00, 0x4F,
+  /* 00000203 jz 0x22d                       */  0x74, 0x28,
+  /* 00000205 cmp ax,0x4f01                  */  0x3D, 0x01, 0x4F,
+  /* 00000208 jz 0x245                       */  0x74, 0x3B,
+  /* 0000020A cmp ax,0x4f02                  */  0x3D, 0x02, 0x4F,
+  /* 0000020D jz 0x269                       */  0x74, 0x5A,
+  /* 0000020F cmp ax,0x4f03                  */  0x3D, 0x03, 0x4F,
+  /* 00000212 jz word 0x331                  */  0x0F, 0x84, 0x1B, 0x01,
+  /* 00000216 cmp ax,0x4f10                  */  0x3D, 0x10, 0x4F,
+  /* 00000219 jz word 0x336                  */  0x0F, 0x84, 0x19, 0x01,
+  /* 0000021D cmp ax,0x4f15                  */  0x3D, 0x15, 0x4F,
+  /* 00000220 jz word 0x338                  */  0x0F, 0x84, 0x14, 0x01,
+  /* 00000224 cmp ah,0x0                     */  0x80, 0xFC, 0x00,
+  /* 00000227 jz word 0x33a                  */  0x0F, 0x84, 0x0F, 0x01,
+  /* 0000022B jmp short 0x22b                */  0xEB, 0xFE,
+  /* 0000022D push es                        */  0x06,
+  /* 0000022E push di                        */  0x57,
+  /* 0000022F push ds                        */  0x1E,
+  /* 00000230 push si                        */  0x56,
+  /* 00000231 push cx                        */  0x51,
+  /* 00000232 push cs                        */  0x0E,
+  /* 00000233 pop ds                         */  0x1F,
+  /* 00000234 mov si,0x0                     */  0xBE, 0x00, 0x00,
+  /* 00000237 mov cx,0x100                   */  0xB9, 0x00, 0x01,
+  /* 0000023A cld                            */  0xFC,
+  /* 0000023B rep movsb                      */  0xF3, 0xA4,
+  /* 0000023D pop cx                         */  0x59,
+  /* 0000023E pop si                         */  0x5E,
+  /* 0000023F pop ds                         */  0x1F,
+  /* 00000240 pop di                         */  0x5F,
+  /* 00000241 pop es                         */  0x07,
+  /* 00000242 jmp word 0x34c                 */  0xE9, 0x07, 0x01,
+  /* 00000245 push es                        */  0x06,
+  /* 00000246 push di                        */  0x57,
+  /* 00000247 push ds                        */  0x1E,
+  /* 00000248 push si                        */  0x56,
+  /* 00000249 push cx                        */  0x51,
+  /* 0000024A and cx,0xbfff                  */  0x81, 0xE1, 0xFF, 0xBF,
+  /* 0000024E cmp cx,0xf1                    */  0x81, 0xF9, 0xF1, 0x00,
+  /* 00000252 jz 0x256                       */  0x74, 0x02,
+  /* 00000254 jmp short 0x22b                */  0xEB, 0xD5,
+  /* 00000256 push cs                        */  0x0E,
+  /* 00000257 pop ds                         */  0x1F,
+  /* 00000258 mov si,0x100                   */  0xBE, 0x00, 0x01,
+  /* 0000025B mov cx,0x100                   */  0xB9, 0x00, 0x01,
+  /* 0000025E cld                            */  0xFC,
+  /* 0000025F rep movsb                      */  0xF3, 0xA4,
+  /* 00000261 pop cx                         */  0x59,
+  /* 00000262 pop si                         */  0x5E,
+  /* 00000263 pop ds                         */  0x1F,
+  /* 00000264 pop di                         */  0x5F,
+  /* 00000265 pop es                         */  0x07,
+  /* 00000266 jmp word 0x34c                 */  0xE9, 0xE3, 0x00,
+  /* 00000269 push dx                        */  0x52,
+  /* 0000026A push ax                        */  0x50,
+  /* 0000026B cmp bx,0x40f1                  */  0x81, 0xFB, 0xF1, 0x40,
+  /* 0000026F jz 0x273                       */  0x74, 0x02,
+  /* 00000271 jmp short 0x22b                */  0xEB, 0xB8,
+  /* 00000273 mov dx,0x3c0                   */  0xBA, 0xC0, 0x03,
+  /* 00000276 mov al,0x20                    */  0xB0, 0x20,
+  /* 00000278 out dx,al                      */  0xEE,
+  /* 00000279 push dx                        */  0x52,
+  /* 0000027A push ax                        */  0x50,
+  /* 0000027B mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 0000027E mov ax,0x4                     */  0xB8, 0x04, 0x00,
+  /* 00000281 out dx,ax                      */  0xEF,
+  /* 00000282 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000285 mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 00000288 out dx,ax                      */  0xEF,
+  /* 00000289 pop ax                         */  0x58,
+  /* 0000028A pop dx                         */  0x5A,
+  /* 0000028B push dx                        */  0x52,
+  /* 0000028C push ax                        */  0x50,
+  /* 0000028D mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 00000290 mov ax,0x5                     */  0xB8, 0x05, 0x00,
+  /* 00000293 out dx,ax                      */  0xEF,
+  /* 00000294 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000297 mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 0000029A out dx,ax                      */  0xEF,
+  /* 0000029B pop ax                         */  0x58,
+  /* 0000029C pop dx                         */  0x5A,
+  /* 0000029D push dx                        */  0x52,
+  /* 0000029E push ax                        */  0x50,
+  /* 0000029F mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002A2 mov ax,0x8                     */  0xB8, 0x08, 0x00,
+  /* 000002A5 out dx,ax                      */  0xEF,
+  /* 000002A6 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002A9 mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 000002AC out dx,ax                      */  0xEF,
+  /* 000002AD pop ax                         */  0x58,
+  /* 000002AE pop dx                         */  0x5A,
+  /* 000002AF push dx                        */  0x52,
+  /* 000002B0 push ax                        */  0x50,
+  /* 000002B1 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002B4 mov ax,0x9                     */  0xB8, 0x09, 0x00,
+  /* 000002B7 out dx,ax                      */  0xEF,
+  /* 000002B8 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002BB mov ax,0x0                     */  0xB8, 0x00, 0x00,
+  /* 000002BE out dx,ax                      */  0xEF,
+  /* 000002BF pop ax                         */  0x58,
+  /* 000002C0 pop dx                         */  0x5A,
+  /* 000002C1 push dx                        */  0x52,
+  /* 000002C2 push ax                        */  0x50,
+  /* 000002C3 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002C6 mov ax,0x3                     */  0xB8, 0x03, 0x00,
+  /* 000002C9 out dx,ax                      */  0xEF,
+  /* 000002CA mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002CD mov ax,0x20                    */  0xB8, 0x20, 0x00,
+  /* 000002D0 out dx,ax                      */  0xEF,
+  /* 000002D1 pop ax                         */  0x58,
+  /* 000002D2 pop dx                         */  0x5A,
+  /* 000002D3 push dx                        */  0x52,
+  /* 000002D4 push ax                        */  0x50,
+  /* 000002D5 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002D8 mov ax,0x1                     */  0xB8, 0x01, 0x00,
+  /* 000002DB out dx,ax                      */  0xEF,
+  /* 000002DC mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002DF mov ax,0x400                   */  0xB8, 0x00, 0x04,
+  /* 000002E2 out dx,ax                      */  0xEF,
+  /* 000002E3 pop ax                         */  0x58,
+  /* 000002E4 pop dx                         */  0x5A,
+  /* 000002E5 push dx                        */  0x52,
+  /* 000002E6 push ax                        */  0x50,
+  /* 000002E7 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002EA mov ax,0x6                     */  0xB8, 0x06, 0x00,
+  /* 000002ED out dx,ax                      */  0xEF,
+  /* 000002EE mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 000002F1 mov ax,0x400                   */  0xB8, 0x00, 0x04,
+  /* 000002F4 out dx,ax                      */  0xEF,
+  /* 000002F5 pop ax                         */  0x58,
+  /* 000002F6 pop dx                         */  0x5A,
+  /* 000002F7 push dx                        */  0x52,
+  /* 000002F8 push ax                        */  0x50,
+  /* 000002F9 mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 000002FC mov ax,0x2                     */  0xB8, 0x02, 0x00,
+  /* 000002FF out dx,ax                      */  0xEF,
+  /* 00000300 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000303 mov ax,0x300                   */  0xB8, 0x00, 0x03,
+  /* 00000306 out dx,ax                      */  0xEF,
+  /* 00000307 pop ax                         */  0x58,
+  /* 00000308 pop dx                         */  0x5A,
+  /* 00000309 push dx                        */  0x52,
+  /* 0000030A push ax                        */  0x50,
+  /* 0000030B mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 0000030E mov ax,0x7                     */  0xB8, 0x07, 0x00,
+  /* 00000311 out dx,ax                      */  0xEF,
+  /* 00000312 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000315 mov ax,0x300                   */  0xB8, 0x00, 0x03,
+  /* 00000318 out dx,ax                      */  0xEF,
+  /* 00000319 pop ax                         */  0x58,
+  /* 0000031A pop dx                         */  0x5A,
+  /* 0000031B push dx                        */  0x52,
+  /* 0000031C push ax                        */  0x50,
+  /* 0000031D mov dx,0x1ce                   */  0xBA, 0xCE, 0x01,
+  /* 00000320 mov ax,0x4                     */  0xB8, 0x04, 0x00,
+  /* 00000323 out dx,ax                      */  0xEF,
+  /* 00000324 mov dx,0x1d0                   */  0xBA, 0xD0, 0x01,
+  /* 00000327 mov ax,0x41                    */  0xB8, 0x41, 0x00,
+  /* 0000032A out dx,ax                      */  0xEF,
+  /* 0000032B pop ax                         */  0x58,
+  /* 0000032C pop dx                         */  0x5A,
+  /* 0000032D pop ax                         */  0x58,
+  /* 0000032E pop dx                         */  0x5A,
+  /* 0000032F jmp short 0x34c                */  0xEB, 0x1B,
+  /* 00000331 mov bx,0x40f1                  */  0xBB, 0xF1, 0x40,
+  /* 00000334 jmp short 0x34c                */  0xEB, 0x16,
+  /* 00000336 jmp short 0x350                */  0xEB, 0x18,
+  /* 00000338 jmp short 0x350                */  0xEB, 0x16,
+  /* 0000033A cmp al,0x3                     */  0x3C, 0x03,
+  /* 0000033C jz 0x345                       */  0x74, 0x07,
+  /* 0000033E cmp al,0x12                    */  0x3C, 0x12,
+  /* 00000340 jz 0x349                       */  0x74, 0x07,
+  /* 00000342 jmp word 0x22b                 */  0xE9, 0xE6, 0xFE,
+  /* 00000345 mov al,0x30                    */  0xB0, 0x30,
+  /* 00000347 jmp short 0x34b                */  0xEB, 0x02,
+  /* 00000349 mov al,0x20                    */  0xB0, 0x20,
+  /* 0000034B iretw                          */  0xCF,
+  /* 0000034C mov ax,0x4f                    */  0xB8, 0x4F, 0x00,
+  /* 0000034F iretw                          */  0xCF,
+  /* 00000350 mov ax,0x14f                   */  0xB8, 0x4F, 0x01,
+  /* 00000353 iretw                          */  0xCF,
 };
 #endif
-- 
2.28.0.windows.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify
  2022-03-22  1:58 [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael Kubacki
                   ` (2 preceding siblings ...)
  2022-03-22  1:58 ` [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files Michael Kubacki
@ 2022-03-22  1:58 ` Michael Kubacki
  2022-03-22  6:35   ` Laszlo Ersek
  2022-03-22  8:46   ` [edk2-devel] " Gerd Hoffmann
  2022-03-22 16:14 ` [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael D Kinney
  4 siblings, 2 replies; 19+ messages in thread
From: Michael Kubacki @ 2022-03-22  1:58 UTC (permalink / raw)
  To: devel
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann,
	Rebecca Cran, Peter Grehan, Laszlo Ersek

From: Michael Kubacki <michael.kubacki@microsoft.com>

REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875

The following files:
  OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h
  OvmfPkg/QemuVideoDxe/VbeShim.h

Are auto generated by the following generators:
  OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.sh
  OvmfPkg/QemuVideoDxe/VbeShim.sh

Therefore, Uncrustify causes a file update to produce a very large
diff due to formatting changes.

This change does the following:
  1. Reverts the Uncrustify changes applied to the files in commit
     ac0a286f4d74.
  2. Uses a new UncrustifyCheck CI plugin configuration option to
     exclude the files from future formatting checks.

Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Rebecca Cran <rebecca@bsdio.com>
Cc: Peter Grehan <grehan@freebsd.org>
Cc: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
---
 OvmfPkg/OvmfPkg.ci.yaml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/OvmfPkg/OvmfPkg.ci.yaml b/OvmfPkg/OvmfPkg.ci.yaml
index 7459b84d8090..ff022242b018 100644
--- a/OvmfPkg/OvmfPkg.ci.yaml
+++ b/OvmfPkg/OvmfPkg.ci.yaml
@@ -97,5 +97,10 @@
         ],           # words to extend to the dictionary for this package
         "IgnoreStandardPaths": [],   # Standard Plugin defined paths that should be ignore
         "AdditionalIncludePaths": [] # Additional paths to spell check (wildcards supported)
+    },
+
+    # options defined in .pytool/Plugin/UncrustifyCheck
+    "UncrustifyCheck": {
+      "IgnoreFiles": ["VbeShim.h"]
     }
 }
-- 
2.28.0.windows.1


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files
  2022-03-22  1:58 ` [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files Michael Kubacki
@ 2022-03-22  6:34   ` Laszlo Ersek
  2022-03-22  8:45   ` [edk2-devel] " Gerd Hoffmann
  1 sibling, 0 replies; 19+ messages in thread
From: Laszlo Ersek @ 2022-03-22  6:34 UTC (permalink / raw)
  To: mikuback, devel
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann,
	Rebecca Cran, Peter Grehan

On 03/22/22 02:58, mikuback@linux.microsoft.com wrote:
> From: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875
> 
> Reverts changes automatically applied by Uncrustify in commit
> ac0a286.
> 
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Peter Grehan <grehan@freebsd.org>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> ---
>  OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h | 1811 ++++++++++----------
>  OvmfPkg/QemuVideoDxe/VbeShim.h      | 1389 ++++++++-------
>  2 files changed, 1599 insertions(+), 1601 deletions(-)

Acked-by: Laszlo Ersek <lersek@redhat.com>

Thank you Michael.
Laszlo


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify
  2022-03-22  1:58 ` [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify Michael Kubacki
@ 2022-03-22  6:35   ` Laszlo Ersek
  2022-03-22  8:46   ` [edk2-devel] " Gerd Hoffmann
  1 sibling, 0 replies; 19+ messages in thread
From: Laszlo Ersek @ 2022-03-22  6:35 UTC (permalink / raw)
  To: mikuback, devel
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Gerd Hoffmann,
	Rebecca Cran, Peter Grehan

On 03/22/22 02:58, mikuback@linux.microsoft.com wrote:
> From: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875
> 
> The following files:
>   OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h
>   OvmfPkg/QemuVideoDxe/VbeShim.h
> 
> Are auto generated by the following generators:
>   OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.sh
>   OvmfPkg/QemuVideoDxe/VbeShim.sh
> 
> Therefore, Uncrustify causes a file update to produce a very large
> diff due to formatting changes.
> 
> This change does the following:
>   1. Reverts the Uncrustify changes applied to the files in commit
>      ac0a286f4d74.
>   2. Uses a new UncrustifyCheck CI plugin configuration option to
>      exclude the files from future formatting checks.
> 
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Peter Grehan <grehan@freebsd.org>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> ---
>  OvmfPkg/OvmfPkg.ci.yaml | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/OvmfPkg/OvmfPkg.ci.yaml b/OvmfPkg/OvmfPkg.ci.yaml
> index 7459b84d8090..ff022242b018 100644
> --- a/OvmfPkg/OvmfPkg.ci.yaml
> +++ b/OvmfPkg/OvmfPkg.ci.yaml
> @@ -97,5 +97,10 @@
>          ],           # words to extend to the dictionary for this package
>          "IgnoreStandardPaths": [],   # Standard Plugin defined paths that should be ignore
>          "AdditionalIncludePaths": [] # Additional paths to spell check (wildcards supported)
> +    },
> +
> +    # options defined in .pytool/Plugin/UncrustifyCheck
> +    "UncrustifyCheck": {
> +      "IgnoreFiles": ["VbeShim.h"]
>      }
>  }
> 

Acked-by: Laszlo Ersek <lersek@redhat.com>

(Didn't expect the plugin / new option to take relative pathnames / last
components as well, but it's very handy in this case.)

Thanks
Laszlo


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files
  2022-03-22  1:58 ` [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files Michael Kubacki
  2022-03-22  6:34   ` Laszlo Ersek
@ 2022-03-22  8:45   ` Gerd Hoffmann
  1 sibling, 0 replies; 19+ messages in thread
From: Gerd Hoffmann @ 2022-03-22  8:45 UTC (permalink / raw)
  To: devel, mikuback
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran,
	Peter Grehan, Laszlo Ersek

On Mon, Mar 21, 2022 at 09:58:13PM -0400, Michael Kubacki wrote:
> From: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875
> 
> Reverts changes automatically applied by Uncrustify in commit
> ac0a286.
> 
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Peter Grehan <grehan@freebsd.org>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>

Acked-by: Gerd Hoffmann <kraxel@redhat.com>


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify
  2022-03-22  1:58 ` [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify Michael Kubacki
  2022-03-22  6:35   ` Laszlo Ersek
@ 2022-03-22  8:46   ` Gerd Hoffmann
  1 sibling, 0 replies; 19+ messages in thread
From: Gerd Hoffmann @ 2022-03-22  8:46 UTC (permalink / raw)
  To: devel, mikuback
  Cc: Ard Biesheuvel, Jiewen Yao, Jordan Justen, Rebecca Cran,
	Peter Grehan, Laszlo Ersek

On Mon, Mar 21, 2022 at 09:58:14PM -0400, Michael Kubacki wrote:
> From: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875
> 
> The following files:
>   OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h
>   OvmfPkg/QemuVideoDxe/VbeShim.h
> 
> Are auto generated by the following generators:
>   OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.sh
>   OvmfPkg/QemuVideoDxe/VbeShim.sh
> 
> Therefore, Uncrustify causes a file update to produce a very large
> diff due to formatting changes.
> 
> This change does the following:
>   1. Reverts the Uncrustify changes applied to the files in commit
>      ac0a286f4d74.
>   2. Uses a new UncrustifyCheck CI plugin configuration option to
>      exclude the files from future formatting checks.
> 
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Peter Grehan <grehan@freebsd.org>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>

Acked-by: Gerd Hoffmann <kraxel@redhat.com>


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
  2022-03-22  1:58 ` [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths Michael Kubacki
@ 2022-03-22 16:07   ` Michael D Kinney
  2022-03-22 16:12     ` Michael D Kinney
  0 siblings, 1 reply; 19+ messages in thread
From: Michael D Kinney @ 2022-03-22 16:07 UTC (permalink / raw)
  To: devel@edk2.groups.io, mikuback@linux.microsoft.com,
	Kinney, Michael D
  Cc: Gao, Liming, Sean Brogan, Bret Barkelew

Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>

Mike

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael Kubacki
> Sent: Monday, March 21, 2022 6:58 PM
> To: devel@edk2.groups.io
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
> <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
> Subject: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
> 
> From: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> Currently, UncrustifyCheck._get_git_ignored_paths() is documented to
> return a list of absolute file paths but it currently returns a list
> of relative file paths.
> 
> This change updates the function to return a list of absolute file
> paths. The result is later compared to the list of absolute file
> paths for files to run against Uncrustify.
> 
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Sean Brogan <sean.brogan@microsoft.com>
> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> ---
>  .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> index 82db7a5a438b..dc133fecc4b2 100644
> --- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> +++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> @@ -292,7 +292,11 @@ class UncrustifyCheck(ICiBuildPlugin):
>                  f"An error occurred reading git ignore settings. This will prevent Uncrustify from running against the expected
> set of files.")
> 
>          # Note: This will potentially be a large list, but at least sorted
> -        return outstream_buffer.getvalue().strip().splitlines()
> +        rel_paths = outstream_buffer.getvalue().strip().splitlines()
> +        abs_paths = []
> +        for path in rel_paths:
> +            abs_paths.append(os.path.join(self._abs_workspace_path, path))
> +        return abs_paths
> 
>      def _get_git_submodule_paths(self) -> List[str]:
>          """
> --
> 2.28.0.windows.1
> 
> 
> 
> -=-=-=-=-=-=
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#87810): https://edk2.groups.io/g/devel/message/87810
> Mute This Topic: https://groups.io/mt/89944182/1643496
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kinney@intel.com]
> -=-=-=-=-=-=
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
  2022-03-22 16:07   ` [edk2-devel] " Michael D Kinney
@ 2022-03-22 16:12     ` Michael D Kinney
  2022-04-01 16:22       ` Michael Kubacki
  0 siblings, 1 reply; 19+ messages in thread
From: Michael D Kinney @ 2022-03-22 16:12 UTC (permalink / raw)
  To: devel@edk2.groups.io, mikuback@linux.microsoft.com,
	Kinney, Michael D
  Cc: Gao, Liming, Sean Brogan, Bret Barkelew

Hi Michael,

I meant to ask.  Is there a reason you are not normalizing the 
file paths os.path.normpath() before performing the path comparison?

I am concerned that a mix of '/', '\' and '..' in YAML file may
not detect what is supposed to be a matching path.

Perhaps this is a topic that applies to IgnoreFiles feature for
all plugins and can be addressed in a separate patch.

Mike

> -----Original Message-----
> From: Kinney, Michael D <michael.d.kinney@intel.com>
> Sent: Tuesday, March 22, 2022 9:07 AM
> To: devel@edk2.groups.io; mikuback@linux.microsoft.com; Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
> Subject: RE: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
> 
> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
> 
> Mike
> 
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael Kubacki
> > Sent: Monday, March 21, 2022 6:58 PM
> > To: devel@edk2.groups.io
> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
> > <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
> > Subject: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
> >
> > From: Michael Kubacki <michael.kubacki@microsoft.com>
> >
> > Currently, UncrustifyCheck._get_git_ignored_paths() is documented to
> > return a list of absolute file paths but it currently returns a list
> > of relative file paths.
> >
> > This change updates the function to return a list of absolute file
> > paths. The result is later compared to the list of absolute file
> > paths for files to run against Uncrustify.
> >
> > Cc: Michael D Kinney <michael.d.kinney@intel.com>
> > Cc: Liming Gao <gaoliming@byosoft.com.cn>
> > Cc: Sean Brogan <sean.brogan@microsoft.com>
> > Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
> > Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> > ---
> >  .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> > index 82db7a5a438b..dc133fecc4b2 100644
> > --- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> > +++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> > @@ -292,7 +292,11 @@ class UncrustifyCheck(ICiBuildPlugin):
> >                  f"An error occurred reading git ignore settings. This will prevent Uncrustify from running against the
> expected
> > set of files.")
> >
> >          # Note: This will potentially be a large list, but at least sorted
> > -        return outstream_buffer.getvalue().strip().splitlines()
> > +        rel_paths = outstream_buffer.getvalue().strip().splitlines()
> > +        abs_paths = []
> > +        for path in rel_paths:
> > +            abs_paths.append(os.path.join(self._abs_workspace_path, path))
> > +        return abs_paths
> >
> >      def _get_git_submodule_paths(self) -> List[str]:
> >          """
> > --
> > 2.28.0.windows.1
> >
> >
> >
> > -=-=-=-=-=-=
> > Groups.io Links: You receive all messages sent to this group.
> > View/Reply Online (#87810): https://edk2.groups.io/g/devel/message/87810
> > Mute This Topic: https://groups.io/mt/89944182/1643496
> > Group Owner: devel+owner@edk2.groups.io
> > Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kinney@intel.com]
> > -=-=-=-=-=-=
> >


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
  2022-03-22  1:58 ` [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support Michael Kubacki
@ 2022-03-22 16:14   ` Michael D Kinney
  2022-04-01 16:07     ` [edk2-devel] " Michael Kubacki
  2022-04-01 17:45     ` Sean
  0 siblings, 2 replies; 19+ messages in thread
From: Michael D Kinney @ 2022-03-22 16:14 UTC (permalink / raw)
  To: mikuback@linux.microsoft.com, devel@edk2.groups.io,
	Kinney, Michael D
  Cc: Gao, Liming, Sean Brogan, Bret Barkelew

Michael,

One comment below.

Mike

> -----Original Message-----
> From: mikuback@linux.microsoft.com <mikuback@linux.microsoft.com>
> Sent: Monday, March 21, 2022 6:58 PM
> To: devel@edk2.groups.io
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
> <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
> Subject: [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
> 
> From: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880
> 
> Currently UncrustifyCheck.py provides the following exclusion
> options:
> 
> 1. Override the type of files UncrustifyCheck operates against by
> default (.c and .h files). Using the "IgnoreStandardPaths"
> configuration option.
> 
> 2. By default, UncrustifyCheck skips files in git submodules and
> ignored by git (the "SkipGitExclusions" configuration option can
> override this behavior).
> 
> The goal of UncrustifyCheck is to provide consistent formatting
> across the codebase. In some rare circumstances, maintainers might
> need to exclude a specific file (or file pattern) within their
> package. For example, a small set of auto-generated files from
> another repository.
> 
> This change adds a new configuration option that can be specified
> in a package CI YAML file to describe a list of files within the
> package that should be ignored by UncrustifyCheck.
> 
> The configuration option is called "IgnoreFiles" and it uses similar
> syntax to git ignore to ignore a list of files.
> 
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Sean Brogan <sean.brogan@microsoft.com>
> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> ---
>  .pytool/Plugin/UncrustifyCheck/Readme.md          |  7 ++++++
>  .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 24 ++++++++++++++++++++
>  2 files changed, 31 insertions(+)
> 
> diff --git a/.pytool/Plugin/UncrustifyCheck/Readme.md b/.pytool/Plugin/UncrustifyCheck/Readme.md
> index 0c46fd241a7a..efe7a573e4fa 100644
> --- a/.pytool/Plugin/UncrustifyCheck/Readme.md
> +++ b/.pytool/Plugin/UncrustifyCheck/Readme.md
> @@ -41,6 +41,7 @@ The plugin can be configured with a few optional configuration options.
>        "AdditionalIncludePaths": [], # Additional paths to check formatting (wildcards supported).
>        "AuditOnly": False,           # Don't fail the build if there are errors.  Just log them.
>        "ConfigFilePath": "",         # Custom path to an Uncrustify config file.
> +      "IgnoreFiles": [],            # A list of file patterns to ignore.
>        "IgnoreStandardPaths": [],    # Standard Plugin defined paths that should be ignored.
>        "OutputFileDiffs": True,      # Output chunks of formatting diffs in the test case log.
>                                      # This can significantly slow down the plugin on very large packages.
> @@ -67,6 +68,12 @@ the test as skipped. This allows visibility into the failures without breaking t
> 
>  When specified in the config file, this is a package relative path to the Uncrustify configuration file.
> 
> +### `IgnoreFiles`
> +
> +This option supports .gitignore file and folder matching strings including wildcards.
> +
> +The files specified by this configuration option will not be processed by Uncrustify.
> +
>  ### `IgnoreStandardPaths`
> 
>  This plugin by default will check the below standard paths. A package configuration file can specify any of these paths
> diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> index dc133fecc4b2..e8370381032f 100644
> --- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> +++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> @@ -13,11 +13,13 @@ import os
>  import pathlib
>  import shutil
>  import timeit
> +from collections.abc import Callable
>  from edk2toolext.environment import version_aggregator
>  from edk2toolext.environment.plugin_manager import PluginManager
>  from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPlugin
>  from edk2toolext.environment.plugintypes.uefi_helper_plugin import HelperFunctions
>  from edk2toolext.environment.var_dict import VarDict
> +from edk2toollib.gitignore_parser import parse_gitignore_lines
>  from edk2toollib.log.junit_report_format import JunitReportTestCase
>  from edk2toollib.uefi.edk2.path_utilities import Edk2Path
>  from edk2toollib.utility_functions import  RunCmd
> @@ -273,6 +275,15 @@ class UncrustifyCheck(ICiBuildPlugin):
>              f"-c {self._app_config_file} -F {self._app_input_file_path} --if-changed --suffix
> {UncrustifyCheck.FORMATTED_FILE_EXTENSION}", outstream=output)
>          self._app_output = output.getvalue().strip().splitlines()
> 
> +    def _get_files_ignored_in_config(self) -> Callable[[str], bool]:
> +        """"
> +        Returns a function that returns true if a given file string path is ignored in the plugin configuration file and false
> otherwise.
> +        """
> +        ignored_files = []
> +        if "IgnoreFiles" in self._package_config:
> +            ignored_files = self._package_config["IgnoreFiles"]
> +        return parse_gitignore_lines(ignored_files, os.path.join(self._abs_workspace_path, "nofile.txt"),
> self._abs_workspace_path)

What is the purpose of "nofile.txt" here?  If this a param that is optional/ignored?  If so, there
are better python methods to do that.

> +
>      def _get_git_ignored_paths(self) -> List[str]:
>          """"
>          Returns a list of file absolute path strings to all files ignored in this git repository.
> @@ -464,6 +475,19 @@ class UncrustifyCheck(ICiBuildPlugin):
>              self._abs_file_paths_to_format.extend(
>                  [str(path.resolve()) for path in pathlib.Path(self._abs_package_path).rglob(path)])
> 
> +        # Remove files ignore in the plugin configuration file
> +        plugin_ignored_files = list(filter(self._get_files_ignored_in_config(), self._abs_file_paths_to_format))
> +
> +        if plugin_ignored_files:
> +            logging.info(
> +                f"{self._package_name} file count before plugin ignore file exclusion: {len(self._abs_file_paths_to_format)}")
> +            for path in plugin_ignored_files:
> +                if path in self._abs_file_paths_to_format:
> +                    logging.info(f"  File ignored in plugin config file: {path}")
> +                    self._abs_file_paths_to_format.remove(path)
> +            logging.info(
> +                f"{self._package_name} file count after plugin ignore file exclusion: {len(self._abs_file_paths_to_format)}")
> +
>          if not "SkipGitExclusions" in self._package_config or not self._package_config["SkipGitExclusions"]:
>              # Remove files ignored by git
>              logging.info(
> --
> 2.28.0.windows.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/4] UncrustifyCheck Ignore Support
  2022-03-22  1:58 [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael Kubacki
                   ` (3 preceding siblings ...)
  2022-03-22  1:58 ` [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify Michael Kubacki
@ 2022-03-22 16:14 ` Michael D Kinney
  2022-04-01 16:04   ` [edk2-devel] " Michael Kubacki
  4 siblings, 1 reply; 19+ messages in thread
From: Michael D Kinney @ 2022-03-22 16:14 UTC (permalink / raw)
  To: mikuback@linux.microsoft.com, devel@edk2.groups.io,
	Kinney, Michael D
  Cc: Gao, Liming, Sean Brogan, Bret Barkelew, Ard Biesheuvel,
	Yao, Jiewen, Justen, Jordan L, Gerd Hoffmann, Rebecca Cran,
	Peter Grehan, Laszlo Ersek

Hi Michael,

Should this be broken up into 2 series?  One for pytool change and one for OvmfPkg?

Mike

> -----Original Message-----
> From: mikuback@linux.microsoft.com <mikuback@linux.microsoft.com>
> Sent: Monday, March 21, 2022 6:58 PM
> To: devel@edk2.groups.io
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
> <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Yao, Jiewen
> <jiewen.yao@intel.com>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Rebecca Cran
> <rebecca@bsdio.com>; Peter Grehan <grehan@freebsd.org>; Laszlo Ersek <lersek@redhat.com>
> Subject: [PATCH v1 0/4] UncrustifyCheck Ignore Support
> 
> From: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880
> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875
> 
> This patch series:
> 1. Updates ignore handling in UncrustifyCheck including adding
> a new CI plugin configuration option to ignore files in a package.
> 2. Reverts Uncrustify changes as requested for files in OvmfPkg.
> 3. Uses the new ignore file option to ignore the files that had
> Uncrustify formatting reverted in OvmfPkg.
> 
> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Sean Brogan <sean.brogan@microsoft.com>
> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
> Cc: Jiewen Yao <jiewen.yao@intel.com>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Cc: Gerd Hoffmann <kraxel@redhat.com>
> Cc: Rebecca Cran <rebecca@bsdio.com>
> Cc: Peter Grehan <grehan@freebsd.org>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> 
> Michael Kubacki (4):
>   .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
>   .pytool/Plugin/UncrustifyCheck: Add ignore file support
>   OvmfPkg: Revert Uncrustify formatting in VbeShim.h files
>   OvmfPkg: Do not check VbeShim.h formatting with Uncrustify
> 
>  .pytool/Plugin/UncrustifyCheck/Readme.md          |    7 +
>  .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py |   30 +-
>  OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h               | 1811 ++++++++++----------
>  OvmfPkg/OvmfPkg.ci.yaml                           |    5 +
>  OvmfPkg/QemuVideoDxe/VbeShim.h                    | 1389 ++++++++-------
>  5 files changed, 1640 insertions(+), 1602 deletions(-)
> 
> --
> 2.28.0.windows.1


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 0/4] UncrustifyCheck Ignore Support
  2022-03-22 16:14 ` [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael D Kinney
@ 2022-04-01 16:04   ` Michael Kubacki
  0 siblings, 0 replies; 19+ messages in thread
From: Michael Kubacki @ 2022-04-01 16:04 UTC (permalink / raw)
  To: devel, michael.d.kinney
  Cc: Gao, Liming, Sean Brogan, Bret Barkelew, Ard Biesheuvel,
	Yao, Jiewen, Justen, Jordan L, Gerd Hoffmann, Rebecca Cran,
	Peter Grehan, Laszlo Ersek

I made it one series since the OvmfPkg patches are dependent on the 
.pytool changes.

Let me know if you see a substantial advantage to split it up.

Regards,
Michael

On 3/22/2022 12:14 PM, Michael D Kinney wrote:
> Hi Michael,
> 
> Should this be broken up into 2 series?  One for pytool change and one for OvmfPkg?
> 
> Mike
> 
>> -----Original Message-----
>> From: mikuback@linux.microsoft.com <mikuback@linux.microsoft.com>
>> Sent: Monday, March 21, 2022 6:58 PM
>> To: devel@edk2.groups.io
>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
>> <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>; Ard Biesheuvel <ardb+tianocore@kernel.org>; Yao, Jiewen
>> <jiewen.yao@intel.com>; Justen, Jordan L <jordan.l.justen@intel.com>; Gerd Hoffmann <kraxel@redhat.com>; Rebecca Cran
>> <rebecca@bsdio.com>; Peter Grehan <grehan@freebsd.org>; Laszlo Ersek <lersek@redhat.com>
>> Subject: [PATCH v1 0/4] UncrustifyCheck Ignore Support
>>
>> From: Michael Kubacki <michael.kubacki@microsoft.com>
>>
>> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880
>> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3875
>>
>> This patch series:
>> 1. Updates ignore handling in UncrustifyCheck including adding
>> a new CI plugin configuration option to ignore files in a package.
>> 2. Reverts Uncrustify changes as requested for files in OvmfPkg.
>> 3. Uses the new ignore file option to ignore the files that had
>> Uncrustify formatting reverted in OvmfPkg.
>>
>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>> Cc: Liming Gao <gaoliming@byosoft.com.cn>
>> Cc: Sean Brogan <sean.brogan@microsoft.com>
>> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
>> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org>
>> Cc: Jiewen Yao <jiewen.yao@intel.com>
>> Cc: Jordan Justen <jordan.l.justen@intel.com>
>> Cc: Gerd Hoffmann <kraxel@redhat.com>
>> Cc: Rebecca Cran <rebecca@bsdio.com>
>> Cc: Peter Grehan <grehan@freebsd.org>
>> Cc: Laszlo Ersek <lersek@redhat.com>
>> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
>>
>> Michael Kubacki (4):
>>    .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
>>    .pytool/Plugin/UncrustifyCheck: Add ignore file support
>>    OvmfPkg: Revert Uncrustify formatting in VbeShim.h files
>>    OvmfPkg: Do not check VbeShim.h formatting with Uncrustify
>>
>>   .pytool/Plugin/UncrustifyCheck/Readme.md          |    7 +
>>   .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py |   30 +-
>>   OvmfPkg/Bhyve/BhyveRfbDxe/VbeShim.h               | 1811 ++++++++++----------
>>   OvmfPkg/OvmfPkg.ci.yaml                           |    5 +
>>   OvmfPkg/QemuVideoDxe/VbeShim.h                    | 1389 ++++++++-------
>>   5 files changed, 1640 insertions(+), 1602 deletions(-)
>>
>> --
>> 2.28.0.windows.1
> 
> 
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
  2022-03-22 16:14   ` Michael D Kinney
@ 2022-04-01 16:07     ` Michael Kubacki
  2022-04-01 16:50       ` Michael D Kinney
  2022-04-01 17:45     ` Sean
  1 sibling, 1 reply; 19+ messages in thread
From: Michael Kubacki @ 2022-04-01 16:07 UTC (permalink / raw)
  To: devel, michael.d.kinney; +Cc: Gao, Liming, Sean Brogan, Bret Barkelew

That is borrowed from a pattern used in other plugins. Example:
https://github.com/tianocore/edk2/blob/master/.pytool/Plugin/SpellCheck/SpellCheck.py#L160-#L161

I don't mind updating the plugins to do something different if that is 
desired, but perhaps that should be a separate change.

Regards,
Michael

On 3/22/2022 12:14 PM, Michael D Kinney wrote:
> Michael,
> 
> One comment below.
> 
> Mike
> 
>> -----Original Message-----
>> From: mikuback@linux.microsoft.com <mikuback@linux.microsoft.com>
>> Sent: Monday, March 21, 2022 6:58 PM
>> To: devel@edk2.groups.io
>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
>> <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
>> Subject: [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
>>
>> From: Michael Kubacki <michael.kubacki@microsoft.com>
>>
>> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880
>>
>> Currently UncrustifyCheck.py provides the following exclusion
>> options:
>>
>> 1. Override the type of files UncrustifyCheck operates against by
>> default (.c and .h files). Using the "IgnoreStandardPaths"
>> configuration option.
>>
>> 2. By default, UncrustifyCheck skips files in git submodules and
>> ignored by git (the "SkipGitExclusions" configuration option can
>> override this behavior).
>>
>> The goal of UncrustifyCheck is to provide consistent formatting
>> across the codebase. In some rare circumstances, maintainers might
>> need to exclude a specific file (or file pattern) within their
>> package. For example, a small set of auto-generated files from
>> another repository.
>>
>> This change adds a new configuration option that can be specified
>> in a package CI YAML file to describe a list of files within the
>> package that should be ignored by UncrustifyCheck.
>>
>> The configuration option is called "IgnoreFiles" and it uses similar
>> syntax to git ignore to ignore a list of files.
>>
>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>> Cc: Liming Gao <gaoliming@byosoft.com.cn>
>> Cc: Sean Brogan <sean.brogan@microsoft.com>
>> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
>> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
>> ---
>>   .pytool/Plugin/UncrustifyCheck/Readme.md          |  7 ++++++
>>   .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 24 ++++++++++++++++++++
>>   2 files changed, 31 insertions(+)
>>
>> diff --git a/.pytool/Plugin/UncrustifyCheck/Readme.md b/.pytool/Plugin/UncrustifyCheck/Readme.md
>> index 0c46fd241a7a..efe7a573e4fa 100644
>> --- a/.pytool/Plugin/UncrustifyCheck/Readme.md
>> +++ b/.pytool/Plugin/UncrustifyCheck/Readme.md
>> @@ -41,6 +41,7 @@ The plugin can be configured with a few optional configuration options.
>>         "AdditionalIncludePaths": [], # Additional paths to check formatting (wildcards supported).
>>         "AuditOnly": False,           # Don't fail the build if there are errors.  Just log them.
>>         "ConfigFilePath": "",         # Custom path to an Uncrustify config file.
>> +      "IgnoreFiles": [],            # A list of file patterns to ignore.
>>         "IgnoreStandardPaths": [],    # Standard Plugin defined paths that should be ignored.
>>         "OutputFileDiffs": True,      # Output chunks of formatting diffs in the test case log.
>>                                       # This can significantly slow down the plugin on very large packages.
>> @@ -67,6 +68,12 @@ the test as skipped. This allows visibility into the failures without breaking t
>>
>>   When specified in the config file, this is a package relative path to the Uncrustify configuration file.
>>
>> +### `IgnoreFiles`
>> +
>> +This option supports .gitignore file and folder matching strings including wildcards.
>> +
>> +The files specified by this configuration option will not be processed by Uncrustify.
>> +
>>   ### `IgnoreStandardPaths`
>>
>>   This plugin by default will check the below standard paths. A package configuration file can specify any of these paths
>> diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
>> index dc133fecc4b2..e8370381032f 100644
>> --- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
>> +++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
>> @@ -13,11 +13,13 @@ import os
>>   import pathlib
>>   import shutil
>>   import timeit
>> +from collections.abc import Callable
>>   from edk2toolext.environment import version_aggregator
>>   from edk2toolext.environment.plugin_manager import PluginManager
>>   from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPlugin
>>   from edk2toolext.environment.plugintypes.uefi_helper_plugin import HelperFunctions
>>   from edk2toolext.environment.var_dict import VarDict
>> +from edk2toollib.gitignore_parser import parse_gitignore_lines
>>   from edk2toollib.log.junit_report_format import JunitReportTestCase
>>   from edk2toollib.uefi.edk2.path_utilities import Edk2Path
>>   from edk2toollib.utility_functions import  RunCmd
>> @@ -273,6 +275,15 @@ class UncrustifyCheck(ICiBuildPlugin):
>>               f"-c {self._app_config_file} -F {self._app_input_file_path} --if-changed --suffix
>> {UncrustifyCheck.FORMATTED_FILE_EXTENSION}", outstream=output)
>>           self._app_output = output.getvalue().strip().splitlines()
>>
>> +    def _get_files_ignored_in_config(self) -> Callable[[str], bool]:
>> +        """"
>> +        Returns a function that returns true if a given file string path is ignored in the plugin configuration file and false
>> otherwise.
>> +        """
>> +        ignored_files = []
>> +        if "IgnoreFiles" in self._package_config:
>> +            ignored_files = self._package_config["IgnoreFiles"]
>> +        return parse_gitignore_lines(ignored_files, os.path.join(self._abs_workspace_path, "nofile.txt"),
>> self._abs_workspace_path)
> 
> What is the purpose of "nofile.txt" here?  If this a param that is optional/ignored?  If so, there
> are better python methods to do that.
> 
>> +
>>       def _get_git_ignored_paths(self) -> List[str]:
>>           """"
>>           Returns a list of file absolute path strings to all files ignored in this git repository.
>> @@ -464,6 +475,19 @@ class UncrustifyCheck(ICiBuildPlugin):
>>               self._abs_file_paths_to_format.extend(
>>                   [str(path.resolve()) for path in pathlib.Path(self._abs_package_path).rglob(path)])
>>
>> +        # Remove files ignore in the plugin configuration file
>> +        plugin_ignored_files = list(filter(self._get_files_ignored_in_config(), self._abs_file_paths_to_format))
>> +
>> +        if plugin_ignored_files:
>> +            logging.info(
>> +                f"{self._package_name} file count before plugin ignore file exclusion: {len(self._abs_file_paths_to_format)}")
>> +            for path in plugin_ignored_files:
>> +                if path in self._abs_file_paths_to_format:
>> +                    logging.info(f"  File ignored in plugin config file: {path}")
>> +                    self._abs_file_paths_to_format.remove(path)
>> +            logging.info(
>> +                f"{self._package_name} file count after plugin ignore file exclusion: {len(self._abs_file_paths_to_format)}")
>> +
>>           if not "SkipGitExclusions" in self._package_config or not self._package_config["SkipGitExclusions"]:
>>               # Remove files ignored by git
>>               logging.info(
>> --
>> 2.28.0.windows.1
> 
> 
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
  2022-03-22 16:12     ` Michael D Kinney
@ 2022-04-01 16:22       ` Michael Kubacki
  0 siblings, 0 replies; 19+ messages in thread
From: Michael Kubacki @ 2022-04-01 16:22 UTC (permalink / raw)
  To: devel, michael.d.kinney; +Cc: Gao, Liming, Sean Brogan, Bret Barkelew

Hi Mike,

Sorry I missed this message earlier.I made the change as I understood it 
in v2.

https://edk2.groups.io/g/devel/message/88342

Thanks,
Michael

On 3/22/2022 12:12 PM, Michael D Kinney wrote:
> Hi Michael,
> 
> I meant to ask.  Is there a reason you are not normalizing the
> file paths os.path.normpath() before performing the path comparison?
> 
> I am concerned that a mix of '/', '\' and '..' in YAML file may
> not detect what is supposed to be a matching path.
> 
> Perhaps this is a topic that applies to IgnoreFiles feature for
> all plugins and can be addressed in a separate patch.
> 
> Mike
> 
>> -----Original Message-----
>> From: Kinney, Michael D <michael.d.kinney@intel.com>
>> Sent: Tuesday, March 22, 2022 9:07 AM
>> To: devel@edk2.groups.io; mikuback@linux.microsoft.com; Kinney, Michael D <michael.d.kinney@intel.com>
>> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
>> Subject: RE: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
>>
>> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
>>
>> Mike
>>
>>> -----Original Message-----
>>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael Kubacki
>>> Sent: Monday, March 21, 2022 6:58 PM
>>> To: devel@edk2.groups.io
>>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
>>> <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
>>> Subject: [edk2-devel] [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths
>>>
>>> From: Michael Kubacki <michael.kubacki@microsoft.com>
>>>
>>> Currently, UncrustifyCheck._get_git_ignored_paths() is documented to
>>> return a list of absolute file paths but it currently returns a list
>>> of relative file paths.
>>>
>>> This change updates the function to return a list of absolute file
>>> paths. The result is later compared to the list of absolute file
>>> paths for files to run against Uncrustify.
>>>
>>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
>>> Cc: Liming Gao <gaoliming@byosoft.com.cn>
>>> Cc: Sean Brogan <sean.brogan@microsoft.com>
>>> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
>>> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
>>> ---
>>>   .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 6 +++++-
>>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
>>> index 82db7a5a438b..dc133fecc4b2 100644
>>> --- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
>>> +++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
>>> @@ -292,7 +292,11 @@ class UncrustifyCheck(ICiBuildPlugin):
>>>                   f"An error occurred reading git ignore settings. This will prevent Uncrustify from running against the
>> expected
>>> set of files.")
>>>
>>>           # Note: This will potentially be a large list, but at least sorted
>>> -        return outstream_buffer.getvalue().strip().splitlines()
>>> +        rel_paths = outstream_buffer.getvalue().strip().splitlines()
>>> +        abs_paths = []
>>> +        for path in rel_paths:
>>> +            abs_paths.append(os.path.join(self._abs_workspace_path, path))
>>> +        return abs_paths
>>>
>>>       def _get_git_submodule_paths(self) -> List[str]:
>>>           """
>>> --
>>> 2.28.0.windows.1
>>>
>>>
>>>
>>> -=-=-=-=-=-=
>>> Groups.io Links: You receive all messages sent to this group.
>>> View/Reply Online (#87810): https://edk2.groups.io/g/devel/message/87810
>>> Mute This Topic: https://groups.io/mt/89944182/1643496
>>> Group Owner: devel+owner@edk2.groups.io
>>> Unsubscribe: https://edk2.groups.io/g/devel/unsub [michael.d.kinney@intel.com]
>>> -=-=-=-=-=-=
>>>
> 
> 
> 
> 
> 
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
  2022-04-01 16:07     ` [edk2-devel] " Michael Kubacki
@ 2022-04-01 16:50       ` Michael D Kinney
  0 siblings, 0 replies; 19+ messages in thread
From: Michael D Kinney @ 2022-04-01 16:50 UTC (permalink / raw)
  To: devel@edk2.groups.io, mikuback@linux.microsoft.com,
	Kinney, Michael D
  Cc: Gao, Liming, Sean Brogan, Bret Barkelew

Can you explain how this filename is used?  Perhaps add a comment in this series.

If this pattern is used in several places, then I agree that can be cleaned up in a different patch series.

Mike 


> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Michael Kubacki
> Sent: Friday, April 1, 2022 9:07 AM
> To: devel@edk2.groups.io; Kinney, Michael D <michael.d.kinney@intel.com>
> Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan <sean.brogan@microsoft.com>; Bret Barkelew
> <Bret.Barkelew@microsoft.com>
> Subject: Re: [edk2-devel] [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
> 
> That is borrowed from a pattern used in other plugins. Example:
> https://github.com/tianocore/edk2/blob/master/.pytool/Plugin/SpellCheck/SpellCheck.py#L160-#L161
> 
> I don't mind updating the plugins to do something different if that is
> desired, but perhaps that should be a separate change.
> 
> Regards,
> Michael
> 
> On 3/22/2022 12:14 PM, Michael D Kinney wrote:
> > Michael,
> >
> > One comment below.
> >
> > Mike
> >
> >> -----Original Message-----
> >> From: mikuback@linux.microsoft.com <mikuback@linux.microsoft.com>
> >> Sent: Monday, March 21, 2022 6:58 PM
> >> To: devel@edk2.groups.io
> >> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Sean Brogan
> >> <sean.brogan@microsoft.com>; Bret Barkelew <Bret.Barkelew@microsoft.com>
> >> Subject: [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
> >>
> >> From: Michael Kubacki <michael.kubacki@microsoft.com>
> >>
> >> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3880
> >>
> >> Currently UncrustifyCheck.py provides the following exclusion
> >> options:
> >>
> >> 1. Override the type of files UncrustifyCheck operates against by
> >> default (.c and .h files). Using the "IgnoreStandardPaths"
> >> configuration option.
> >>
> >> 2. By default, UncrustifyCheck skips files in git submodules and
> >> ignored by git (the "SkipGitExclusions" configuration option can
> >> override this behavior).
> >>
> >> The goal of UncrustifyCheck is to provide consistent formatting
> >> across the codebase. In some rare circumstances, maintainers might
> >> need to exclude a specific file (or file pattern) within their
> >> package. For example, a small set of auto-generated files from
> >> another repository.
> >>
> >> This change adds a new configuration option that can be specified
> >> in a package CI YAML file to describe a list of files within the
> >> package that should be ignored by UncrustifyCheck.
> >>
> >> The configuration option is called "IgnoreFiles" and it uses similar
> >> syntax to git ignore to ignore a list of files.
> >>
> >> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> >> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> >> Cc: Sean Brogan <sean.brogan@microsoft.com>
> >> Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
> >> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
> >> ---
> >>   .pytool/Plugin/UncrustifyCheck/Readme.md          |  7 ++++++
> >>   .pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py | 24 ++++++++++++++++++++
> >>   2 files changed, 31 insertions(+)
> >>
> >> diff --git a/.pytool/Plugin/UncrustifyCheck/Readme.md b/.pytool/Plugin/UncrustifyCheck/Readme.md
> >> index 0c46fd241a7a..efe7a573e4fa 100644
> >> --- a/.pytool/Plugin/UncrustifyCheck/Readme.md
> >> +++ b/.pytool/Plugin/UncrustifyCheck/Readme.md
> >> @@ -41,6 +41,7 @@ The plugin can be configured with a few optional configuration options.
> >>         "AdditionalIncludePaths": [], # Additional paths to check formatting (wildcards supported).
> >>         "AuditOnly": False,           # Don't fail the build if there are errors.  Just log them.
> >>         "ConfigFilePath": "",         # Custom path to an Uncrustify config file.
> >> +      "IgnoreFiles": [],            # A list of file patterns to ignore.
> >>         "IgnoreStandardPaths": [],    # Standard Plugin defined paths that should be ignored.
> >>         "OutputFileDiffs": True,      # Output chunks of formatting diffs in the test case log.
> >>                                       # This can significantly slow down the plugin on very large packages.
> >> @@ -67,6 +68,12 @@ the test as skipped. This allows visibility into the failures without breaking t
> >>
> >>   When specified in the config file, this is a package relative path to the Uncrustify configuration file.
> >>
> >> +### `IgnoreFiles`
> >> +
> >> +This option supports .gitignore file and folder matching strings including wildcards.
> >> +
> >> +The files specified by this configuration option will not be processed by Uncrustify.
> >> +
> >>   ### `IgnoreStandardPaths`
> >>
> >>   This plugin by default will check the below standard paths. A package configuration file can specify any of these paths
> >> diff --git a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> >> index dc133fecc4b2..e8370381032f 100644
> >> --- a/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> >> +++ b/.pytool/Plugin/UncrustifyCheck/UncrustifyCheck.py
> >> @@ -13,11 +13,13 @@ import os
> >>   import pathlib
> >>   import shutil
> >>   import timeit
> >> +from collections.abc import Callable
> >>   from edk2toolext.environment import version_aggregator
> >>   from edk2toolext.environment.plugin_manager import PluginManager
> >>   from edk2toolext.environment.plugintypes.ci_build_plugin import ICiBuildPlugin
> >>   from edk2toolext.environment.plugintypes.uefi_helper_plugin import HelperFunctions
> >>   from edk2toolext.environment.var_dict import VarDict
> >> +from edk2toollib.gitignore_parser import parse_gitignore_lines
> >>   from edk2toollib.log.junit_report_format import JunitReportTestCase
> >>   from edk2toollib.uefi.edk2.path_utilities import Edk2Path
> >>   from edk2toollib.utility_functions import  RunCmd
> >> @@ -273,6 +275,15 @@ class UncrustifyCheck(ICiBuildPlugin):
> >>               f"-c {self._app_config_file} -F {self._app_input_file_path} --if-changed --suffix
> >> {UncrustifyCheck.FORMATTED_FILE_EXTENSION}", outstream=output)
> >>           self._app_output = output.getvalue().strip().splitlines()
> >>
> >> +    def _get_files_ignored_in_config(self) -> Callable[[str], bool]:
> >> +        """"
> >> +        Returns a function that returns true if a given file string path is ignored in the plugin configuration file and
> false
> >> otherwise.
> >> +        """
> >> +        ignored_files = []
> >> +        if "IgnoreFiles" in self._package_config:
> >> +            ignored_files = self._package_config["IgnoreFiles"]
> >> +        return parse_gitignore_lines(ignored_files, os.path.join(self._abs_workspace_path, "nofile.txt"),
> >> self._abs_workspace_path)
> >
> > What is the purpose of "nofile.txt" here?  If this a param that is optional/ignored?  If so, there
> > are better python methods to do that.
> >
> >> +
> >>       def _get_git_ignored_paths(self) -> List[str]:
> >>           """"
> >>           Returns a list of file absolute path strings to all files ignored in this git repository.
> >> @@ -464,6 +475,19 @@ class UncrustifyCheck(ICiBuildPlugin):
> >>               self._abs_file_paths_to_format.extend(
> >>                   [str(path.resolve()) for path in pathlib.Path(self._abs_package_path).rglob(path)])
> >>
> >> +        # Remove files ignore in the plugin configuration file
> >> +        plugin_ignored_files = list(filter(self._get_files_ignored_in_config(), self._abs_file_paths_to_format))
> >> +
> >> +        if plugin_ignored_files:
> >> +            logging.info(
> >> +                f"{self._package_name} file count before plugin ignore file exclusion:
> {len(self._abs_file_paths_to_format)}")
> >> +            for path in plugin_ignored_files:
> >> +                if path in self._abs_file_paths_to_format:
> >> +                    logging.info(f"  File ignored in plugin config file: {path}")
> >> +                    self._abs_file_paths_to_format.remove(path)
> >> +            logging.info(
> >> +                f"{self._package_name} file count after plugin ignore file exclusion:
> {len(self._abs_file_paths_to_format)}")
> >> +
> >>           if not "SkipGitExclusions" in self._package_config or not self._package_config["SkipGitExclusions"]:
> >>               # Remove files ignored by git
> >>               logging.info(
> >> --
> >> 2.28.0.windows.1
> >
> >
> >
> >
> >
> >
> 
> 
> 
> 


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
  2022-03-22 16:14   ` Michael D Kinney
  2022-04-01 16:07     ` [edk2-devel] " Michael Kubacki
@ 2022-04-01 17:45     ` Sean
  2022-04-03 17:32       ` Michael D Kinney
  1 sibling, 1 reply; 19+ messages in thread
From: Sean @ 2022-04-01 17:45 UTC (permalink / raw)
  To: Michael D Kinney, devel

[-- Attachment #1: Type: text/plain, Size: 436 bytes --]

In regard to the "nofile.txt"
That parameter is used for reporting which file specified the ignore list.  This was a feature of the gitignore parser that was integrated but that "report" is never used.  Thus, in the additional api I added where I enabled the ignore content in a parameter rather than file, I "shimmed" it using nofile.txt as an indicator that this came from parameter.

Hope that helps explain why.
Thanks
Sean

[-- Attachment #2: Type: text/html, Size: 494 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [edk2-devel] [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support
  2022-04-01 17:45     ` Sean
@ 2022-04-03 17:32       ` Michael D Kinney
  0 siblings, 0 replies; 19+ messages in thread
From: Michael D Kinney @ 2022-04-03 17:32 UTC (permalink / raw)
  To: devel@edk2.groups.io, spbrogan@outlook.com, Kinney, Michael D

[-- Attachment #1: Type: text/plain, Size: 844 bytes --]

Hi Sean,

Perhaps in the future this can be converted to an option python parameter with a default value of None?

Mike

From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Sean
Sent: Friday, April 1, 2022 10:45 AM
To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io
Subject: Re: [edk2-devel] [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support

In regard to the "nofile.txt"
That parameter is used for reporting which file specified the ignore list.  This was a feature of the gitignore parser that was integrated but that "report" is never used.  Thus, in the additional api I added where I enabled the ignore content in a parameter rather than file, I "shimmed" it using nofile.txt as an indicator that this came from parameter.

Hope that helps explain why.
Thanks
Sean


[-- Attachment #2: Type: text/html, Size: 40009 bytes --]

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2022-04-03 17:32 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-22  1:58 [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael Kubacki
2022-03-22  1:58 ` [PATCH v1 1/4] .pytool/Plugin/UncrustifyCheck: Update func to return absolute paths Michael Kubacki
2022-03-22 16:07   ` [edk2-devel] " Michael D Kinney
2022-03-22 16:12     ` Michael D Kinney
2022-04-01 16:22       ` Michael Kubacki
2022-03-22  1:58 ` [PATCH v1 2/4] .pytool/Plugin/UncrustifyCheck: Add ignore file support Michael Kubacki
2022-03-22 16:14   ` Michael D Kinney
2022-04-01 16:07     ` [edk2-devel] " Michael Kubacki
2022-04-01 16:50       ` Michael D Kinney
2022-04-01 17:45     ` Sean
2022-04-03 17:32       ` Michael D Kinney
2022-03-22  1:58 ` [PATCH v1 3/4] OvmfPkg: Revert Uncrustify formatting in VbeShim.h files Michael Kubacki
2022-03-22  6:34   ` Laszlo Ersek
2022-03-22  8:45   ` [edk2-devel] " Gerd Hoffmann
2022-03-22  1:58 ` [PATCH v1 4/4] OvmfPkg: Do not check VbeShim.h formatting with Uncrustify Michael Kubacki
2022-03-22  6:35   ` Laszlo Ersek
2022-03-22  8:46   ` [edk2-devel] " Gerd Hoffmann
2022-03-22 16:14 ` [PATCH v1 0/4] UncrustifyCheck Ignore Support Michael D Kinney
2022-04-01 16:04   ` [edk2-devel] " Michael Kubacki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox